如何使用节点 js 代码删除 excel 表单元格中的所有空格
How can I remove all the spaces in the cells of excelsheet using nodejs code
我有一个 excel sheet,每个单元格的内容之间有很多空格。我想让那个单元格不受影响,所以我想创建一个相同的副本并删除单元格内容的所有空间。是否可以从 nodejs 代码做?
您可以使用 npm 中的 xlsx
包来做到这一点。
通过节点复制文件
const fs = require('fs');
fs.copyFile('source.xlsx', 'newFile.xlsx', (err) => {
if (err) throw err;
});
使用 xlsx
将文件读取为您喜欢的任何格式(代码简化):
XLSX = require('xlsx');
workbook = XLSX.read('newFile.xlsx', {type: 'binary'});
let worksheet = workbook.Sheets[workbook.SheetNames[0]];
initialData = XLSX.utils.sheet_to_json(worksheet);
console.log('initialData ')
现在您拥有复制文件的第一个工作表 JSON 并且可以执行您喜欢的任何更改。
在每个对象上使用例如 trim
后,您可以将 JSON 写回 Excel 文件
let workbook1 = XLSX.utils.book_new();
let worksheet1 = XLSX.utils.json_to_sheet();
XLSX.utils.book_append_sheet(workbook1, worksheet1, 'WorksheetName');
XLSX.writeFile(workbook1, 'newFile.xlsx');
第一步是可选的,因为您只在 JSON 内部工作,然后复制并编写一个新文件,但我在原始问题中提到了它。
如果您打算删除前导和尾随空格,则此函数应该 trim header 和所有单元格中的空格。
请在将其用于生产之前对其进行全面测试:
function trim_cells(ws) {
var range = XLSX.utils.decode_range(ws["!ref"]);
for (var R = range.s.r; R <= range.e.r; ++R) {
for (var C = range.s.c; C <= range.e.c; ++C) {
var coord = XLSX.utils.encode_cell({ r: R, c: C }),
cell = ws[coord];
if (!cell || !cell.v) continue;
// clean up raw value of string cells
if (cell.t == "s") cell.v = cell.v.trim();
// clean up formatted text
if (cell.w) cell.w = cell.w.trim();
}
}
}
注意 - 以上解决方案可在 GitHub issue.
中找到
有关如何将 excel 工作表(作为参数传递)传递给上述函数的更多信息,请查看 official GitHub link.
我有一个 excel sheet,每个单元格的内容之间有很多空格。我想让那个单元格不受影响,所以我想创建一个相同的副本并删除单元格内容的所有空间。是否可以从 nodejs 代码做?
您可以使用 npm 中的 xlsx
包来做到这一点。
通过节点复制文件
const fs = require('fs');
fs.copyFile('source.xlsx', 'newFile.xlsx', (err) => {
if (err) throw err;
});
使用 xlsx
将文件读取为您喜欢的任何格式(代码简化):
XLSX = require('xlsx');
workbook = XLSX.read('newFile.xlsx', {type: 'binary'});
let worksheet = workbook.Sheets[workbook.SheetNames[0]];
initialData = XLSX.utils.sheet_to_json(worksheet);
console.log('initialData ')
现在您拥有复制文件的第一个工作表 JSON 并且可以执行您喜欢的任何更改。
在每个对象上使用例如 trim
后,您可以将 JSON 写回 Excel 文件
let workbook1 = XLSX.utils.book_new();
let worksheet1 = XLSX.utils.json_to_sheet();
XLSX.utils.book_append_sheet(workbook1, worksheet1, 'WorksheetName');
XLSX.writeFile(workbook1, 'newFile.xlsx');
第一步是可选的,因为您只在 JSON 内部工作,然后复制并编写一个新文件,但我在原始问题中提到了它。
如果您打算删除前导和尾随空格,则此函数应该 trim header 和所有单元格中的空格。
请在将其用于生产之前对其进行全面测试:
function trim_cells(ws) {
var range = XLSX.utils.decode_range(ws["!ref"]);
for (var R = range.s.r; R <= range.e.r; ++R) {
for (var C = range.s.c; C <= range.e.c; ++C) {
var coord = XLSX.utils.encode_cell({ r: R, c: C }),
cell = ws[coord];
if (!cell || !cell.v) continue;
// clean up raw value of string cells
if (cell.t == "s") cell.v = cell.v.trim();
// clean up formatted text
if (cell.w) cell.w = cell.w.trim();
}
}
}
注意 - 以上解决方案可在 GitHub issue.
中找到有关如何将 excel 工作表(作为参数传递)传递给上述函数的更多信息,请查看 official GitHub link.