如何从Excel电子表格中导入数据,以便在c#中进行操作
本文关键字:操作 数据 Excel 电子表格 导入 | 更新日期: 2023-09-27 18:02:44
我有一个excel电子表格(好吧,数百个),我需要导入到数据库中。如果excel数据是一个很好的统一格式,我会简单地将它们保存为CSV,使用类似LINQ到CSV的东西读取它们,并保存所需的数据。
然而,excel电子表格是"不均匀的",因为不同的单元格组包含不同的数据。我需要一种抓取数据的方法,然后与单元格引用一起工作,以抓取我需要的比特并将它们保存到数据库。
实现这一点的最佳方法是什么?
感谢更新更多信息
我有许多电子表格,所有相同的结构,需要导入到数据库中。导入并不简单,因为来自电子表格的不同数据块将进入不同的表。excel文档本身包含几个部分(基本上是问题/答案)类型的数据。对于每个不同的部分,我需要获取数据,将其塑造成对数据库有意义的形式并保存。
理想情况下,我想创建一个快速的小WPF应用程序,让我选择一个电子表格点击一个按钮,并执行导入
如果你在非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/
做到了我想要的,没有大惊小怪。优秀的