javascript - 如何通过 Javascript 设置 xlsx 文件的计算模式?

标签 javascript excel xlsx sheetjs js-xlsx

我有一个小代码可以导入一个 Excel 工作簿 (xlsx) 文件,编辑一个单元格值,最后将工作簿保存在另一个文件中。

我的代码的问题是:在新的 xlsx 中,没有设置自动计算。我必须手动打开文件并使用公式遍历所有单元格才能更新它。

我在 SheetJs 的 Github 上看到了这个问题报告,但没有找到解决方案: https://github.com/SheetJS/sheetjs/issues/306

我的问题是:如何在生成的 xlsx 上将计算模式设置为自动?

以下是代码片段:

/* 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 保持为空,直到我手动点击它并按 enter 键(公式就在那里)。

理想情况下,我正在寻找一种不涉及 node.jsnpm 的解决方案,因为程序将在我无法安装任何东西的计算机上运行。

最佳答案

以防万一有人遇到我遇到的同样问题:Excel 不计算公式结果的原因是我必须启用编辑。事实上,由于文件是从网页下载的,所以这些都被自动禁用了。 只需启用编辑即可解决我的问题 - 重新下载文件时也是如此,因为它保持相同的名称。

但是,由于我在这上面花了一些时间并且有人会发现它很有用,如果像我一样你正在使用 SheetJs ( https://unpkg.com/xlsx@0.16.9/dist/xlsx.full.min.js ) 用 js 操作 excel,默认计算设置是写在 var op 中。

关于javascript - 如何通过 Javascript 设置 xlsx 文件的计算模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66608510/

相关文章:

javascript - 设置 S3 和 Node

javascript - 使用纯 jQuery 自定义文件 uploader

excel - 运行时错误 '1004' - 对象“_Global”的方法 'Range' 失败

excel - VBA将Excel电子表格逐行导入Access

java - 使用 XLSX Apache poi 的 Java 临时文件

javascript - 具有单选按钮功能的按钮

php - javascript parseFloat 无法确定输入是否为 float

Excel - 搜索区域中单元格的内容(在两个特定字符串之间)

java - 在java中读取.xlsx

python - Pandas:将多个 DataFrame 导出到多个 xlsx 文件