JS xlsx 数据导出/导入excel文件格式

技术栈:JavaScript + xlsx.js

简介

在做后端开发管理实际业务开发中,有时会遇到处理导入、导出Excel文件的数据,比如多语言管理和报表数据。
将前端数据中对象数组格式的数据与excel格式数据进行相互转换。
既然时对 Excel 文件进行处理,自然需要插件了,比如 xlsx 。
于是,进行简单demo的实现与演示。

实现

安装

安装 xlsx

npm install xlsx --save
# or
yarn add xlsx

导出Excel文件数据

导出需要先获取到指定数据,然后对数据进行处理成合适的数据(即常规的列表数据),最后才是转换成 Excel 。
如本身是列表数据,可以对数据结构不进行处理,仅取需要导出的数据。

import XLSX from 'xlsx';

/** 将列表数据过滤出需要导出的属性 */
// objArr - 列表数据,labels - 需要导出的属性
const toBeExcelData = (objArr, labels) => {
  const resArr = []
  objArr.forEach((itemData) => {
    const theObj = {}
    const keys = Object.keys(itemData)
    keys.forEach((theKey) => {
      if (labels.includes(theKey)) theObj[theKey] = itemData[theKey]
    })
    resArr.push(theObj)
  })
  return resArr
}

/** 将数据转成 Excel 文件并导出 */
const exportToExcel = (data) => {
  const worksheet = XLSX.utils.json_to_sheet(data);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); // 表名
  XLSX.writeFile(workbook, "exported-data.xlsx"); // 文件名,可加上文件路径
}

导入Excel文件数据

这里,就开始实现 Excel 文件数据导入了。
导入这里就比较简单了,利用插件的函数进行获取数据和格式转换就可以了。

import XLSX from 'xlsx'

/** 获取excel数据并解析 */
const getExcelData = (url) => {
  const workBook = XLSX.readFile(url) // 目标文件获取
  let name = workBook.SheetNames[0] // 读取表格中第一个表
  let sheet = workBook.Sheets[name] // 数据获取
  return XLSX.utils.sheet_to_json(sheet) // 数据格式转换
}

应用

导出

示例代码

// 列表数据
const demoData = [
  { name: '122', age: '24e', state: true, date: '20231227', address: 'asdfgfgg' },
  { name: '2233', age: '23', state: false, date: '20231225', address: 'zxcv' },
  { name: '3344', age: '22', state: true, date: '20231226', address: 'vbnmz' },
  { name: '678', age: '21', state: false, date: '20231224', address: '23svvcx' },
  { name: '3322', age: '24', state: true, date: '20231221', address: 'wdvggtr' },
  { name: '2266', age: '42', state: false, date: '20231223', address: 'igbxsxx' }
]

// 需导出的字段
const demoLabels = ['name', 'state', 'date','address']

const testDemo = () => {
  const data = toBeExcelData(demoData, demoLabels); // 数据过滤
  exportToExcel(data); // 导出
}
testDemo(); // 执行

效果

在这里插入图片描述

导入

示例代码

这里就用刚刚导出的excel文件进行导入并输出。

let resData = getExcelData('./exported-test.xlsx') // excel数据
console.log('input data: ', resData);

效果

在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值