Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取Excel文件_C#_Asp.net_Visual Studio 2008 - Fatal编程技术网

C# 读取Excel文件

C# 读取Excel文件,c#,asp.net,visual-studio-2008,C#,Asp.net,Visual Studio 2008,用C#读取Excel文件的好方法是什么?关键是要有一个网页,用户可以从中上传一个Excel文件,然后将其读取并发送到数据库表 OleDB方式在这里是无用的,据我所知,它可以读取使用一个文件,这里会有很多 到目前为止,我发现最好的方法是: 还有其他更好/更新的方法吗 谢谢。有几种选择 使用时,需要安装excel,并且必须处理COM 对于XLSX文件,您可以使用SDK或第三方库,如 有几种选择 使用时,需要安装excel,并且必须处理COM 对于XLSX文件,您可以使用SDK或第三方库,如 我最近

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

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

到目前为止,我发现最好的方法是:

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


谢谢。

有几种选择

  • 使用时,需要安装excel,并且必须处理COM
  • 对于XLSX文件,您可以使用SDK或第三方库,如

  • 有几种选择

  • 使用时,需要安装excel,并且必须处理COM
  • 对于XLSX文件,您可以使用SDK或第三方库,如

  • 我最近在Linq To Excel方面取得了很好的成功。根据您的具体要求,这可能是一个不错的选择


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


    使用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
    标识要打开的文件

    使用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
    标识要打开的文件

    我一直在使用,效果非常好。诚然,它已经在桌面应用程序中使用过,但在ASP.net应用程序中应该也能正常工作。

    我一直在使用它,它工作得非常好。诚然,它已经在桌面应用程序中使用过,但在ASP.net应用程序中应该也能正常工作。

    oledb提供程序可以工作,但也有一些问题。 如果您没有运行64位版本的驱动程序,则存在列限制。 如果您运行的是64位,则系统上不能有任何32位office产品

    我建议在注册表中设置 HKLM\Software\Wow5432Node\Microsoft\Jet\4.0\Engines\Excel 将值TypeGuessRows设置为零 这会导致驱动程序扫描所有行以确定类型。驱动程序有点不确定,因为如果列中的第一个X行数包含数字,然后后面有字符串,则该类型可以被视为数字类型,任何包含字符串的内容都将消失并变为null。 前

    zipcode -------- 39934 18883 28472 52256-1252 最后一行可以读取为null,因为它认为前几行是数字,任何不符合该格式的内容都将转换为null


    所以你可以使用OLeDB,只需考虑一些工作。

    < P> OLeDB提供程序将工作,但也有一些问题。 如果您没有运行64位版本的驱动程序,则存在列限制。 如果您运行的是64位,则系统上不能有任何32位office产品

    我建议在注册表中设置 HKLM\Software\Wow5432Node\Microsoft\Jet\4.0\Engines\Excel 将值TypeGuessRows设置为零 这会导致驱动程序扫描所有行以确定类型。驱动程序有点不确定,因为如果列中的第一个X行数包含数字,然后后面有字符串,则该类型可以被视为数字类型,任何包含字符串的内容都将消失并变为null。 前

    zipcode -------- 39934 18883 28472 52256-1252 最后一行可以读取为null,因为它认为前几行是数字,任何不符合该格式的内容都将转换为null

    因此,您可以使用OLeDB,只需考虑一些工作。

    < P>开源提供了从Excel文件(和其他Office文件格式)读取和写入的非常全面的功能,而不需要在Web服务器上运行Excel(因此它非常快得多)。 请注意,它目前不处理XLSX文件。

    开源软件提供了相当全面的功能,可以从Excel文件(以及其他Office文件格式)读取和写入数据,而无需在Web服务器上运行Excel(因此速度要快得多)


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

    OleDB方法只能读取一个文件是什么意思?@M.Babcock它有连接字符串,如果我是对的,那应该是文件的路径,我需要上传文件,然后读取。对于许多文件。是的,您可以基于要打开的文件构建连接字符串。有什么问题?@M.Babcock,假设我上传了文件File1.xlsx,File2.xls,File3.xls,File4.xlsx,我不知道我会有多少个文件,或者它们是如何命名的。你使用什么上传控制?他们中几乎任何人都会告诉你上传的文件名。OleDB方法只能读取一个文件是什么意思?@M.Babcock它有连接字符串,如果我是对的,那应该是文件的路径,我需要上传文件,然后读取。对于许多文件。是的,您可以基于要打开的文件构建连接字符串。有什么问题?@M.Babcock,假设我上传了文件File1.xlsx,File2.xls,File3.xls,File4.xlsx,我不知道我会有多少个文件,或者它们是如何命名的。你使用什么上传控制?他们中几乎任何人都会告诉你上传的一个或多个文件的名称。