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 }

  • 相关阅读:
    鼠标滚动倾斜分割切换
    表格数据模糊搜索
    简单三级联动
    整屏切换特效
    滚动条滑至底部自动加载内容
    使用鼠标滚轮或者手势滑动到页面节点部分
    ajax 跨域前后端实现
    ajax 跨域解决方案
    php stdClass Object 解析
    Git 设置仓库指定忽略的文件
  • 原文地址:https://www.cnblogs.com/dhjy123/p/15477158.html
Copyright © 2011-2022 走看看