我知道有不同的方法来读取Excel文件:
Iterop
Oledb
Open Xml SDK
兼容性不是问题,因为程序将在受控环境中执行。
我的要求:
将文件读取到DataTable
/CUstom Entitie
(我不知道如何为对象创建动态属性/字段[列名称在Excel文件中会发生变化])
使用DataTable/Custom Entities
可以使用其数据执行某些操作。
使用操作结果更新DataTable
将其写回excel file
。
那样就简单多了。
如果可能的话,也建议我自定义实体(动态添加属性/字段到对象)
8条答案
按热度按时间ql3eal8s1#
看一下Linq-to-Excel,它非常简洁。
它还允许强类型行访问。
c9x0cxw02#
我知道这个问题是问了近7年前,但它仍然是谷歌搜索结果的某些关键字有关导入Excel数据与C#,所以我想提供一个替代的基础上,一些最新的技术发展.
导入Excel数据已经成为我日常工作中的一项常见任务,我已经简化了这个过程,并在我的博客上记录了该方法:best way to read excel file in c#.
我使用NPOI是因为它可以在没有安装Microsoft Office的情况下读写Excel文件,而且它不使用COM+或任何互操作。这意味着它可以在云中工作!
但真正的魔力来自于与NPOI Mapper from Donny Tian的配对,因为它允许我将Excel列Map到C#类中的属性,而无需编写任何代码。
基本思路如下:
我创建了一个. net类,它匹配/Map了我感兴趣的Excel列:
注意,如果我愿意,它允许我根据列名进行Map!
然后,当我处理excel文件时,我需要做的就是这样的事情:
现在,不可否认的是,我的代码并没有修改Excel文件本身,而是使用Entity Framework将数据保存到数据库中(这就是为什么在我的示例中会看到"UpdateUser"和"SaveChanges")。
6uxekuva3#
使用OLE查询非常简单(例如sheetName为Sheet1):
对于较新的Excel版本:
你也可以使用CodePlex上的一个开源项目Excel Data Reader。它在从Excel工作表导出数据方面效果非常好。
链接上给出的示例代码指定:
参考:How do I import from Excel to a DataSet using Microsoft.Office.Interop.Excel?
jmp7cifd4#
尝试使用此免费方式https://freenetexcel.codeplex.com
bpzcxfmw5#
如果您可以将其限制为(Open Office XML格式)*.xlsx文件,那么最流行的库可能是EPPLus。
额外的好处是,没有其他依赖项。只需使用nuget安装:
1aaf6o9v6#
尝试使用Aspose. cells库(不是免费的,但试用就足够阅读了),它相当不错
下面是示例代码:
pftdvrlh7#
从excel读取、修改并写回
mv1qrgav8#
我使用Office的NuGet包:DocumentFormat.OpenXml并将该组件的doc site中的代码拼凑在一起。
有了下面的帮助代码,在复杂性上类似于我在那个项目中的其他CSV文件格式解析...