【问题标题】:Generating OpenXML Excel file doesn't apply date formatting [duplicate]生成 OpenXML Excel 文件不应用日期格式 [重复]
【发布时间】:2012-07-26 20:52:06
【问题描述】:

可能重复:
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 文件。

谢谢, 罗斯

【问题讨论】:

    标签: openxml export-to-excel


    【解决方案1】:

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

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

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

    点击后保存文件,然后查看单元格内容,看看有什么不同。

    【讨论】:

    • 嗨大卫,感谢您的建议。我确实将单元格值保存为字符串(因为我无法让 CellValues.Date 工作)。使用 ToOADate() 函数并将单元格值设置为一个数字就可以了。我想知道 CellValues.Date 应该如何工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多