zoukankan      html  css  js  c++  java
  • exceljs xlsx 前端生成excel 和解析excel (二)

    import Excel from 'exceljs';
    
    const arrayToSheet = (sheets, file_name) => {
        var workbook = new Excel.Workbook();
        sheets.forEach(({ sheet_name, data, merges, styles }, index) => {
            var sheet = workbook.addWorksheet(sheet_name || `sheet_${index}`);
            sheet.addRows(data);
            if(merges) {
                merges.forEach(merge => {
                    sheet.mergeCells(merge);
                })
            }
            if(styles) {
                var styleMap = [
                    ['columns', 'column', 'getColumn'],
                    ['rows', 'row', 'getRow'],
                    ['cells', 'cell', 'getCell']
                ];
                styleMap.map(([k, i, a]) => {
                    if(styles[k]) {
                        styles[k].forEach(s => {
                            Object.keys(s.style).map(key => {
                                if(Array.isArray(s[i])) {
                                    if(i === 'cell') {
                                        s[i].forEach(c => {
                                            sheet[a](c)[key] = s.style[key];
                                        })
                                    }
                                    else {
                                        let [_s, _e] = s[i];
                                        for(let _i = _s; _i <= _e; _i ++) {
                                            sheet[a](_i)[key] = s.style[key];
                                        }
                                    }
                                }
                                else {
                                    sheet[a](s[i])[key] = s.style[key];
                                }
                            })
                        })
                    }
                })
            }
        })
        workbook.xlsx.writeBuffer({ base64: true })
        .then(buffer => {
            var blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
            var a = document.createElement('a');
            a.href = URL.createObjectURL(blob);
            a.download = `${file_name}.xlsx`;
            a.click();
            var dispose = () => URL.revokeObjectURL(blob);
            setTimeout(dispose, 100);
        })
    };
    
    export { arrayToSheet }

  • 相关阅读:
    2015年个人记录
    Win10如何新建用户怎么添加新账户
    快速搭建一个本地的FTP服务器
    天气接口
    一张图搞定OAuth2.0
    PHP TS 和 NTS 版本选择
    如何在 Laravel 中使用 SMTP 发送邮件(适用于 163、QQ、Gmail 等)
    Npm vs Yarn 之备忘详单
    浅谈CSRF
    值得看的cookie详解
  • 原文地址:https://www.cnblogs.com/dhjy123/p/15477158.html
Copyright © 2011-2022 走看看