• 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] || '') : []
      );
    }
  • 相关阅读:
    作业七—“南通大学教务管理系统微信公众号”用户体验分析
    作业6—成绩录入系统设计(第一阶段)
    作业5-需求分析(EX:南通大学成绩录入系统)
    几次接触Collection排序使用总结
    作业4-两人编程<词频统计>
    ACE智能指针
    Buddy Memorry
    子数组和与积
    数字转化为大写(16位以下)
    【阿里巴巴-飞猪旅行-内推】2020年应届实习生招聘
  • 原文地址:https://www.cnblogs.com/wuqilang/p/15688508.html
Copyright © 2020-2023  润新知