用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。