【问题标题】:Reading excel file with ActiveX用 ActiveX 读取 excel 文件
【发布时间】:2014-10-13 00:44:03
【问题描述】:

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

【问题讨论】:

  • 可能是连接字符串错误。尝试将 Persist Security Info=False 更改为 True?或类似的东西?
  • 是的。问题仅出在连接字符串上。

标签: excel vbscript activex


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多