从Excel文件中清除格式化,带有C#

我有一个高度自定义的Excel文件(即.xlsx)。 我正在使用ACE提供者读取文件。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myfilefullpath.xlsx; Extended Properties="Excel 12.0 Xml;HDR=NO;IMEX=1"; 

我有一些字段混合的数据格式(即列E有几个string值行,然后数百行双值)。

一些字段具有自定义格式。 当把这个文件读入数据表时,我看到自定义的格式输出,而不是“真正的”单元格值。

即date(“yyyy / mm / dd”)被自定义格式化为“day mm / dd”,数据表读取“day mm / dd”。 在数据插入到数据表之前,我想读取“yyyy / mm / dd或者至less是本例中date的整数值),如果可能的话,我该怎么做呢?

更新:我正在使用Microsoft.Office.Interop.Excel

我一直在最近与两个库parsing和生成Excel文件,我可以推荐他们读你的Excel文件:

1) 为Office打开XML SDK 2.5 。 快速示例:

 FileInfo newFile = new FileInfo(filePath); ExcelPackage pck = new ExcelPackage(newFile); var dataSheet = pck.Workbook.Worksheets.FirstOrDefault(ws => ws.Name.Equals("Data")); var someUnformattedValue = dataSheet .Cells[1, 2].Value; 

2) ClosedXML 。 快速示例:

 var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets[0]; var someUnformattedValue = worksheet.Cell("A1").Value; workbook.SaveAs("data.xlsx"); 

两者都允许进行内存处理(不需要保存磁盘上的文件),但ClosedXML不支持图表(至less现在还没有)。 而且,它们提供了一个直观的对象模型 。

除了关于ClosedXML条件格式化的一些问题,我还能parsing和生成非常复杂的Excel文件(包含枢轴和/或数以万计的数据)。