阅读Excel文件

时间:2012-01-16 00:18:27

标签: c# asp.net visual-studio-2008

在C#中读取Excel文件的好方法是什么? Point有一个网页,用户可以从中上传一个Excel文件,然后将其读取并发送到数据库表。

OleDB方式在这里没用,据我所知,它可以读取使用一个文件,这里会有很多。

到目前为止,我发现的最佳方式是:

http://www.codeproject.com/KB/office/csharp_excel.aspx

还有其他更好/更新的方法吗?

感谢。

6 个答案:

答案 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)

有几个选项

  1. 使用Excel Interop,需要安装excel并且必须处理COM
  2. 对于XLSX文件,您可以使用Open Office SDK或第三方库,例如Epplus

答案 3 :(得分:0)

我最近在Linq To Excel上取得了不错的成绩。根据您的具体要求,这可能是一个不错的选择

http://code.google.com/p/linqtoexcel/

答案 4 :(得分:0)

我一直在使用Excel Data Reader,效果非常好。不可否认,它一直是桌面应用程序,但它应该在ASP.net应用程序中也能正常工作。

答案 5 :(得分:0)

开源NPOI library提供了非常全面的功能,可以从Excel文件(和其他Office文件格式)中读取和写入,而无需在Web服务器上运行Excel(因此它更快,更快)。 / p>

请注意,它目前不处理XLSX文件。