生成OpenXML Excel文件不应用日期格式

时间:2011-05-27 11:55:16

标签: openxml export-to-excel

  

可能重复:
  Open Xml and Date format in Excel cell

我正在尝试从DataGridView获取数据并生成包含内容的Excel文件。我的日期有问题。

问题在于,编写了工作表,保存并在Excel中打开它,我的日期单元格中有一个日期值,如果我执行“格式化单元格”,则具有我请求的格式,但Excel没有应用那种格式。例如,如果我使用“.ToOADate()”导出日期值,我会在单元格中得到类似“40690.5270454051”的内容。如果我单击进入单元格,然后再次单击,则会应用正确的格式。

我尝试省略“ToOADate”调用,同样的事情发生(我得到一个可识别的日期值,但只有在我点击进出单元格后才使用我的自定义格式进行格式化)

我已经尝试将OpenXml.Spreadsheet.Cell对象的DataType设置为CellValues.Date (或EnumValue(CellValues.Date))但是当我收到有关“不可读内容”的错误时我尝试打开xlsx文件。

谢谢, 罗斯

1 个答案:

答案 0 :(得分:1)

您需要做的是设置一个浮点数值(自1900年1月1日或1904年以来的天数 - 文件中有一个设置来决定哪个值)。 hh:mm:ss是数字的一小部分。

然后将单元格格式设置为所需的日期时间格式。然后,Excel将显示数字作为格式化日期。这就是Excel存储所有日期的方式。

我认为您的情况是将值设置为字符串。当您单击单元格时,Excel会解析该字符串,发现它可以转换为日期,然后将其保存为浮点值。

单击后保存文件,然后查看单元格内容以查看差异。