2010-07-13 51 views
2

嗨,专家正在尝试解析excel文件。其结构非常复杂。我知道的可能方法是。Excel文件解析/使用.NET抓取

  • 使用Office introp库
  • 使用OLEDB提供商和读取Excel文件中的数据集。

但问题是它的复杂性,像一些列单元格或行空白等

什么是最好的方法可以做到这一点?

在此先感谢。

回答

1

我可以推荐ExcelDataReader(根据LGPL许可,我认为)。它加载.xls和.xlsx文件,并让您将电子表格作为DataSet获取,每个工作表都是单独的DataTable。据我所知,从我使用过的场景中可以知道,它会授予空白行,空单元格等。试试看看您是否认为它会处理您的“非常复杂”的结构。 [我确实在网站上发现了一个负面评论 - 但其余的都很积极。如果工作表被重命名,我遇到了读取.xlsx的问题]

我也在过去使用过OLEDB方法,但要警告的是,它在试图推断第一种数据类型时会遇到实际问题几行。如果某个列的数据类型发生变化,那么这可能会错误地推断出来。更糟糕的是,当它发生错误时,它通常会返回null作为值,从而难以(或不可能)通过在前六(7)行之后更改的数据类型来指示真空值。

0

我让我的用户首先将Excel电子表格保存为CSV文件。然后他们将CSV文件上传到我的应用程序。这使得解析起来更简单。

1

就我个人而言,我更喜欢使用OLEDB方式,有时候这种方式有时笨重得多,或者您可以使用第三方库,它已经投入时间/精力/精力来访问数据。

SyncFusion有一个相当漂亮的库。

0

我已经使用OLEDB自己来读取上传的Excel文件,并且它没有提出真正的问题(除了空值,而不是空白,可以用IsDBNull检查)。另外,像NPOI和Excel2007ReadWrite(http://www.codeproject.com/KB/office/OpenXML.aspx)这样的第三方开源工具也很有用。

我已经对这些第三方工具进行了全面评估,并且都非常稳定且易于集成。我会推荐用于Excel 2003文件的NPOI和用于Excel 2007文件的Excel2007ReadWrite。

0

听起来好像你对手头的任务有很好的理解。您必须编写业务逻辑来解决电子表格格式的复杂性并提取您要查找的数据。

在我看来,那VTSO /互操作是有两个原因的最佳平台战略:

  1. 访问电子表格数据将需要为您的解决方案的努力的一小部分。所以如果使用OLEDB可以节省一些时间进行数据访问,那么就整个项目范围而言,这可能是无关紧要的。
  2. 您可能需要仔细检查各个单元格的内容,并将格式等上下文信息考虑在内。通过互操作,您可以完全查看单元格内容,上下文以及其他表单级别的上下文信息,如命名范围和列表。假设您在解码电子表格时不需要此类信息是一种风险。