阅读肮脏的Excel表格的最佳途径

我必须用C#操作一些Excel文档。 这是一个没有用户交互的批处理过程。 它将parsing数据到数据库,然后输出很好的报告。 数据非常脏,无法使用ADO准备好。 数据远不是一个很好的表格格式。

Best被定义为最稳定(更新不太可能中断)/明确(简洁)的代码。 快速并不重要。 如果运行时间less于8小时,我很好。

我有逻辑来查找数据。 所有我需要运行它是基本的单元格导航和getvaluetypes的函数。 给我X单元格值作为string,如果它匹配的Y值与Levenshtein距离<3,那么给我Z单元格值。

我的问题是,挖掘excel的最好方法是什么?

VSTO? Excel对象库? 第三个选项我不知道?

VSTO由于权限和你的dll挂钩到你正在使用的文档的事实是一种痛苦。 假设你实际上并没有改变这些文件,而且ADO绝对不是一种select,我想说通过Excel COM接口的自动化是你最好的select。 它可以让你按照通常的方式编程任何其他应用程序,并为VSTO提供同样多的数据提取选项。

Office程序可以作为.NET中的对象加载。 以下是我用来将Excel加载到VB6的编码存根。 无论使用哪种MS语言,代码本质上都是一样的。

Dim xlApp As New Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet On Error Resume Next wb = xlApp.Workbooks.Open("c:\testdata.xls") If Err.Number > 0 Then If Err.Number = 1004 Then MsgBox("File not found") Else MsgBox("Error " & Err.Number & " occurred.") End If Exit Sub End If ws = wb.Sheets("Sheet1") Text1.Text = ws.Cells(1, 1).Value wb = Nothing ws = Nothing xlApp = Nothing 

那么试着看看堆栈溢出问题将Excel范围转换为ADO.NET DataSet或DataTable等