【发布时间】:2021-03-12 23:24:01
【问题描述】:
我有一个导入 Excel 工作簿 (xlsx) 文件、编辑单元格值并最终将工作簿保存在不同文件中的小代码。
我的代码的问题是:在新的 xlsx 中,没有设置自动计算。我必须手动打开文件并使用公式传递所有单元格才能更新它。
我在 SheetJs 的 Github 中看到了这个问题报告,但没有找到解决方案: https://github.com/SheetJS/sheetjs/issues/306
我的问题是:如何在生成的 xlsx 上将计算模式设置为自动?
以下是sn-p的代码:
/* I use an input button (type="file", id="xlf") to get the file */
$('#xlf').change(function(e)
{
var reader = new FileReader();
reader.readAsArrayBuffer(e.target.files[0]);
reader.onload = function(e)
{
var data = new Uint8Array(reader.result);
var wb = XLSX.read(data,{type:'array'});
var htmlstr = XLSX.write(wb,{type:'binary',bookType:'html'});
var fSN = wb.SheetNames[0];
var ws = wb.Sheets[fSN];
/* simple formula added for test purposes */
ws['D9'] = {t:'n', f:"E4+E5"};
if(!ws["E5"]) ws["E5"] = {};
ws["E5"].t = "n";
ws["E5"].v = $("#diff").val();
ws["E4"].t = "n";
/* save file */
XLSX.writeFile(wb, "test.xlsx");
}
});
此代码使我的浏览器下载一个新的 Excel,其中单元格 E5 的值是取自字段 #diff 的值。 D9 一直为空,直到我手动点击它并按回车键(公式就在那里)。
理想情况下,我正在寻找不涉及node.js 或npm 的解决方案,因为程序将在我无法安装任何东西的计算机上运行。
【问题讨论】:
标签: javascript excel xlsx sheetjs js-xlsx