Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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# Office不可知访问.xls文件中数据的方式?_C#_Visual Studio 2008_Excel - Fatal编程技术网

C# Office不可知访问.xls文件中数据的方式?

C# Office不可知访问.xls文件中数据的方式?,c#,visual-studio-2008,excel,C#,Visual Studio 2008,Excel,我正在做一个VS2008C程序,需要从excel电子表格中获取数据。问题是,用户同时运行Office2007和Office2010。因此,我试图在正确的方向上找到一些指针,以编程方式从xls中获取数据,而不关心用户安装了哪个版本的office 如果它将在两种环境(VS2008/Office2007和VS2008/Office2010)中编译,则可获得额外积分。 请注意,他们的示例不正确,需要使用OleDbConnectionStringBuilder,如下所示: OleDbConnectionS

我正在做一个VS2008C程序,需要从excel电子表格中获取数据。问题是,用户同时运行Office2007和Office2010。因此,我试图在正确的方向上找到一些指针,以编程方式从xls中获取数据,而不关心用户安装了哪个版本的office

如果它将在两种环境(VS2008/Office2007和VS2008/Office2010)中编译,则可获得额外积分。

请注意,他们的示例不正确,需要使用
OleDbConnectionStringBuilder
,如下所示:

OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();

if (isOpenXML)
    builder.Provider = "Microsoft.ACE.OLEDB.12.0";
else
    builder.Provider = "Microsoft.Jet.OLEDB.4.0";

builder.DataSource = fileName;
builder["Extended Properties"] = "Extended Properties=\"Excel 8.0;HDR=YES;\""

con = new OleDbConnection(builder.ToString());  

你根本不必使用办公自动化。有许多用于从.Net读取Excel文件的软件包。有些是商业的,有些是开源的


例如,在codeplex.com上进行的随机搜索返回了以下结果:

如果您真的想使用Excel本身读取数据,那么您应该参考您希望用户安装的最低版本的Excel。Excel 2010与Excel 2007向后兼容,应支持针对2007库编写的应用程序。

不确定这是否是一个您需要处理预算的项目


在我们公司,我们曾经使用过,与之合作是非常棒的。如果你有足够的资金,当你使用excel文件时,它是一个很好的工具。SpreadsheetGear可以帮助用户使用任何类型的excel文件,并且不需要用户安装excel。

只需将数据导出到csv或txt文件,它将不受版本限制。

此文件免费且易于使用


请注意,64位的Microsoft.Jet.OLEDB.4.0不可用,因此将项目更改为目标x86是该项目的一个可行选项,它避开了x64问题。除了电子表格的宽度(几百列)和一些用户的年龄之外,这将是我的默认答案没有额外工具的预算,不过,在未来的项目中,我必须记住这一点。。。