首页 > 其他分享 >js处理excel数据

js处理excel数据

时间:2024-02-01 14:59:05浏览次数:17  
标签:XLSX const 处理 fileReader excel js item

借助xlsx实现js读取处理excel数据,并输出excel文件

<input type="file" @change="fn" />
import * as XLSX from 'xlsx'
fn(e){
  let fileObj=e.target.files[0]
  const fileReader=new FileReader()
  fileReader.readAsArrayBuffer(fileObj)
  fileReader.onload=(event)=>{
    const fileData=event.target.result
    const workbook=XLSX.read(fileData,{
      type:'binary'
    })
    const wsname=workbook.SheetNames[0]
    const sheetJson=XLSX.utils.sheet_to_json(workbook.Sheets[wsname])
    const data=[]
    let errindex=0
    for(let item of sheetJson){
      const obj={
        bookNum:item.书号,
        price:item.定价,
        publish:item.出版社
      }
      if(item.商品名称.includes('代替')){
        if(item.商品名称.match(/-\d+\s+(.*)(代替/)){
          obj.name=item.商品名称.match(/-\d+\s+(.*)(代替/)[1].trim()
          if(errindex<5){
            console.log(item.商品名称.match(/-\d+\s+(.*)(代替/))
          }
          if(item.商品名称.match(/(代替(.*)[)|\)]/)){
            obj.cancel=item.商品名称.match(/(代替(.*)[)|\)]/)[1]
          }else{
            obj.err=obj.err+'代替号识别出错'
            console.log('代替号识别出错',errindex+2,item.商品名称)
          }
          
        }else{
          obj.err=obj.err+'商品名称识别错误'
          // console.log('商品名称识别错误行数'+(errindex+2))
          // console.log(item.商品名称)
        }
      }else{
        if(item.商品名称.match(/-\d+(.*)/)){
          if(errindex<5){
            console.log(item.商品名称.match(/-\d+(.*)/)[1])
          }
          obj.name=item.商品名称.match(/-\d+(.*)/)[1].trim()
          obj.cancel=''
        }else{
          obj.err=obj.err+'商品名称识别错误'
          // console.log('商品名称识别错误行数'+(errindex+2))
          // console.log(item.商品名称)
        }
      }
      
      errindex++
      data.push(obj)
    }
    // 新建空workbook,然后加入worksheet
    const ws = XLSX.utils.json_to_sheet(data)
    // 设置每列的列宽,10代表10个字符,注意中文占2个字符
    ws['!cols'] = [
      { wch: 25 },
      { wch: 25 },
      { wch: 25 },
      { wch: 25 },
      { wch: 25 },
      { wch: 40 },
      { wch: 25 },
    ]
    // 新建book
    const wb = XLSX.utils.book_new()
    // 生成xlsx文件(book,sheet数据,sheet命名)
    XLSX.utils.book_append_sheet(wb, ws, '数据详情')
    // 写文件(book,xlsx文件名称)
    XLSX.writeFile(wb, '数据详情终版.xlsx')
  }
}

标签:XLSX,const,处理,fileReader,excel,js,item
From: https://www.cnblogs.com/772330747wh/p/18001189

相关文章

  • 基于MQ的数据处理架构的实践
    思路我的需求是:做一个数据转换中心,但是数据格式各种各样,转换工具各种各样,有的是插件,有的是软件,格式转换耗时不可控可能几分钟。我的思路是:server将转换任务简单包装,发送给MQ。Agent持续获取MQ中任务,然后按照既定的脚本或模板,调用worker进行具体转换。需要注意的是:1.要制定一......
  • jmeter Regular Expression Extractor和JSON Extractor使用
    在Jmete中我们经常遇到需要把当前接口返回内容用于下一个接口请求,应用场景:登录接口返回的cookie或者token等,下面就简单描述一下两种提取器的使用和需要注意的事项:1、RegularExpressionExtractorApplyto:待研究;Fieldtocheck:取值的地方,ReferenceName:取得值后存放值的变量......
  • [stable/nginx-ingress] [emerg] 46#46: bind() to 0.0.0.0:80 failed (13: Permissio
    该报错与nginx的报错是一样的,不同的是发生在kubernetes-ingress场景。使用NginxIngressController时,以Deployment的方式启动POD时会报错。使用的Deployment配置示例:https://github.com/nginxinc/kubernetes-ingress/blob/main/deployments/deployment/nginx-ingress.yaml这......
  • js使用map
     js使用map  getData(){      //调用接口方法      getlistInspectionnum().then(response=>{        console.log("######234#######")        //console.log(response.length)       ......
  • 解决前端JSZip读取压缩包内文件中文名称乱码问题
    1importJSZipfrom"jszip";23functionjszipFile(file){4if(!/\.zip$/i.test(file.name)){5reject(`文件"${file.name}"不是zip文件`);6return;7}89constfileReader=newFileReader();1011//转换文件为Arra......
  • 理解英特尔® 酷睿™ 处理器后缀含义
     外形/功能类型/细分市场后缀经优化/设计面向台式机K高性能,未锁频 Φ需要独立显卡 S特别版 T功耗优化生活方式 X/XE高性能,未锁频移动设备(笔记本电脑和2合1设备)HX最高性能,所有SKU未锁频......
  • 大模型训练、多模态数据处理与融合:从理论到实践
    一、大模型训练大模型是指具有巨大参数量和计算能力的人工神经网络模型,如GPT(GenerativePre-trainedTransformer)系列模型和BERT(BidirectionalEncoderRepresentationsfromTransformers)模型。大模型的训练需要大量的数据和计算资源,同时需要采用合适的优化算法和技术,以提高模型的......
  • Unity3D 帧同步的原理与常用的处理方式详解
    Unity3D是一款广泛应用于游戏开发的跨平台游戏引擎,其帧同步技术是实现多人游戏联机的关键之一。本文将详细介绍Unity3D帧同步的原理以及常用的处理方式,并给出相关的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏......
  • 盘点一个Excel数据分割和explode()实战问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【JethroShen】问了一个Pandas数据处理的问题。问题如下:各位大佬这种情况我怎么处理一下啊?标记的商品内容后后面的数量是一一对应的想把它们铺开。下面是他自己写的代码:jigou_df=pd.read_excel(jigou_path)data={'商......
  • 2024年1月份更新「GIS数据」全国的GeoJSON、shp格式数据下载获取(精确到乡镇街道级)
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......