使用CarlosAg.ExcelXmlWriter的日期问题

时间:2009-09-18 14:45:57

标签: c# excel

我正在使用CarlosAg.ExcelXmlWriter库在C#中生成Excel文件。如果我将所有数据视为字符串一切正常,但我需要一些单元格被Excel识别为日期字段。当我尝试相应地设置数据类型时,生成的Excel文件无法在Excel 2003(或Excel 2007)中打开。

在Excel 2003中,我在加载时收到以下错误:

  

以下方面出现了问题   在加载期间:表

我使用以下代码生成导致问题的DateTime单元格:

string val = DateTime.Now.ToString("MM/dd/yyyy");     
row.Cells.Add(new WorksheetCell(val, DataType.DateTime));

感谢。

2 个答案:

答案 0 :(得分:3)

我最终想出来了。感谢Lance Roberts在正确的方向上推动我。

首先,定义一个名为dateStyle的WorksheetStyle,并将其NumberFormat属性设置为有效的Excel日期格式:

Workbook book = new Workbook();
Worksheet sheet = book.Worksheets.Add("myWorksheet");

WorksheetStyle dateStyle = book.Styles.Add("dateStyle");
dateStyle.NumberFormat = "Dd Mmm Yy";

WorksheetRow row = book.Worksheets[0].Table.Rows.Add();

然后,使用.NET“s”日期格式导出日期并添加单元格:

string val = DateTime.Now.ToString("s");
row.Cells.Add(val, DataType.DateTime, "dateStyle");

答案 1 :(得分:1)

我没有使用他的图书馆,但在Excel中工作很多。我不知道他正在对一个单元格的数据类型做什么,因为它们不能以这种方式工作。 Excel单元格中的日期都是日期格式的整数。

我会尝试将日期作为整数,诀窍是将您的字符串转换为正确的整数。有关Excel的日期作为数字方法的信息,请参阅this link。然后我将设置WorksheetStyle.NumberFormat属性。