我使用以下VB脚本从Excel文件中读取内容。
var ControlCn = new ActiveXObject("ADODB.Connection");
var Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = E:\\DownloadAttachment.xlsx;Persist Security Info=False;Extended Properties=Excel 8.0;";
ControlCn.Open(Conn);
var rs = new ActiveXObject("ADODB.Recordset");
var SQL = "select * from [Sheet1$]";
rs.Open(SQL, ControlCn);
if(rs.bof)
{
document.write('No Data Avaliable');
}
if(!rs.bof)
{
rs.MoveFirst();
var rows = "";
while(!rs.eof)
{
var line = "";
for(var i=0; i!= rs.fields.count; ++i)
{
line += "<td>" + rs.fields(i).value + "</td>";
}
rows += "<tr>" + line + "</tr>";
rs.MoveNext()
}
$(rows).appendTo("#itemList tbody");
}
rs.Close();
ControlCn.Close();
}
当我保持打开excel文件时,此脚本有效,但是当我关闭excel文件时,脚本无法打开连接。
答案 0 :(得分:1)
发布答案以防万一有人像我一样陷入这个愚蠢的错误。 问题在于连接字符串。
var Conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = E:\\DownloadAttachment.xlsx;Persist Security Info=True;Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1;\"";
是正确的连接字符串。对于.xlsx,我们使用Excel 12.0而不是Excel 8.0,提供者应该是Microsoft.ACE.OLEDB.12.0而不是Jet。