当前位置: 首页 > news >正文

Vue 3 实现 Excel 表格解析的完整指南

在现代 web 开发中,数据导入是一个常见的需求,而 Excel 文件作为数据存储的重要格式之一,能够实现 Excel 表格的解析并展示在前端页面上是一项非常实用的功能。本文将详细介绍如何在 Vue 3 项目中使用 ExcelJS 库来解析 Excel 文件,并将数据展示在表格中。

安装依赖库

npm install exceljs

代码实现

模板部分

<template><div class="addBatchTask-func"><div class="title"><h2>Excel 表格解析 Demo</h2></div><div class="but"><a-button @click="handleUpload" type="primary">上传表格</a-button><inputtype="file"ref="fileInput"style="display: none"@change="handleFileChange"accept=".xlsx"/></div><div class="table-box" v-if="data.length > 0"><a-table :columns="columns" :data-source="data" :pagination="false"><template #bodyCell="{ column, record }"><a-buttontype="primary"@click="handleOk(record)"v-if="column.key === 'action'">删除</a-button></template></a-table></div></div>
</template>
<style lang="less" scoped>
.addBatchTask-func {width: 100%;height: 100vh;.table-box {:deep(.ant-table) {background: black;.ant-table-thead {.ant-table-cell {background: #000;color: #fff;font-size: 14px;font-weight: 600;}}}}
}
</style>

 脚本部分

 

<script setup>
import * as ExcelJS from "exceljs";
import { ref } from "vue";const fileInput = ref(null);const data = ref([]);const columns = [{title: "姓名",dataIndex: "name",key: "name",},{title: "年龄",dataIndex: "age",key: "age",},{title: "性别",dataIndex: "sex",key: "sex",},{title: "家庭住址",dataIndex: "address",key: "address",},{title: "操作",key: "action",},
];// 处理上传文件的事件
const handleUpload = () => {const fileInput = document.querySelector('input[type="file"]');console.log(fileInput, "fileInput");fileInput.value = ""; // 重置文件输入字段的值fileInput.click();
};const handleFileChange = async (event) => {data.value = [];const file = event.target.files[0];console.log(file, "file");if (!file) return;try {const reader = new FileReader();reader.onload = async (e) => {if (!e.target || !e.target.result) {reject("File reading failed");return;}const arrayBuffer = e.target.result;const workbook = new ExcelJS.Workbook();await workbook.xlsx.load(arrayBuffer);const worksheet = workbook.getWorksheet(1);worksheet.eachRow({ includeEmpty: false }, (row, rowNumber) => {if (rowNumber > 1) {const rowData = {key: rowNumber.toString(),name: row.getCell(1).value || "",age: row.getCell(2).value || "",sex: row.getCell(3).value || "",address: row.getCell(4).value || "",};console.log(rowData, "rowData");data.value.push(rowData);}});};reader.onerror = (error) => {console.log(error);};reader.readAsArrayBuffer(file);} catch (error) {console.error("Error importing table:", error);}
};
</script>

注意事项和优化建议

  1. 文件格式支持:目前只支持 .xlsx 格式,可以根据需求扩展支持 .xls 等其他格式。

  2. 数据验证和处理:在解析和展示数据时,应考虑添加数据验证逻辑,确保数据的完整性和正确性。

  3. 性能优化:如果处理的 Excel 文件较大,可以考虑分批读取和展示数据,以提高性能。

  4. 错误处理:增加更多的错误处理逻辑,提高用户体验。

相关文章:

  • 【python实用小脚本-79】[HR转型]Excel难民到数据工程师|用Python实现CSV秒转JSON(附HRIS系统对接方案)
  • React从基础入门到高级实战:React 基础入门 - 列表渲染与条件渲染
  • 物联网 温湿度上传onenet
  • GO语言学习(九)
  • 如何在Mac 上使用Python Matplotlib
  • 网络抓包命令tcpdump及分析工具wireshark使用
  • AI架构师的新工具箱:ChatGPT、Copilot、AutoML、模型服务平台
  • Java常用数据结构底层实现原理及应用场景
  • 大文件上传如何做断点续传?(分别使用vue、React、java)
  • Scp命令使用
  • PPP 拨号失败:ATD*99***1# ... failed
  • AOP的代理模式
  • 计算机系统结构1-3章节 期末背诵内容
  • 从逻辑视角学习信息论:概念框架与实践指南
  • 软考 组合设计模式
  • 数据可视化利器 - Grafana 与 Prometheus 联手打造监控仪表盘
  • 【闲聊篇】java好丰富!
  • grafana/loki-stack 设置日志保存时间及自动清理
  • 56 在standby待机打通uart调试的方法
  • 基于 Vue3 与 exceljs 实现自定义导出 Excel 模板
  • 济南网站优化网站/网店推广有哪些方法
  • 网站防劫持怎么做/企业宣传册
  • up网络推广公司/东莞网站建设优化诊断
  • 怎么样做网站 用网站赚钱/广告联盟论坛
  • 建立网站最好的模板/平台推广策划方案
  • 企业所得税怎么收的/深圳seo网站优化公司