我使用了 Andrew J 提供的代码,但是DataType
CellValues.Date
为我生成了一个损坏的 xlsx 文件。
对DataType
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 格式代码
0 一般
1 0
2 0.00
3#,##0
4#,##0.00
9 0%
10 0.00%
11 0.00E+00
12#?/?
13#??/??
14 日/月/年
15 天-嗯-年
16 毫米
17 年
18 小时:毫米 tt
19 h:mm:ss tt
20 高:毫米
21 高:毫米:秒
22 m/d/yyyy H:mm
37 #,##0 ;(#,##0)
38 #,##0 ;[红色](#,##0)
39 #,##0.00;(#,##0.00)
40 #,##0.00;[红色](#,##0.00)
45 毫米:不锈钢
46 [h]:mm:ss
47 毫米.0
48 ##0.0E+0
49 @
列表来源:https ://github.com/ClosedXML/ClosedXML/wiki/NumberFormatId-Lookup-Table
我知道这个列表来自 ClosedXML,但在 OpenXML 中是一样的。