C#编写文本序列号作为Excel文件中的date

我写了一个parsing器,它使用Spire.xls库从Excel工作表中获取一些信息,然后将信息写入另一个Excel文件。

我遇到了一个奇怪的问题。 出于某种原因,该程序正在采取序列号如

03-02281 03-02282 03-01975 

并将它们写入Excel表格中

 3/1/2281 3/1/2282 3/1/1975 

这只发生在一些值上。

其他人如

 30-04761 03-00613 03-00614 

没有改变。

我检查了excel文件,这些字段被设置为text格式。 所以他们要么原来的方式存储或Excel解释序列号为date。 其他可能性是,它不会在原始文件中发生,如果我手动input正确的值,文本不会自动更正/更改。

有没有人知道为什么会发生这种情况,我怎么可以告诉Excel把它们当作文本来处理?

我虽然在每个值的开头添加了一个' to ' ,但是这些必须被其他parsing器读取,所以这不是最方便的select。

编辑:这是我使用的一些代码,希望它可以给你们一个想法,我要去哪里错了。

这是添加所有值的代码:

 Workbook workbook = new Workbook(); workbook.LoadFromFile(templateExcelFileUri); Worksheet sheet = workbook.Worksheets[0]; int ColumnIndex = 0; //for the datatable columns iteration int columnCounter = 1; //for the excel sheet columns iteration int ColumnsToAdd = 6; //(Seccion, seccion desc, marca, marca desc, **IdArticulo**, articulo desc) //get the data of the new column DataColumn DescriptionsDataColumn; //First, add the suggestions. for (; ColumnIndex < ColumnsToAdd; ColumnIndex++, columnCounter++) { sheet.InsertColumn(columnCounter); if(columnCounter==5) sheet.Columns[5].NumberFormat = "@";// the column with the serial numbers. DescriptionsDataColumn = AutomatController.DescriptionsTable.Columns[ColumnIndex]; //insert the data into the new column sheet.InsertDataColumn(DescriptionsDataColumn, true, 2, columnCounter); } 

而对于引用,表中我添加的值:

 public static void SetDescriptionsTable() { DescriptionsTable.Columns.Add("Seccion", typeof(string)); DescriptionsTable.Columns.Add("SeccionDescripcion", typeof(string)); DescriptionsTable.Columns.Add("Marca", typeof(string)); DescriptionsTable.Columns.Add("MarcaDescripcion", typeof(string)); DescriptionsTable.Columns.Add("IdArticulo", typeof(string)); //Serial numbers DescriptionsTable.Columns.Add("ArticuloDescripcion", typeof(string)); } 

感谢编辑我的问题和标题的格式。 我在这里还是有点新的,我正在学习如何做得更好。

一些值不映射到date的原因是因为它们不符合MM-dyyyy格式的格式。 例如没有第30个月(30-02281)或第0天(03-01975)。

我认为你唯一需要做的就是设置目标列和单元格的格式,然后通过API设置它的值。 有时候,克隆一个列或一个单元默认的格式为“自动”,Excel会过于聪明。

如果您可以分享一些代码,社区可能会更准确地诊断问题。

在设置值之前,应将列格式设置为常规。