我正在使用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格式,所以欢迎任何建议。
答案 0 :(得分:1)
尝试将 val 设置为非字符串。尝试将 val 指定为DateTime。
cell.set_Value(XlRangeValueType.xlRangeValueDefault, val);