我使用此代碼使用EPPlus電子表格填充單元格:爲什麼我會用這段代碼(EPPlus)隱式地將類型'void'轉換爲'object'?
using (var footerMonth1Cell = prodUsageWorksheet.Cells[columnFooterRow, MONTH1_COL])
{
footerMonth1Cell.Value = monthsTruncatedYears[0];
footerMonth1Cell.Style.Font.Size = DATA_FONT_SIZE;
footerMonth1Cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
這是工作的罰款,我想,但用戶抱怨說,它正在生產的細胞「綠三角」。 「monthsTruncatedYears」是字符串的通用列表。
所以我加入這個輔助函數:
public static void SetValueIntOrStr(this ExcelRangeBase range, object value)
{
string strVal = value.ToString();
if (!String.IsNullOrEmpty(strVal))
{
double dVal;
int iVal;
if (double.TryParse(strVal, out dVal))
range.Value = dVal;
else if (Int32.TryParse(strVal, out iVal))
range.Value = iVal;
else
range.Value = strVal;
}
else
range.Value = null;
}
...這是我從here了,然後試圖重構原始代碼來調用輔助函數,像這樣:
using (var footerMonth1Cell = prodUsageWorksheet.Cells[columnFooterRow, MONTH1_COL])
{
footerMonth1Cell.Value = SetValueIntOrStr(footerMonth1Cell, monthsTruncatedYears[0]);
footerMonth1Cell.Style.Font.Size = DATA_FONT_SIZE;
footerMonth1Cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
然而,它不會編譯,告訴我,「不能隱式地將類型'void'轉換爲'object'」
由於th第二個參數傳遞給SetValueIntOrStr(),即「value」,是object類型的,我認爲這是問題。那麼爲什麼編譯器顯然將monthsTruncatedYears [0]視爲void?在遺留代碼中,我將它賦值爲單元格的值,並且當時它並不是真的,所以......?!?
我試圖鑄造第二對Arg的對象,像這樣:
footerMonth1Cell.Value = ReportRunnerConstsAndUtils.SetValueIntOrStr(footerMonth1Cell, object(monthsTruncatedYears[0]));
...但不會計算,或者說,與 「無效的表達術語 '對象'」
...這種類似的嘗試:
footerMonth1Cell.Value = ReportRunnerConstsAndUtils.SetValueDoubleOrIntOrStr(footerMonth1Cell, monthsTruncatedYears[0] as object);
...引起, 「無法隱式轉換類型 '無效' 到 '對象'」
請注意,輔助方法實際上在借用代碼中被錯誤命名;而不是「SetValueIntOrStr」應該是「SetValueDoubleOrIntOrStr」
肯定/我應該意識到這點。 –