Vue引入XLSX库,调用XLSX.read方法报错

报错信息:Error: Cannot read properties of undefined(reading ‘read’) at reader.onload
解决方案:将引入方式 import XLSX from “xlsx”改为import * as XLSX from “xlsx/xlsx.mjs”

Vue3中使用xlsx.js操作Excel文件时,如果你想向已有表格插入新列,可以按照以下步骤进行: 1. 首先,你需要安装`xlsx`以及`vue-xlsx`这个轻量级的Vue封装,以便在组件中更方便地处理Excel数据。你可以通过npm或yarn进行安装: ```bash npm install xlsx vue-xlsx # 或者 yarn add xlsx vue-xlsx ``` 2. 在你的Vue组件中,引入并初始化xlsx模块,并读取现有的Excel文件: ```javascript import XLSX from 'xlsx'; export default { data() { return { workbook: {}, }; }, async mounted() { const file = this.$refs.file; // 假设你有一个file输入元素 if (file.files.length > 0) { const fileContent = await new Promise((resolve) => { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.readAsArrayBuffer(file.files[0]); }); const { SheetNames, Sheets } = XLSX.read(fileContent, { type: 'binary' }); this.workbook = XLSX.utils.book_new(); for (const sheetName of SheetNames) { XLSX.utils.sheet_add_data(this.workbook, XLSX.utils.json_to_sheet(Sheets[sheetName])); } } }, } ``` 3. 现在你已经有了工作簿对象,接下来可以在`methods`中定义一个函数来添加新列: ```javascript methods: { addNewColumn(columnName, columnIndex) { // columnIndex是从左往右开始计数的,例如0表示第一列 const newColData = new Array(this.workbook.Sheets[Object.keys(this.workbook.Sheets)[0]].data.length).fill(null); // 创建全空数组作为新列 // 将新列数据添加到所有sheet中 for (const sheetName in this.workbook.Sheets) { const sheet = this.workbook.Sheets[sheetName]; const ws = XLSX.utils.aoa_to_sheet(sheet.data); ws[columnIndex] = newColData; const updatedSheet = XLSX.utils.sheet_to_json(ws); this.workbook.Sheets[sheetName] = XLSX.utils.json_to_sheet(updatedSheet); } }, }, ``` 4. 调用`addNewColumn`函数并传入新列名和位置: ```javascript this.addNewColumn('New Column Title', 5); // 假设你想在第6列插入新列,索引从0开始 // 更新工作簿的数据 XLSX.writeFile(this.workbook, 'output.xlsx'); ``` 现在你应该能看到新列已成功插入到Excel表格中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值