用ActiveX读取excel文件

用ActiveX读取excel文件,excel,vbscript,activex,Excel,Vbscript,Activex,我使用下面的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

我使用下面的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文件时,脚本无法打开连接

发布答案,以防像我这样的人在这个愚蠢的错误上陷入困境。 问题在于连接字符串

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。

可能连接字符串错误。是否尝试将Persist Security Info=False更改为True?或者类似的?是的。问题只与连接字符串有关。