在C#中读取Excel文件的好方法是什么? Point有一个网页,用户可以从中上传一个Excel文件,然后将其读取并发送到数据库表。
OleDB方式在这里没用,据我所知,它可以读取使用一个文件,这里会有很多。
到目前为止,我发现的最佳方式是:
http://www.codeproject.com/KB/office/csharp_excel.aspx
还有其他更好/更新的方法吗?
感谢。
答案 0 :(得分:2)
使用OLEDB,您可以根据要打开的文件的名称构建连接字符串来访问多个文件。以下内容应该有效:
对于XLSX:
var connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\";", fileName);
对于XLS:
var connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", fileName);
fileName
标识您要打开的文件。
答案 1 :(得分:1)
oledb提供商会工作,虽然有一些问题。 如果未运行64位版本的驱动程序,则会出现列限制。 如果您运行的是64位,则系统上不能有任何32位办公产品。
我建议在注册表中进行设置 HKLM \ SOFTWARE \ Wow5432Node \微软\喷气\ 4.0 \发动机\ EXCEL 将TypeGuessRows值设置为零 这会导致驱动程序扫描所有行以确定类型。驱动程序有点不确定,如果第一个说列中的X个行中有数字,然后它后面有字符串,则类型可以被认为是数字,包含字符串的任何内容都将消失并变为空。 离。
zipcode -------- 39934 18883 28472 52256-1252
最后一行可以读为null,因为它认为前几个是数字,任何不适合该格式的都被转换为null。
所以你可以使用oledb,只需要考虑一些解决方法。
答案 2 :(得分:0)
有几个选项
答案 3 :(得分:0)
我最近在Linq To Excel上取得了不错的成绩。根据您的具体要求,这可能是一个不错的选择
答案 4 :(得分:0)
我一直在使用Excel Data Reader,效果非常好。不可否认,它一直是桌面应用程序,但它应该在ASP.net应用程序中也能正常工作。
答案 5 :(得分:0)
开源NPOI library提供了非常全面的功能,可以从Excel文件(和其他Office文件格式)中读取和写入,而无需在Web服务器上运行Excel(因此它更快,更快)。 / p>
请注意,它目前不处理XLSX文件。