Excel表格上传解析与导出

本文介绍了一种使用Node.js实现的Excel文件上传解析及导出的方法。通过npm安装依赖库xlsx,实现了文件的二进制读取、解析并转换为JSON格式数据,同时提供了将数据重新组织并导出为Excel的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下载依赖
npm install xlsx -D

二、Excel表格上传解析
// 上传excel
async handle(ev) {
let file = ev.raw
if (!file) return

  // 读取file的数据
  let data = await this.readFile(file)
  let workbook = xlsx.read(data, { type: "binary" })
  let worksheet = workbook.Sheets[workbook.SheetNames[1]]
  data = xlsx.utils.sheet_to_json(worksheet)

  // 把读取出来的数据变为最后可以传递给服务器的数据
  let arr = []
  data.forEach(item => {
    let obj = {}
    for(let key in this.character) {
      if (!this.character.hasOwnProperty(key)) break
      let v = this.character[key],
          text = v.text,
          type = v.type
      v = item[text] || ''
      type === 'string' ? (v = String(v)) : null
      type === 'number' ? (v = Number(v)) : null
      obj[key] = v
    }
    arr.push(obj)
  });
},
// 把文件进行二进制读取
readFile(file) {
  return new Promise(resolve => {
    let reader = new FileReader()
    reader.readAsBinaryString(file)
    reader.onload = ev => {
      resolve(ev.target.result)
    }
  })
}

三、Excel导出
// 数据导出
exportData() {
let arr = this.list.map(item => {
return {
‘空间编码’: item.title1,
‘空间名称’: item.title2,
‘空间别称’: item.title3,
‘空间类型名称’: item.title4,
‘项目名称’: item.title5,
‘空间位置’: item.title6,
‘楼层名称’: item.title7,
‘朝向’: item.title8,
‘内外’: item.title9,
‘交付日期’: item.title10,
‘是否黏贴二维码’: item.title11,
‘移交日期’: item.title12,
‘是否移交供电局管理’: item.title13,
‘数据状态’: item.title14,
}
})
let sheet = xlsx.utils.json_to_sheet(arr),
book = xlsx.utils.book_new()
xlsx.utils.book_append_sheet(book, sheet, ‘公共空间’)
xlsx.writeFile(book, user${new Date().getTime()}.xls)
console.log(’【arr】:’, arr)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值