如何解决如何使用javascript将excel中的工作表另存为新的excel文件
一个包含两个工作表的 Excel 文件(TAB1、TAB2)。
如何将下面的 excel 中的“TAB1”保存为一个新的 Excel 文件,比如 tab1.xlsx?
我正在尝试使用 exceljs 解决它,但不确定如何将其另存为新文件。如果在 exceljs 的帮助下无法完成,请提出任何其他方法来完成此任务。
const ExcelJS = require('exceljs');
const wb = new ExcelJS.Workbook();
//const newwork = new ExcelJS.Workbook();
filename = "abc.xlsx";
const fl = async () => {
wb.xlsx.readFile(filename)
.then(async function () {
wb.eachSheet(async function (worksheet,sheetId) {
console.log("worksheet",worksheet,"sheetid",sheetId);
if(worksheet.name.toLocaleLowerCase() ==='tab1'){
var data = wb.getWorksheet(worksheet.name);
// how to save worksheet as tab1.xlsx
// let dt =await newwork.xlsx.writeFile('tab1.xlsx',data);
}
});
});
}
fl();
解决方法
我创建了一个不太好的解决方案,尽管它对我有用。基本上,您多次阅读 xlsx,并删除不需要的工作表。这种方式为我保留了格式。
async function excelTest() {
await workbook.xlsx.readFile('test.xlsx').then(async function(){
workbook.eachSheet(async function(worksheet,sheetId) {
let newWorkbook = new exceljs.Workbook();
await newWorkbook.xlsx.readFile('test.xlsx').then(async function(){
newWorkbook.eachSheet(function(newSheet,newSheetId){
if (sheetId != newSheetId) {
newWorkbook.removeWorksheet(newSheetId);
}
});
await newWorkbook.xlsx.writeFile(sheetId + '.xlsx');
});
});
});
}
,
const ExcelJS = require('exceljs');
const sourceWb = new ExcelJS.Workbook();
filename = "abc.xlsx";
const fl = async () => {
sourceWb.xlsx.readFile(filename)
.then(async function() {
sourceWorksheet = sourceWb.getWorksheet('tab1');
var targetWorkbook = new Excel.Workbook;
var targetSheet = targetWorkbook.addWorksheet('newtab');
targetSheet.model = Object.assign(sourceWorksheet.model,{
mergeCells: sourceWorksheet.model.merges
});
targetSheet.name = 'newtab';
targetWorkbook.xlsx.writeFile('target.xlsx');
});
}
你可以试试model.merges
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。