在vue里使用js-xlsx实现excel导入导出
-
安装
js-xlsx
库: 在Vue项目的根目录下,使用npm或yarn安装xlsx
库:bashnpm install xlsx yarn add xlsx
-
创建导出Excel的函数: 在
src
目录下创建一个新文件excel.js
,并添加以下代码来定义导出Excel的功能:import * as XLSX from "xlsx"; export function exportToExcel(data, filename = "data.xlsx") { const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); XLSX.writeFile(workbook, filename); }
-
在Vue组件中使用导出功能: 在需要添加导出功能的Vue组件中,比如
src/components/ExportButton.vue
,引入exportToExcel
函数,并添加一个按钮来触发导出:<template> <button @click="handleExport">导出数据</button> </template> <script> import { exportToExcel } from "@/excel.js"; export default { data() { return { users: [ { name: "John Doe", age: 30, email: "john.doe@example.com" }, { name: "Jane Smith", age: 25, email: "jane.smith@example.com" }, ], }; }, methods: { handleExport() { exportToExcel(this.users, "users.xlsx"); }, }, }; </script>
-
创建导入Excel的函数: 在
excel.js
文件中继续添加以下代码来定义从Excel文件导入数据的功能:export function importFromExcel(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (event) => { const data = new Uint8Array(event.target.result); const workbook = XLSX.read(data, { type: "array" }); const firstSheet = workbook.Sheets[workbook.SheetNames[0]]; const result = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }); resolve(result); }; reader.onerror = (error) => reject(error); reader.readAsArrayBuffer(file); }); }
-
在Vue组件中使用导入功能: 在需要添加导入功能的Vue组件中,比如
src/components/ImportButton.vue
,引入importFromExcel
函数,并添加一个文件输入框来触发导入:<template> <div> <input type="file" @change="handleFileChange" /> <ul> <li v-for="(user, index) in users" :key="index">{{ user }}</li> </ul> </div> </template> <script> import { importFromExcel } from "@/excel.js"; export default { data() { return { users: [] }; }, methods: { handleFileChange(event) { const file = event.target.files[0]; importFromExcel(file) .then((data) => { this.users = data; }) .catch((error) => { console.error("导入失败", error); }); }, }, }; </script>
评论

React 18的并发渲染确实是个重大改进,我们在项目中已经升级使用,性能提升明显!