javascript - 如何连接到 Javascript 中的 Excel 事件

标签 javascript html excel activex

在客户端网络应用程序中,我想:

  1. 打开 Excel 电子表格,
  2. 将一些应用程序数据导出到 Excel,
  3. 允许用户使用它,并且
  4. 完成后,将(可能更改的)数据读回我的应用程序。

我希望用户拥有流畅的体验,并通过连接到 BeforeClose 事件来检测他们何时完成了 excel,但我发现我无法连接到 javascript/HTML 中的 Excel 事件。

function BeforeCloseEventHandler(cancel) {
    // TODO: read values from spreadsheet
    alert("Closing...");
}

function openExcel() {
    var excel = new ActiveXObject("Excel.Application");
    var workbook = excel.Workbooks.Add();
    var worksheet = workbook.Worksheets(1);
    worksheet.Cells(1, 1).Value = "First Cell";
    worksheet.Cells(1, 2).Value = "Second Cell";
    workbook.BeforeClose = BeforeCloseEventHandler;  // THIS DOESN'T WORK
    excel.Visible = true;
    excel.UserControl = true;
}

有人有什么建议吗?

最佳答案

经过一些研究,我发现我无法在 javascript 中将事件连接到动态 ActiveX 对象(即由 new ActiveXObject 构造函数创建的对象)。

一个想法是我创建一个包装器 Windows 窗体用户控件,它将托管在 <object> 中。网络应用程序中的标记。用户控件将调用 Excel 并接收事件,并将事件返回到 javascript,我可以使用 <script for="..." event="..."> 连接它机制。不确定这是否有效,但我会尝试。

即使它确实有效,我对这个解决方案也不是特别满意。层数太多——从 silverlight 控件调用 javascript 意味着我的数据必须跨越 3 个边界来回:Silverlight -> Javascript -> Hosted Winform User Control -> Excel

消除其中一些界限会很好。

关于javascript - 如何连接到 Javascript 中的 Excel 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/436563/

相关文章:

javascript - JS 窗口变量声明和行为

javascript - 在特定滚动位置激事件画

javascript - 窗口缩小时动画图像从中心漂移

javascript - Uncaught ReferenceError : ctx is not defined

excel - 在 VBA 中创建颜色矢量

excel - 删除行时如何自动删除图片?

javascript - 使用 json 编码对 MySQL 数组进行分块

支持多个项目拖放的 Javascript TreeView

javascript - 使用 React 渲染 HTMLAudioElement DOM 元素

Excel 将公式应用于现有单元格值,无需复制/粘贴