element 】使用xlsx、FileSaver实现导出
时间: 2023-12-26 15:03:33 浏览: 64
要使用 `xlsx` 和 `FileSaver` 实现导出,需要先安装这两个库,可以使用 `npm` 进行安装:
```shell
npm install xlsx file-saver --save
```
然后在代码中引入这两个库:
```javascript
import XLSX from 'xlsx';
import { saveAs } from 'file-saver';
```
接下来,假设我们有一个数组 `data`,我们想将它导出为 Excel 文件,可以按如下方式编写代码:
```javascript
// 创建一个工作簿
const wb = XLSX.utils.book_new();
// 创建一个工作表
const ws = XLSX.utils.json_to_sheet(data);
// 将工作表添加到工作簿中
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿转换为二进制对象
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制对象转换为 Blob 对象
const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 使用 FileSaver 将 Blob 对象保存为 Excel 文件
saveAs(blob, 'data.xlsx');
// 将字符串转换为 ArrayBuffer 对象
function s2ab(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for (let i = 0; i < s.length; i++) {
view[i] = s.charCodeAt(i) & 0xff;
}
return buf;
}
```
以上代码将数组 `data` 导出为名为 `data.xlsx` 的 Excel 文件。其中,`s2ab` 函数将字符串转换为 `ArrayBuffer` 对象,因为 `Blob` 对象需要的是 `ArrayBuffer` 对象。
注意:以上代码中的 `saveAs` 函数来自于 `FileSaver` 库,该函数用于将 `Blob` 对象保存为文件。
阅读全文