Iam使用Office Interop將DataTable導出到Excel文件。問題是,Excel不能識別日期,而是顯示數字。在另一種情況下,我傳遞一個字符串,然後將其識別爲日期。在這兩種情況下,數據都是混亂的。將數據寫入Excel時如何製作正確的日期格式
我想這應該存儲在文本格式的單元格的NumberFormat @,但它也不能工作。
Application app = new Application();
app.Visible = false;
app.ScreenUpdating = false;
app.DisplayAlerts = false;
app.EnableAnimations = false;
app.EnableAutoComplete = false;
app.EnableSound = false;
app.EnableTipWizard = false;
app.ErrorCheckingOptions.BackgroundChecking = false;
Workbook wb = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet ws = (Worksheet)wb.Worksheets[1];
for (int j = 0; j < dt.Rows.Count; j++)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
Range rng = ws.Cells[j+2, i+1]as Range;
rng.Value2 = dt.Rows[j][i].ToString();
rng.NumberFormat = "@";
}
}
wb.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
wb.Close(false, Missing.Value, Missing.Value);
app.Workbooks.Close();
app.Application.Quit();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
ws = null;
wb = null;
app = null;
GC.Collect();
爲什麼我的NumberFormat @工作不正常? Textformat不應該顯示與我放置的內容相同的內容嗎?
格式化每個單元格應該沒有區別。我如何正確地格式化所有文本? – codymanix 2010-07-22 16:17:50
如果您希望Excel將列視爲日期列,那麼它應該確實具有日期格式,否則會發生奇怪的事情,您已經體驗過。但是,您可以參考我的最新編輯以獲取其他可能的解決方法。 – dcp 2010-07-22 16:33:17