与使用CarlosAg.ExcelXmlWriterdate的问题
我正在使用CarlosAg.ExcelXmlWriter库来生成C#中的Excel文件。 如果我把所有的数据都视为string,一切正常,但我需要一些单元格作为date字段被Excel识别。 当我尝试相应地设置数据types时,生成的Excel文件无法在Excel 2003(或Excel 2007中)中打开。
在Excel 2003中,加载时出现以下错误:
负载过程中出现以下问题:表
我正在使用下面的代码来生成导致问题的DateTime单元格:
string val = DateTime.Now.ToString("MM/dd/yyyy"); row.Cells.Add(new WorksheetCell(val, DataType.DateTime));
谢谢。
我终于明白了这一点。 感谢兰斯·罗伯茨(Lance Roberts)推动我朝着正确的方向前进。
首先,定义一个名为dateStyle的WorksheetStyle,并将其NumberFormat属性设置为有效的Exceldate格式:
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的“date格式导出date,并添加单元格:
string val = DateTime.Now.ToString("s"); row.Cells.Add(val, DataType.DateTime, "dateStyle");
我没有使用他的图书馆,但在Excel中工作了很多。 我不知道他为一个单元格的数据types做了什么,因为他们不这样工作。 Excel单元格中的date都是具有date格式的整数。
我会尽量把date作为一个整数,诀窍是将您的string转换为正确的整数。 请参阅此链接以了解有关Exceldate为数字方法的信息。 然后我将设置WorksheetStyle.NumberFormat属性。