如何从Excel电子表格导入数据,以便可以在C#中进行操作

时间:2011-07-18 11:25:21

标签: c# excel

我有一张excel电子表格(好吧,数百张)我需要导入数据库。 如果excel数据采用漂亮的统一格式,我只需将它们保存为CSV,然后使用LINQ to CSV等内容读取它们,并保存所需的数据。

然而,excel电子表格是“不均匀的”,因为不同的单元格组包含不同的数据。 我需要一种方法来获取数据,然后使用单元格引用来获取我需要的位并将它们保存到数据库中。

实现这一目标的最佳方式是什么?

由于

更新更多信息

我有很多电子表格,结构完全相同,需要导入数据库。导入并不简单,因为电子表格中的不同数据块将进入不同的表格。 excel文档本身包含几个部分(基本上是问题/答案)类型数据。对于每个不同的部分,我需要抓取数据,将其整形为一个对数据库有意义的形式并保存。

理想情况下,我想创建一个快速的小型WPF应用程序,让我选择一个电子表格点击按钮并执行导入。

5 个答案:

答案 0 :(得分:0)

如果您在非Web环境中执行此操作,则可以使用Excel对象模型读取数据。 请参阅示例How to automate Microsoft Excel from Microsoft Visual C#.NET。 如果必须在Web应用程序中。我建议使用Aspose Cells

答案 1 :(得分:0)

将Excel Spread表转换为ODBC(开放式数据库连接)数据源,以便您可以像访问任何数据库一样访问它:

http://www.datamystic.com/datapipe/excel_odbc.html

然后像使用ODBC的任何数据库一样访问它:

http://msdn.microsoft.com/en-us/library/system.data.odbc.odbcconnection(v=vs.71).aspx

答案 2 :(得分:0)

当数据不统一时,通常最好在第一个实例中尽可能简化方法。从vba和“Range”对象(它是excel对象层次结构的一部分)开始。从那里,您可以提高自动化水平,并在大多数情况下重复使用此“范围”工作。

  avariable = Range("A2:A5")

这种意义不会发生太大变化。你使用的最终目标语言(语言:C#/ vba /等)并不重要。

有很多其他方法可以解决这个问题 - 基于java / xml / c#的/以及其他一些非常酷的方法,只适用于某些特殊情况。如果您可以提供有关您的用例的更多信息,那么我可以建议您尝试更多的事情。


Q&甲

来自C#的自动化示例链接:http://support.microsoft.com/kb/302084

答案 3 :(得分:0)

你应该看看微软的Visual Studio Tools For Office (VSTO),它可以为你处理很多令人不愉快的COM /互操作资料。

答案 4 :(得分:0)

对于那些可能感兴趣的人,我最终使用了LinqToExcel: http://code.google.com/p/linqtoexcel/

完全按照我最小的方式做了什么。优异的