C# Office不可知访问.xls文件中数据的方式?
我正在做一个VS2008C程序,需要从excel电子表格中获取数据。问题是,用户同时运行Office2007和Office2010。因此,我试图在正确的方向上找到一些指针,以编程方式从xls中获取数据,而不关心用户安装了哪个版本的office 如果它将在两种环境(VS2008/Office2007和VS2008/Office2010)中编译,则可获得额外积分。 请注意,他们的示例不正确,需要使用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
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问题。除了电子表格的宽度(几百列)和一些用户的年龄之外,这将是我的默认答案没有额外工具的预算,不过,在未来的项目中,我必须记住这一点。。。