用ActiveX读取excel文件

我正在使用以下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文件的时候工作,但是当我closuresexcel文件的时候脚本无法打开一个连接。

发布答案,以防有人像我一样陷在这个愚蠢的错误中。 问题是连接string。

 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;\""; 

是正确的连接string。 对于.xlsx,我们使用Excel 12.0而不是Excel 8.0,提供者应该是Microsoft.ACE.OLEDB.12.0而不是Jet。