我使用了Andrew J提供的代碼,但DataType CellValues.Date爲我生成了一個損壞的xlsx文件。
數據類型CellValues.Number工作得很好,我(不要忘記設置NumberFormatId):
cell.DataType = new EnumValue<CellValues>(CellValues.Number);
我的整個代碼:
DateTime valueDate = DateTime.Now;
string valueString = valueDate.ToOADate().ToString();
CellValue cellValue = new CellValue(valueString);
Cell cell = new Cell();
cell.DataType = new EnumValue<CellValues>(CellValues.Number);
cell.StyleIndex = yourStyle; //StyleIndex of CellFormat cfBaseDate -> See below
cell.Append(cellValue);
我CellFormat樣式表中的此單元格的外觀如下:
CellFormat cfBaseDate = new CellFormat() {
ApplyNumberFormat = true,
NumberFormatId = 14, //14 is a localized short Date (d/m/yyyy) -> See list below
//Some further styling parameters
};
如果您想格式化你的日期另一種方式,這裏是所有默認的Excel NumberFormatId的
ID FORMAT CODE
0 General
1 0
2 0.00
3 #,##0
4 #,##0.00
9 0%
10 0.00%
11 0.00E+00
12 # ?/?
13 # ??/??
14 d/m/yyyy
15 d-mmm-yy
16 d-mmm
17 mmm-yy
18 h:mm tt
19 h:mm:ss tt
20 H:mm
21 H:mm:ss
22 m/d/yyyy H:mm
37 #,##0 ;(#,##0)
38 #,##0 ;[Red](#,##0)
39 #,##0.00;(#,##0.00)
40 #,##0.00;[Red](#,##0.00)
45 mm:ss
46 [h]:mm:ss
47 mmss.0
48 ##0.0E+0
49 @
名單的來源列表:http://closedxml.codeplex.com/wikipage?title=NumberFormatId%20Lookup%20Table
我知道這個名單來自ClosedXML,但在OpenXML中是一樣的。
注意1904年國旗 - 日期可以設置爲1-1-1900或1-1-1904(因爲它計算閏年的錯誤)。 – 2011-10-07 12:03:24
這個解決方案對我來說很合適,謝謝 – Selwyn 2011-10-19 05:55:31
奇怪的是,沒有爲我工作。即使在Excel 2010.(CellValues.Date不應該在2007年支持) – GaussZ 2011-12-22 15:06:55