使用 ONLYOFFICE 宏向电子表格中导入 CSV 与文本数据
使用 CSV 格式来存储表格类型数据是一种非常常见的实践方式,这也使得 CSV 格式成为了一种十分流行的选项。您可使用 ONLYOFFICE 文档来导入本地 CSV 和 TXT 文件。但是,如果我们想从 Web 端导入这些文件,但又不想去下载的话,该怎么办呢?在本文中,我们将分享一个小技巧。
之前的帖子中我们提到了 ONLYOFFICE 宏。宏是基于 JavaScript 的,所以其通用性不言而喻。本功能将帮助我们对远程 CSV 和 TXT 文件的导入工作进行处理。相信大家已经猜到了:我们将编写另一个宏。
注意!本文中提供的宏仅可在桌面版本的 ONLYOFFICE 文档中使用。
构建宏
首先我们需要获取文件。JavaScript 是 Web 开发的基石,其中内置了所有必要的工具。在本例中,我们将使用 AJAX 请求:
function LoadFile() {
$.ajax({
url: 'your url',
dataType: 'text',
}).done(successFunction);
}
}
现在我们已经获取到了数据,但由于其是原始数据,所以我们还需要对其进行格式化。首先我们将其拆分为行:
function successFunction(data) {
var arrAllRows = data.split(/\r?\n|\r/);
然后获取活动表格:
var oWorksheet = Api.GetActiveSheet();
我们已经将数组数据拆分为了行,现在我们将其进一步拆分为单独的单词:
for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
var rowCells = arrAllRows[singleRow].split(',');
}
接着就是将这些值插入单元格中。为此我们将使用 GetCells 和 SetValue 方法。第一个方法会对范围进行选择,后一个方法可将值插入至选定的单元格中。GetCells 方法可接收两个参数:一个是行号,另一个是列号。为了表示行数和列数,我们将使用 i 和 j 变量并在每次 for 循环中对其进行迭代递增:
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
oWorksheet.GetCells(i,j).SetValue(rowCells[rowCell]);
j = j + 1;
}
i = i + 1;
j = 1;
}
}
最后,为了展示新值,我们需要重新计算整个文档。这里通过实现 Api.asc_calculatemethod 来完成此项工作。其实我们之前在 Air Quality 宏中已经使用过这一方法了。其允许我们每过一定的间隔重新计算传入数据。不过这里我们将移除间隔参数。这样文档将会立即重新计算:
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
});
完整的宏代码如下:
(function() {
function LoadFile() {
$.ajax({
url: 'your url',
dataType: 'text',
}).done(successFunction);
}
function successFunction(data) {
var arrAllRows = data.split(/\r?\n|\r/);
var oWorksheet = Api.GetActiveSheet();
//reference point
var i = 1;
var j = 1;
for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
var rowCells = arrAllRows[singleRow].split(',');
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
oWorksheet.GetCells(i,j).SetValue(rowCells[rowCell]);
j = j + 1;
}
i = i + 1;
j = 1;
}
}
LoadFile();
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
});
})();
现在让我们来运行一下宏,看看效果如何!
这里介绍的宏就是 JavaScript 多功能性的完美展现。同时,其也只是众多 API 方法的可能实现中的一种。我们强烈建议您上手试试,创建自己的脚本。欢迎随时与我们分享您的想法和宏。我们将随时做好与您探讨和合作的准备。祝您的探索之旅一帆风顺!
创建免费的 ONLYOFFICE 账户
在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。