zoukankan      html  css  js  c++  java
  • XLSX库导入(将excel转为json)和导出 吴小明

    import * as  XLSX from 'xlsx';
    export function getXlsxData(file: any) {
      return new Promise((resolve, reject) => {
        const fileReader = new FileReader();
        fileReader.onload = event => {
          try {
            let data:any = []; // 存储获取到的数据
            const  result  = event.target?.result;
            // 以二进制流方式读取得到整份excel表格对象
            const workbook = XLSX.read(result, { type: 'binary' });
            // 遍历每张工作表进行读取(这里默认只读取第一张表)
            for (const sheet in workbook.Sheets) {
              if (workbook.Sheets.hasOwnProperty(sheet)) {
                // 利用 sheet_to_json 方法将 excel 转成 json 数据
                let sheetJson = XLSX.utils.sheet_to_json(workbook.Sheets[sheet], { defval: '' })
                // console.log("sheetJson>>", sheetJson)
                data = data.concat(sheetJson);
                // break; // 如果只取第一张表,就取消注释这行
              }
            }
            resolve(data);
          } catch (e) {
            // 这里可以抛出文件类型错误不正确的相关提示
            console.log('文件类型不正确');
            reject(e);
          }
        };
        // 以二进制方式打开文件
        fileReader.readAsBinaryString(file);
      })
    }
    
    
    export function downloadXlsx(columns: Array<string>, data: Array<any>, fileName: string) {
      //columns 表头 data文件数据列表 fileName文件名称
      let table = [];
      let obj = {};
      columns.forEach((el, index) => {
        let str = String.fromCharCode(index + 65);
        obj[str] = el
      })
      table.push(obj)
      data.forEach((arr) => {
        let row = {}
        arr.forEach((el: any, index: number) => {
          let str = String.fromCharCode(index + 65);
          row[str] = el
        })
        table.push(row);
      });
    
      //创建book
      let wb = XLSX.utils.book_new();
      //json转sheet
      let ws = XLSX.utils.json_to_sheet(table, { header: Object.keys(obj), skipHeader: true });
    
      //设置列宽
      ws['!cols'] = (new Array(Object.keys(obj).length)).fill({  15 });
    
      //sheet写入book
      XLSX.utils.book_append_sheet(wb, ws, "file");
      //输出
      let name = fileName || "文件下载"
      XLSX.writeFile(wb, name + ".xlsx");
    }
    
    export function formatJson(filterVal: Array<string>, jsonData: Array<any>,) {
      return jsonData.map((v) =>
        v && Object.keys(v).length ? filterVal.map((j) => v[j] || '') : []
      );
    }
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/wuqilang/p/15688508.html
Copyright © 2011-2022 走看看