vue3采用xlsx库实现上传excel文件,前端解析展示数据(日期转换问题解决)

项目中需要实现点击导入excel文件后前端进行解析,将数据展示在页面上,确认后上传至后台的功能,为了便于用户查看,可将所有已上传至后台的数据重新展示在页面表格中。具体实现步骤如下:

1、下载插件

npm install xlsx --save

2.引入依赖

import * as XLSX from "xlsx"

3.导入功能实现

<template>
  <div class="box">
     <input
         type="file"
         accept=".xls,.xlsx"
         @change="chooseExcel($event)"
          />
    </div>
</template>
<script setup lang="ts">
    function chooseExcel(e: any) {
       const files = e.target.files;
       if (files.length <= 0) {
          return false;
       } 
       else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) {
          ElMessage({
             message: "上传格式不正确,请上传xls或者xlsx格式!",
             type: "error",
          });
          return false;
    }
    // 读取表格数据
    const fileReader = new FileReader();
    fileReader.onload = (ev) => {
       const workbook = XLSX.read(ev.target.result, {
            type: "binary",
            cellDates: true,
       });
       const wsname = workbook.SheetNames[0];
       const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]);
       dealExcel(ws); 
    };
    fileReader.readAsBinaryString(files[0]);
</script>

4.数据处理与转换

(1)实现代码如下:

function dealExcel(ws: any) {
    let exmap = {
       日期: "date",
       编号: "proNo",
       产品名称: "name",
       数量: "count",
    };
    ws.forEach((sourceObj: any) => {
      Object.keys(sourceObj).map((keys) => {
        let newKey = exmap[keys];
        if (newKey) {
           sourceObj[newKey] = sourceObj[keys];
           delete sourceObj[keys];
        }
      });
    });
}

(2)效果如下:

 转换后效果如下:

 5.表格中日期处理

数据处理方法中加一段代码,如下:

 if (ws != null && ws.length > 0) {
    for (var i = 0; i < ws.length; i++) {
      data.arrList.push({
        date: new Date(ws[i].date).toLocaleDateString(),
        proNo: ws[i].proNo,
        name: ws[i].name,
        count: ws[i].count,
      });
    }
  }

注意: 处理前的时间为中国标准时间,若不是可考虑其他方法。转换后的数据展示采用vue3的数据绑定即可实现,此处不进行代码讲解。

欢迎大家留言,谢谢支持!

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
导入Excel文件可以使用xlsx,它可以解析Excel文件并将其转换为JSON格式。以下是一个简单的示例: ```javascript import XLSX from 'xlsx'; // 通过input[type=file]获取用户上传文件 const input = document.querySelector('input[type=file]'); // 读取文件 const reader = new FileReader(); reader.readAsBinaryString(input.files[0]); reader.onload = (event) => { const data = event.target.result; // 将文件内容转换为二进制数组 const workbook = XLSX.read(data, { type: 'binary' }); // 获取第一个Sheet const sheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[sheetName]; // 将Sheet转换为JSON const json = XLSX.utils.sheet_to_json(worksheet); console.log(json); }; ``` 导出Word文件可以使用docx,它可以创建和编辑Word文档。以下是一个简单的示例: ```javascript import { Document, Packer, Paragraph, TextRun } from 'docx'; // 创建一个新的文档 const doc = new Document(); // 添加段落 const paragraph = new Paragraph(); paragraph.addRun(new TextRun('Hello World')); doc.addParagraph(paragraph); // 将文档转换为二进制数组 const packer = new Packer(); const buffer = await packer.toBuffer(doc); // 下载文件 const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'example.docx'; document.body.appendChild(link); link.click(); document.body.removeChild(link); ``` 以上是简单的示例,具体实现需要根据需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值