javascript - 使用 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);
});
但是仍然没有写入
解决方案
推荐阅读
- linux - 从正则表达式中获取文件列表
- javascript - JavaScript/D3 getFullYear() 不是函数
- matlab - 使用 fsolve 和 Euler 3BDF 的 SIR 模型
- python - Python Selenium 没有滚动到页面底部
- angular - Angular 如何在单击链接后转到页面的特定部分
- sql - Redshift SQL - 反向 Listagg 函数
- python - opencv python的人脸识别
- mongodb - 如何查找包含包含任何子字段的字段的文档
- reactjs - Blueprintjs选择键盘导航不起作用 - 反应
- javascript - 无法将 TypeScript 中的类导入 Javascript