2010-03-08 85 views
3

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

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”或没有设置在所有的,我得到的行为是毫米/ dd/yyyy从一个月的第一个月到第十二个月,然后交换回dd/mm/yyyy。因此,owc11认为它知道更好,并交换周围的日子和月份(如美国格式),并且当它超过第12日时,它会坚持英国格式。

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

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

回答

1

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

cell.set_Value(XlRangeValueType.xlRangeValueDefault, val); 
+0

确实有效。如果我将值作为日期时间传递,然后使用“dd/mm/yyyy”格式格式化单元格,它可以正常工作。非常感谢。 – Vasilis 2010-03-08 17:27:59