使用SheetJS导出到现有xlsx时sheet_add_json传参报错如何解决?
错误原因
XLSX.utils.sheet_add_json 方法的设计用途是往已存在的工作表对象中追加JSON数据,第一个入参要求为XLSX.WorkSheet类型,你传入的字符串'test'不符合类型要求,因此触发类型报错。
解决方案
根据你的实际使用场景选择对应实现方式:
- 如果你需要新建工作表写入JSON数据,替换为
XLSX.utils.json_to_sheet方法即可,完整逻辑参考:
public exportInExcelFile(json: any[], excelFileName: string): void { // 直接从JSON生成新工作表 const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json); const workbook = XLSX.utils.book_new(); // 第三个参数为工作表名称,可自定义为你需要的'test' XLSX.utils.book_append_sheet(workbook, worksheet, 'test'); // 后续执行导出文件逻辑即可 XLSX.writeFile(workbook, excelFileName + '.xlsx'); }
- 如果你确实需要往现有xlsx文件的已有工作表里追加数据,先读取到对应工作表对象再传入,示例逻辑:
public exportInExcelFile(json: any[], excelFileName: string): void { // 先读取本地已有的xlsx文件 const existingWorkbook = XLSX.readFile('你的现有文件路径.xlsx'); // 拿到名称为'test'的已有工作表对象 const existingWorksheet = existingWorkbook.Sheets['test']; // 往已有工作表追加数据,origin: -1 表示从现有数据末尾开始追加,skipHeader表示不重复写表头 XLSX.utils.sheet_add_json(existingWorksheet, json, { skipHeader: true, origin: -1 }); // 导出更新后的文件 XLSX.writeFile(existingWorkbook, excelFileName + '.xlsx'); }
内容的提问来源于stack exchange,提问作者ahmed
相关产品推荐
相关产品推荐

