• 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 }

  • 相关阅读:
    简单测试
    纸玫瑰
    Java 字符串编码 (保存成txt测试)
    创建 Filter
    jee中文名图片+tomcat ==> 中文乱码的另类处理(未成功)
    dom4j_01_02
    dom4j_01_01
    Java 字符串编码
    websocket

  • 原文地址:https://www.cnblogs.com/dhjy123/p/15477158.html
Copyright © 2020-2023  润新知