vue怎么实现excel表格的导入导出

工具使用   发布日期:2025年01月18日   浏览次数:384

这篇文章主要介绍“vue怎么实现excel表格的导入导出”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现excel表格的导入导出”文章能帮助大家解决问题。

一、下载xlsx插件

  1. npm i xlsx

二、通过element-ui组件的upload组件上传文件

  1. <el-upload
  2. class="upload-demo"
  3. action //必选参数,上传的地址,这里我们不写地址自定义上传
  4. accept=".xlsx,.xls" //文件类型
  5. :auto-upload="false" //是否在选取文件后立即进行上传
  6. :show-file-list="false" //是否显示已上传文件列表
  7. :on-change="handleChange" //文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
  8. >
  9. <el-button type="primary">选择文件</el-button>
  10. </el-upload>

三、把选择的Excel文件把文件内容转化为二进制

  1. //把二进制文件进行读取
  2. export function readFile(file) {
  3. return new Promise((resolve, reject) => {
  4. // FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件.
  5. let reader = new FileReader();
  6. // 异步按字节读取文件内容,结果为文件的二进制串
  7. reader.readAsBinaryString(file);
  8. reader.onload = (ev) => {
  9. resolve(ev.target.result);
  10. };
  11. });
  12. }

四、通过插件中的xlsx.read()读取二进制数据

  1. //选择文件
  2. const handleChange = async function (e) {
  3. const file = e.raw; //选择的文件内容
  4. let data = await readFile(file); //将内容转化为二进制
  5. let workbook = xlsx.read(data, { type: "binary" }); //通过插件读取二进制数据 binary二进制
  6. }

五、通过xlsx.utils.sheet_to_json()把表格一中的数据转化为JSON格式

  1. //表格目录一中的数据
  2. let worksheet = workbook.Sheets[workbook.SheetNames[0]];
  3. //把数据转化为json数据格式
  4. data = xlsx.utils.sheet_to_json(worksheet);

六、把读取的JSON数据转化为可以传递给服务器的数据

  1. //把读取的数据变为最后可以传递给服务器的数据(所在地=>address,学校名称=>shcoolName......)
  2. let arr = [];
  3. data.forEach((item) => {
  4. let obj = {};
  5. for (let key in character) {
  6. // hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)
  7. // 即使属性的值是 null 或 undefined,只要属性存在,hasOwnProperty 依旧会返回 true。
  8. // 判断是否有规定的属性没有就终止执行
  9. if (!character.hasOwnProperty(key)) break;
  10. let v = character[key],
  11. text = v.text,
  12. type = v.type;
  13. v = item[text] || "";
  14. //将数据转化为对应的数据类型 不符合的话不做操作
  15. type === "string" ? (v = String(v)) : null;
  16. type === "number" ? (v = Number(v)) : null;
  17. obj[key] = v;
  18. }
  19. arr.push(obj);
  20. });
  21. //给用户一点延迟
  22. await delay(100);
  23. //将导入数据展示到页面中
  24. result.tableData = arr;

导出

  1. // 1.把数据转化为表格名称对应
  2. let arr = result.tableData.map((item) => {
  3. return {
  4. 办学层次: item.levels,
  5. 备注: item.message,
  6. 学校名称: item.schoolName,
  7. 所在地: item.address,
  8. };
  9. });
  10. //2.用于将 JSON 数据转换为 Excel 工作表中的单元格数据。
  11. let sheet = xlsx.utils.json_to_sheet(arr);
  12. //3.用于创建一个新的 Excel 工作簿对象它返回一个空白的工作簿,可以向其中添加工作表和单元格数据。
  13. let book = xlsx.utils.book_new();
  14. //4.用于向现有的 Excel 工作簿对象(Workbook)中添加一个新的工作表
  15. // book_append_sheet(wb, sheet, name=None)
  16. //参数wb是要将工作表添加到的 Workbook 对象;sheet 参数是要添加的 Worksheet 对象;name 参数是要为工作表指定的名称(如果未指定,则使用默认名称)
  17. xlsx.utils.book_append_sheet(book, sheet, "sheet1");
  18. //5.用于将 Excel 工作簿下载到本地文件系统中 book要下载的Eceial表格,第二个参数是表格名称
  19. xlsx.writeFile(book, `user${new Date().getTime()}.xls`);

以上就是vue怎么实现excel表格的导入导出的详细内容,更多关于vue怎么实现excel表格的导入导出的资料请关注九品源码其它相关文章!