纯前端实现上传下载(后端存取json)xlsx

后端存取json,通过 xlsx 依赖转换
上传:前端通过上传模板文件将上传组件(upload)返回的文本流解析成json数据,传给后端
下载:获取后端json转换成文件格式

下载依赖

npm install xlsx

utils文件夹下新建 excel.js

import { read, utils, writeFile } from 'xlsx'

// 上传 将上传的文本流解析成json
export const readJsonFromFile = (file, callBackFn) => {
  const reader = new FileReader()
  reader.readAsArrayBuffer(file)
  reader.onload = function (e) {
    const workbook = read(e.target.result)
    console.info('excel读取结果:', workbook)
    const firstSheetName = workbook.SheetNames[0]
    const worksheet = workbook.Sheets[firstSheetName]
    // 读取header
    // const data = utils.sheet_to_json(worksheet, {header:1});
    const data = utils.sheet_to_json(worksheet)
    if (callBackFn) callBackFn(data)
  }
}
// 下载,将json转换成文本流输出
export const createFile = (data, header, fileName) => {
  console.info(data)
  let ws
  if (data && header) {
    ws = utils.json_to_sheet(data, { header: header })
  } else if (data) {
    ws = utils.json_to_sheet(data)
  }
  if (ws) {
    const wb = utils.book_new()
    utils.book_append_sheet(wb, ws, 'sheet1')
    writeFile(wb, fileName + '.xlsx')
  }
}

使用

import { readJsonFromFile, createFile } from '@/utils/excel'

// 上传解析
readJsonFromFile(file, (data) => {
	console.info('excel文件导入回调:', data)
}

// 下载 点击触发downloadModal方法
downloadModal(e) {
	/* 内容循环赋值demo */
	
	// 设置文件名
	const modalFileName="货物导入模板"
	// 设置table title
	const modalTitleList="['货物编号', '订货数量']"
	// 设置内容
	const orderList = []
	// rows.forEach((item) => {
	//   const orderInfo = {}
	//   orderInfo[headers[0]] = item.placeOrderNo
	//   orderInfo[headers[1]] = item.placeTypeStr
	//   orderInfo[headers[2]] = item.shopName
	//   orderList.push(orderInfo)
	// })
	
	/* 
	  orderList 内容循环赋值
	  modalTitleList 表头title列表
	  modalFileName 导出的文件名(不加后缀)
	*/
	createFile(orderList, modalTitleList || [], modalFileName)
},
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值