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

本文关键字:操作 数据 Excel 电子表格 导入 | 更新日期: 2023-09-27 18:02:44

我有一个excel电子表格(好吧,数百个),我需要导入到数据库中。如果excel数据是一个很好的统一格式,我会简单地将它们保存为CSV,使用类似LINQ到CSV的东西读取它们,并保存所需的数据。

然而,excel电子表格是"不均匀的",因为不同的单元格组包含不同的数据。我需要一种抓取数据的方法,然后与单元格引用一起工作,以抓取我需要的比特并将它们保存到数据库。

实现这一点的最佳方法是什么?

感谢

更新更多信息

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

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

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

如果你在非web环境中读取数据,你可以使用Excel对象模型。参见示例如何从Microsoft Visual c# . net自动化Microsoft Excel。如果它必须在web应用程序中。我建议使用Aspose Cells

将Excel电子表格转换为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

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

  avariable = Range("A2:A5")

这个注释不会有太大的变化。不管你最终的目标语言是什么(c#/vba/等等)。

有许多其他方法可以做到这一点——基于java/基于xml/基于c#/和其他一些非常酷的方法,这些方法只适用于某些特定的情况。如果您能提供更多关于您的用例的信息,那么也许我可以建议您尝试更多的东西。


,

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

你可能应该看看微软的Visual Studio Tools For Office (VSTO),它为你处理了很多不愉快的COM/interop的东西。

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

做到了我想要的,没有大惊小怪。优秀的