OWC11日期格式忽略

时间:2010-03-08 12:43:27

标签: c# excel date format

我正在使用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”或者根本不设置它,我得到的行为是mm / dd / yyyy,从1月1日开始直到12日然后它换回到dd / mm / yyyy。所以owc11认为它知道更好并交换日期和月份(如美国格式),并且当它超过第12个日期时它坚持英国格式。

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

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

1 个答案:

答案 0 :(得分:1)

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

cell.set_Value(XlRangeValueType.xlRangeValueDefault, val);