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

C# 如何从Excel电子表格中导入数据,以便在C语言中进行操作,c#,excel,C#,Excel,我有一个excel电子表格,数百个,我需要导入数据库。 如果excel数据是一种很好的统一格式,我只需将它们保存到CSV中,然后使用类似LINQ to CSV的方式将它们读入并保存所需的数据 但是,excel电子表格“不均匀”,因为不同的单元格组包含不同的数据。 我需要一种方法来获取数据,然后使用单元格引用来获取我需要的位并将它们保存到数据库中 实现这一目标的最佳方式是什么 谢谢 更新更多信息 我有大量的电子表格,结构都相同,需要导入数据库。导入并不简单,因为电子表格中的不同数据块将进入不同的表

我有一个excel电子表格,数百个,我需要导入数据库。 如果excel数据是一种很好的统一格式,我只需将它们保存到CSV中,然后使用类似LINQ to CSV的方式将它们读入并保存所需的数据

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

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

谢谢

更新更多信息

我有大量的电子表格,结构都相同,需要导入数据库。导入并不简单,因为电子表格中的不同数据块将进入不同的表中。excel文档本身包含几个部分,基本上是问答类型的数据。对于每个不同的部分,我需要获取数据,将其塑造成一个在数据库方面有意义的形式并保存它


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

如果您在非web环境中执行,则可以使用Excel对象模型读取数据。 例如,见。
如果它必须在web应用程序中。我建议使用。

将Excel电子表格转换为ODBC开放数据库连接数据源,这样您就可以像访问任何数据库一样访问它:

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


当数据不一致时,首先最好保持方法尽可能简单。从vba和作为excel对象继承权一部分的范围对象开始。从那里,您可以提高自动化水平,并在大多数情况下重用此范围的工作

  avariable = Range("A2:A5")
这种情况不会有太大改变。最终的目标语言是什么并不重要:C/vba/等等

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

问答


来自C的自动化示例链接:

您可能应该看看Microsoft,它为您处理了许多不愉快的COM/interop内容。

对于可能感兴趣的人,我最终使用了LinqToExcel:


做了我想做的事,小题大做。很好

从其他地方开始。但是,您可能需要研究与Excel的互操作性,以便逐个单元格提取数据。您所说的是Excel的哪个版本?你在处理xlsx文件吗?谢谢,现在就来看看。很快就会有一些反馈:我想你不知道一些文档的链接,是吗?我正在努力寻找任何似乎非常相关的东西。理想情况下,我希望能够从文件中加载excel并获取数据。这是一条更难走的路。您正在谈论从托管代码到非托管代码的互操作。当你说成百上千的电子表格时,它们是彼此的镜像,还是完全不同?对C的调用是自动的还是由用户发起的?我可以在web环境之外运行导入程序。我将签出Excel对象模型!考虑到excel数据不是一个统一的块表格,看起来这种方法很好。我觉得我需要更细粒度的控制,它不会真正像预期的那样工作,但是一旦您访问了数据,您就可以编写逻辑来解析它,并按照预期将其放入数据库中。我不认为会有一种自动处理不均匀数据的方法,但也许其他人会知道。在excel上使用odbc或oledb有其局限性。当excel数据有点像您的数据一样复杂时,无法识别的数据类型、单元格长度等问题就不会出现。