【问题标题】:OWC11 Date Formatting IgnoredOWC11 日期格式被忽略
【发布时间】:2010-03-08 12:43:27
【问题描述】:

我正在使用 owc11 创建一个 Excel 文档。我以 dd/mm/yyyy 格式提供日期。我在代码中做这样的事情:

for (..looping through results..)
{
    Range c = EmailStats.putCellValue(sheet, row, 1, val);
    c.set_NumberFormat("dd/mm/yyyy");
}

private static Range putCellValue(Worksheet sheet, int row, int col, String val) 
{
    Range cell = (Range) sheet.Cells[row, col];
    cell.set_Value(XlRangeValueType.xlRangeValueDefault, val);
    return cell;
}

现在,对于 val 参数,我将日期格式设置为“dd/mm/yyyy”或根本不设置,我得到的行为是从一个月的 1 号到 12 号的 mm/dd/yyyy然后它切换回 dd/mm/yyyy。所以 owc11 认为它知道得更好,并交换日期和月份(如美国格式),当它超过第 12 天时,它会坚持使用英国格式。

Val 被声明为字符串,因为它可能并不总是一个日期。它可能是日期、日期、用户名、组名等,具体取决于我们如何对数据进行分组/排序。也可能是几天的选择。

经过一段时间的试验,我发现解决这个问题的唯一方法是使用 yyyy/mm/dd 的通用日期格式。但是,这可能会产生其他集成问题。所以我希望有办法强制执行 dd/mm/yyyy 格式,欢迎提出任何建议。

【问题讨论】:

    标签: c# excel date format


    【解决方案1】:

    尝试将 val 设置为非字符串。尝试将 val 指定为 DateTime。

    cell.set_Value(XlRangeValueType.xlRangeValueDefault, val);
    

    【讨论】:

    • 确实有效。如果我将值作为 DateTime 传递,然后使用“dd/mm/yyyy”格式格式化单元格,它可以正常工作。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多