gpt4 book ai didi

c# - 如何将日期插入 Open XML 工作表?

转载 作者:IT王子 更新时间:2023-10-29 04:52:05 26 4
gpt4 key购买 nike

我正在使用 Microsoft Open XML SDK 2,但我很难将日期插入单元格。我可以通过设置 Cell.DataType = CellValues.Number 毫无问题地插入数字,但是当我对日期执行相同操作时 (Cell.DataType = CellValues.Date) Excel 2010 年崩溃(2007 年也是如此)。

我尝试将 Cell.Text 值设置为多种日期格式以及 Excel 的日期/数字格式,但均无济于事。我还尝试使用样式,删除类型属性,以及我扔在墙上的许多其他比萨饼......

谁能给我指出一个在工作表中插入日期的示例?

最佳答案

我使用了 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  FORMAT CODE0   General1   02   0.003   #,##04   #,##0.009   0%10  0.00%11  0.00E+0012  # ?/?13  # ??/??14  d/m/yyyy15  d-mmm-yy16  d-mmm17  mmm-yy18  h:mm tt19  h:mm:ss tt20  H:mm21  H:mm:ss22  m/d/yyyy H:mm37  #,##0 ;(#,##0)38  #,##0 ;[Red](#,##0)39  #,##0.00;(#,##0.00)40  #,##0.00;[Red](#,##0.00)45  mm:ss46  [h]:mm:ss47  mmss.048  ##0.0E+049  @

列表来源:https://github.com/ClosedXML/ClosedXML/wiki/NumberFormatId-Lookup-Table

我知道这个列表来自 ClosedXML,但它在 OpenXML 中是相同的。

关于c# - 如何将日期插入 Open XML 工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com