javascript - 保存并退出 ActiveX 对象

标签 javascript excel activex activexobject

我正在尝试使用 javascript 将数据发送到 Excel 列表,将数据添加到列表,保存并关闭列表。我知道在使用 ActiveX 时我仅限于 IE,但这没关系。

我面临的问题是退出和保存方法都不起作用。该进程保持打开状态并且不会保存数据,除非我手动保存它。

代码如下:

function getNumber() {

    var Excel = new ActiveXObject("Excel.Application");

    var test = Excel.Workbooks.Open("pathToFile");

    var LastRow = test.ActiveSheet.Range("A1").CurrentRegion.Rows.Count;

    alert(LastRow);
    var combine = "A" + (LastRow);

    alert(combine);

    var getCell = test.ActiveSheet.Range(combine).Value;

    var delimiter = '_';
    var start = 3;
    var tokens = getCell.split(delimiter).slice(start);
    var result = parseInt(tokens.join(delimiter));
    var newNumber = result + 1; 

    whichCompany();

    var newRow = "A" + (LastRow + 1);

    var id = "D_" + selectedName + "_2017_"+ newNumber.toString();
    test.ActiveSheet.Range(newRow).Value = id;
    alert(id);

    newRow = "B" + (LastRow + 1);

    var m_names = new Array("Jan", "Feb", "Mar", 
    "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
    "Oct", "Nov", "Dec");

    var d = new Date();
    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    var curr_year = d.getFullYear();
    var dateNow = curr_date + m_names[curr_month] + curr_year;

    test.ActiveSheet.Range(newRow).value = dateNow;

    newRow = "C" + (LastRow + 1);
    test.ActiveSheet.Range(newRow).Value = document.getElementById("fName").value + " " + document.getElementById("lName").value;

    newRow = "D" + (LastRow + 1);
    internalOrExternal();
    test.ActiveSheet.Range(newRow).Value = intOrExt;

    newRow = "E" + (LastRow + 1);
    test.ActiveSheet.Range(newRow).Value = document.getElementById("case").value;

    newRow = "F" + (LastRow + 1);
    test.ActiveSheet.Range(newRow).Value = document.getElementById("produkt").value;

    Excel.Quit();

}

最佳答案

MSDN 文档 https://msdn.microsoft.com/en-us/library/6958xykx(v=vs.100).aspx声明该方法是应用程序命名空间的一部分,因此请尝试使用 Excel.Application.Quit(); 代替。它还具有 Excel.saveAs 语法。

虽然我知道这是一个仅适用于 IE 的脚本,但请注意 IE Edge 也不支持它,因此它根本不是面向 future 的。如果您可以访问某些服务器端工具,则可以使用大量 excel 库来进行 ajax 调用。我们个人使用 https://github.com/SheetJS/js-xlsx Node.js 模块

关于javascript - 保存并退出 ActiveX 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42579386/

相关文章:

javascript - Packery - 如何更改布局模式?

javascript - 如何创建这样的Javascript,根据用户的flash播放器版本提供不同的swf

vba - 使用不一致的分隔符拆分字符串

xml - 如何使用 VBA 将 Excel 文件中的符号写入 XML 文件?

java - 使用 js/jquery/java/active x 或其他方式拍摄 <div> 的快照?

javascript - 悬停图像时是否可以隐藏标题?

javascript - 保持背景固定但让照片滚动

json - 如何从Excel中的JSON嵌套数组获取数据vba-json

c++ - ActiveX 插件导致 ASSERT 在 VS2008 中应用程序退出时失败

c# - 从 Windows 窗体切换到 Web 窗体