我目前正在尝试在不包含Microsoft Office的服务器上访问excel 2007文件。我的连接字符串是这样的。
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + file_path + ";Extended Properties=Excel 8.0;";
但是这是2003格式的,这很好用。我想利用2007 xml格式。但我无法通过以下连接访问该文件。(目标服务器上没有安装Office,不确定是否是原因。
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"DataSource=" + file_path + ";HDR=Yes;IMEX=1;Extended Properties=Excel 12.0;";
我一直在“找不到可安装的isam”。错误。
EDIT 我正在使用visual studio 2005并在C#中进行开发,如果这有助于清除任何内容。
答案 0 :(得分:4)
您可以尝试使用此连接字符串:
string connectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
file_name +
";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
请注意,虽然x64系统不支持此驱动程序,但它不起作用。
答案 1 :(得分:1)
您应该尝试使用Linq to Excel开源项目来查询Excel电子表格中的数据。您可以使用LINQ语句查询数据,Linq to Excel负责建立OLEDB连接并创建SQL语句。
以下是从Excel电子表格查询数据是多么容易的示例
var book = new ExcelQueryFactory("pathToExcelFile");
var rows = from x in book.Worksheet()
select new
{
Name = x["Name"],
BirthDate = x["BirthDate"].Cast<DateTime>()
};
查看Linq to Excel intro video以获取有关开源项目的更多信息。
答案 2 :(得分:0)
SpreadsheetGear for .NET将允许您打开工作簿,而不依赖于OleDB,COM Interop或任何其他可能在服务器上产生问题的API。
您可以查看实时ASP.NET示例here并下载免费试用版here。
免责声明:我拥有SpreadsheetGear LLC