首页 > 解决方案 > 使用 Excel Javascript API 通过 ASP.Net 站点写入 Excel 电子表格

问题描述

我使用 Visual Studio 2017 中的 Empty Template 创建了一个 ASP.Net webapp。该网站有许多熟悉的 Web 控件,例如 Button (s)、ImageButton 和 Label (s)。用户在 ImageButton 控件内打开图片并能够在控件内单击。webapp 根据用户在 ImageButton 中单击的位置计算一个值,并将这些值显示在相应的 Label 控件中。用户应该将值写入打开的 Excel 电子表格(这就是问题所在)。对于其他上下文,用户执行的每个操作都由客户端 javascript 函数处理 - 打开图片除外。打开动作由属于 aspx 页面的 C# 代码处理。

在编写类似的 Excel Web Add In 的过程中,我发现了一些非常有用的代码,用于使用 Excel JavaScript API 写入 Excel 电子表格。

这是非常代码:

function HighlightCell() {
    Excel.run(function (ctx) {
                // Create a proxy object for the selected range and load its properties
                var sourceRange = ctx.workbook.getSelectedRange().load("values, rowCount, columnCount");
                var sheet = ctx.workbook.worksheets.getActiveWorksheet()
                // Run the queued-up command, and return a promise to indicate task completion
                return ctx.sync()
                    .then(function () {
                        var highestRow = 0;
                        var highestCol = 0;
                        var highestValue = sourceRange.values[0][0];

                        // Find the cell to highlight
                        for (var i = 0; i < sourceRange.rowCount; i++) {
                            for (var j = 0; j < sourceRange.columnCount; j++) {
                                if (!isNaN(sourceRange.values[i][j]) && sourceRange.values[i][j] > highestValue) {
                                    highestRow = i;
                                    highestCol = j;
                                    highestValue = sourceRange.values[i][j];
                                }
                            }
                        }
                        cellToHighlight = sourceRange.getCell(highestRow, highestCol);
                        cellToHighlight.format.fill.color = "IndianRed";
                        cellToHighlight.values = 5;

                  })
                  .then(ctx.sync);
         })
         .catch(errorHandler);

}

该代码在 Excel Web Add In 中就像一个魅力,但在 ASP.Net webapp 中到目前为止还没有工作。据我了解,这是因为代码无法检索活动的工作簿/工作表。这可能是因为我所知道的服务器和客户端之间的断开连接。

有没有办法用javascript或C#在客户端打开一个excel电子表格。我什至可以在 ASP.Net webapp 中使用上述代码吗?

编辑:更多代码 我用这段代码在客户端打开了电子表格:

function excload() {
    var selectedFile = document.getElementById('imgupload').files[0];
    document.getElementById("frame").src = window.URL.createObjectURL(selectedFile);
}

在这段代码中,imgupload 是一个 HTML 文件输入,“frame”是一个 iframe 元素。我不知道为什么当我运行它时,它不只是在 iframe 中打开电子表格,而是在计算机上 Excel 程序的新实例中打开电子表格。

在编写代码时注意到一些奇怪的事情: 调用函数 HighlightCell——写入单元格会刷新页面,而其他 javascript 函数都不会这样做。即使我添加了 return false,也会发生这种情况;行到函数并使用 _onclick ="HighlightCell(); return false;" 从按钮调用它

“在编写代码时注意到一些奇怪的东西”的 REDUX

使用以下方法管理调用突出显示单元格而不刷新:

$(document).ready(function () {
        $('#chosen').click(HighlightCell);
    });

但是仍然没有写入

标签: javascriptc#asp.netexcel

解决方案


推荐阅读