Excel 导入导出(前端处理:xslx)(后端处理:hutool+poi || Easy Excel )

 

目录

Excel 导入导出(前端处理:xslx)

代码示例

导入Excel数据

将数据封装好后传给后端 

导出数据

预览(vue-office/excel"……;docx-preview)

Excel 导入导出(后端处理:hutool+poi || Easy Excel )

前端

后端使用Hutool处理Excel 文件

Hutool-poi是针对Apache POI的封装,因此需要用户自行引入POI库

导入

如何给导出的excel表头设置中文?

 list里的对象有键值对,键为表头,值为表头下的内容


一、Excel 导入导出(前端处理:xslx)

  1. 调用文件对象的 arrayBuffer 方法读取文件,然后使用 xslx.read 方法解析数为 Excel 工作簿对象  
  2. readAsBinaryString readAsArrayBufferFileReader 对象的两种不同读取文件的方式:
  • 创建 FileReader 对象。使用FileReader 对象的读取文件方法readAsBinaryString ,将文件读取为二进制字符串;或使用 readAsArrayBuffer 方法会将文件读取为二进制数据缓冲区,即ArrayBuffer对象。
  • 再使用 xslx.read 方法解析数据为 Excel 工作簿对象    

   3.下图为Excel 工作簿对象实例:

代码示例
导入Excel数据
const reader = new FileReader()
reader.readAsBinaryString(file)
reader.onload = function (e) { 
    const data = e.target.result
    let wb = XLSX.read(data, {//Excel 工作簿对象,打印如上
        type: 'binary'
    })
}


const reader = new FileReader()
reader.readAsArrayBuffer(file)
reader.onload = function (e) {
    const data = e.target.result
    let wb = XLSX.read(data, {
        type: 'array'
    })
}
  1. 创建 FileReader 对象。
  2. 使用FileReader 对象的读取文件方法readAsBinaryString ,将文件读取为二进制字符串。

(使用 readAsArrayBuffer 方法会将文件读取为二进制数据缓冲区,即ArrayBuffer对象

  1. 设置 onload 回调函数,该函数在文件读取成功后触发。
  2. 在回调函数中,通过 e.target.result 获取读取文件成功的结果值,即文件的二进制数据。
  3. 使用 XLSX.read 方法解析二进制字符串ArrayBuffer对象为 Excel 工作簿对象

type: 'binary' 表示解析的数据类型是二进制字符串;type: 'array'表解析的数据类型是ArrayBuffer对象

  1. 如果提供了回调函数 callback,则调用该函数,并将解析得到的 workbook 对象传递给回调函数。

这个流程适用于在前端处理 Excel 文件,你可以在回调函数中进一步处理 workbook 对象,比如获取工作表、将工作表转换为 JSON 等。

/*

readAsBinaryString readAsArrayBufferFileReader 对象的两种不同读取文件的方式。

readAsBinaryString 方法是过时的

官方推荐使用 readAsArrayBuffer 方法

*/

<input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="handleClick">

let _file = e.target.files[0];//获取input标签里的文件

_file.arrayBuffer().then((res) => {
    const wb = XLSX.read(res);
});

使用 arrayBuffer 方法,更符合现代 JavaScript 异步风格

  1. 获取input标签里的文件
  2. 调用文件对象的 arrayBuffer 方法,该方法返回一个 Promise,该 Promise 在文件数据准备好时解析。
  3. then 方法中,获取解析后的二进制数据 res
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值