首页 > 解决方案 > 将公式从 JavaScript 添加到 CSV 以导入到 Google 表格会导致多列

问题描述

我一直在尝试使用 JavaScript 将下面显示的公式添加到 Google 表格中的单个列中,但由于逗号,它会导致不同的列。

=IF(A2="VALID", B2, 0)

目前,我用来生成 CSV 的代码如下:

var CSVRowDemo = [];
var CSVDemo = 'data:text/csv;charset=utf-8,';
CSVRowDemo.push(['VALID/INVALID', 'Value', 'Check'])
let index = 2;
let check = '"' + '=IF(A'+index+'=\"VALID\"", B'+index+', 0)'.replace(/"/g, '""') + '"';
CSVRowDemo.push(['VALID', '100', check])
CSVRowDemo.forEach(function(rowArray) {
    let row = rowArray.join(',');
    CSVDemo += row + '\r\n';
});

encodedUri = encodeURI(CSVDemo);
link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "Basic.csv");
document.body.appendChild(link);
link.click();

期待看到这样的。(这就是它在 LibreOffice Calc 中的呈现方式。) 期待看到这样的。

而是在 Google 表格中看到它。 而是这样看的。

最接近的答案来自this answer

我试图只使用 Javascript 而不是 NodeJS 或其他库。

任何帮助表示赞赏。

标签: javascriptexcelcsvgoogle-sheetsgoogle-sheets-formula

解决方案


虽然我不确定将创建的 CSV 数据放入 Google 电子表格的方法,但您可以测试以下修改吗?

从:

let check = '"' + '=IF(A'+index+'=\"VALID\"", B'+index+', 0)'.replace(/"/g, '""') + '"';

至:

let check = `"=IF(A${index}=""VALID"", B${index}, 0)"`;

或者

let check = '"=IF(A'+index+'=""VALID"", B'+index+', 0)"';
  • 在我的环境中,我可以确认经过以下修改的 CSV 数据可以导入到 Google 电子表格中。

推荐阅读