使用ActiveX读取excel文件

时间:2014-08-19 19:28:37

标签: 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;";
        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文件时,脚本无法打开连接。

1 个答案:

答案 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。