下载exceljs并引入

数据源格式:二维数组,null值是后面要合并单元格的,占个位置。

//创建对象

var wb = new ExcelJS.Workbook();

//创建一个名称为Sheet1的sheet页,并填充背景色为红色
var ws = wb.addWorksheet("Sheet1", { properties: { tabColor: { argb: 'FFFFFF' } } });

//将数据源添加到sheet页中

ws.addRows(data);

//设置默认单元格样式

var style = {
        fill: { //背景色填充
            type: 'gradient',
            gradient: 'angle',
            degree: 0,
            stops: [
                { position: 0, color: { argb: 'FFAFEEEE' } },//单元格渐变色(左) 
                { position: 0.5, color: { argb: 'FFAFEEEE' } },//单元格渐变色(中)
                { position: 1, color: { argb: 'FFAFEEEE' } }//单元格渐变色(右)
            ]
        },
        font: {
            name: '宋体',
            size: 11,
            bold: false,
        },
        alignment: {
            vertical: 'middle',
            horizontal: 'center',
            wrapText: false,
        },
        border: {
            top: {
                style: "thin",
            },
            bottom: {
                style: "thin",
            },
            left: {
                style: "thin",
            },
            right: {
                style: "thin",
            },
        },
    }

//设置单元格样式  (cellName:'A1')

ws.getCell(cellName).style = style;

//合并单元格 (将cellName1至cellName2的单元格合并)

//单元格样式与合并单元格都需要每个单元格单独设置,如果较多可以创建数组,遍历设置。

ws.mergeCells(cellName1, cellName2);

//查找重复的内容,自动合并单元格(仅限纵向合并)

//例子:MergeColumn(ws, 1, 0, ws._rows.length); 将A列重复的文字合并
    function MergeColumn(sheet, StartRowNum, ColumnIndex, LastRowNum) {
        var rowNum = 0; //初始化为数字,便于计算
        for (var i = StartRowNum; i < LastRowNum + 1; i++) {
            var startCellName = getColumnNameByIndex(ColumnIndex) + i;
            var startValue = sheet.getCell(startCellName).value;
            for (var k = i + 1; k < LastRowNum + 1; k++) {
                var currCellName = getColumnNameByIndex(ColumnIndex) + k;
                var currValue = sheet.getCell(currCellName).value;
                if (startValue != currValue) {
                    if (k != i + 1) {
                        //合并到前一个单元格
                        rowNum = k - 1;
                        var preCellName = getColumnNameByIndex(ColumnIndex) + rowNum;
                        sheet.mergeCells(startCellName, preCellName);
                        i = k - 1; //从k开始继续
                    }
                    break;
                } else if (k == LastRowNum) {
                    //连同最后一行合并
                    sheet.mergeCells(startCellName, currCellName);
                    //sheetMerge.push({ s: { r: i, c: ColumnIndex }, e: { r: LastRowNum, c: ColumnIndex } });
                    i = LastRowNum; //结束外层循环
                    break;
                }
            }
        }
    }

//Excel/Sheet根据索引输出列名
    function getColumnNameByIndex(i) {
        var result = String.fromCharCode('A'.charCodeAt() + i % 26);

while (i >= 26) {
            i /= 26;
            i--;
            result = String.fromCharCode('A'.charCodeAt() + i % 26) + result;
        }
        return result;
    }

//导出excel
    function saveAs(blob, fileName) {
        //生成一个a标签
        var a = document.createElement('a');
        a.style.display = 'none';
        a.download = fileName;
        a.id = "aexport";
        //生成一个label标签,用于触发a标签点击事件
        var lb = document.createElement('label');
        lb.
            for = "aexport";
        a.appendChild(lb);
        //创建一个URL对象,指向Blob对象
        var objectURL = window.URL.createObjectURL(blob);
        a.href = objectURL;

//把a标签加入body
        document.body.appendChild(a);
        //触发a标签点击事件
        lb.click();
        //IE不支持createObjectURL,特殊处理
        if (_isIE()) {
            window.navigator.msSaveOrOpenBlob(blob, fileName);
        }
        //删除a标签
        document.body.removeChild(a);
        //回收内存
        URL.revokeObjectURL(objectURL);
    }

导出效果图:

ExcelJs导出Excel文件并设置单元格样式相关推荐

  1. POI:java导出excel,java设置单元格公式,求和

    POI:java设置单元格公式,求和 java导出excel,之前写过全量导出,但是有时候报表中需要汇总,或者其他公式的数据. 这里就需要对单元格的格式调整,设置公式 主要代码 //给单元格设置公式 ...

  2. POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决

    //创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...

  3. easyexcel导出excel文件合并相同单元格数据

    1.引入easyexcel依赖 !-- 阿里开源easyexcel--><dependency><groupId>com.alibaba</groupId>& ...

  4. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  5. js vue 设置excel单元格样式_vue+elementui 项目纯前端Export2Excel导出excel,并利用xlsx-style设置单元格样式...

    1 /*eslint-disable*/ 2 require('script-loader!file-saver');3 require('./Blob.js'); //blob.js也是网上找的,下 ...

  6. java导出excel 复杂的 合并单元格

    导出excel 复杂的 合并单元格 private void exportExcel(List<IuDocStatisticsExcelVo> iuDocStatisticsVos, St ...

  7. 使用poi导出excel,及合并单元格边框显示问题

    使用poi导出excel,及合并单元格边框显示问题. 首先创建workbook.sheet HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet s ...

  8. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

  9. Java POI导出Excel时,合并单元格没有边框的问题

    今天用POI导出Excel的时候,发现导出的单元格确少边框,最后发现有2个方案可以解决. 方案一 CellRangeAddress的4个参数分别表示:起始行号,终止行号, 起始列号,终止列号 // 使 ...

最新文章

  1. Linux服务器日志备份到本地
  2. R语言rep函数重复向量或者列表元素实战
  3. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
  4. vm_comcat报错 - 数字或值错误 : 字符串缓冲区太小
  5. 导师没项目怎么办?不如看看这些
  6. Mr.J--谈谈CSS和Html(font)
  7. python colormap_Python科学计算技巧积累八——colormap 和 contour map的绘制
  8. 通用业务平台设计(二):扩展多国家业务
  9. day25,多继承,组合,接口,抽象类和鸭子型
  10. 关于NTRIP、RTCM、NMEA的学习
  11. Lasergene DNASTAR 8.1.3 特别版 Mac 专业的医学生物综合性序列分析工具
  12. Silverlight4启动无法调试
  13. Python中神奇的迭代器和生成器
  14. 联想thinkpad待机怎么唤醒_笔记本睡眠怎么唤醒【步骤介绍】
  15. 全球及中国3,4-二氯异噻唑-5-羧酸行业研究及十四五规划分析报告
  16. 电机设计--主要参数
  17. hdu - 1789 题解
  18. 博客园及相关学习地址收录
  19. 一文解析霍尔效应传感器
  20. 在大同哪里打印文件资料的价格比较便宜些

热门文章

  1. 红绿灯的html代码,红绿灯.html
  2. good site for studing English
  3. linux键盘触摸板失灵,linux 中屏幕合上后触摸板无法使用
  4. 关于交换数组元素的技术帖
  5. 【Proteus仿真】【51单片机】音乐盒电子琴设计
  6. python获取cpu温度_如何获得树莓派CPU实时温度值
  7. MySQL单表膨胀优化之MyCat分库分表
  8. android framelayout 高度,Android SupportLib – FrameLayout在CoordinatorLayout中与AppBarLayout消耗整个屏幕高度...
  9. 鸿蒙十大凶兽排名,上古十大神兽|上古十大洪荒神兽|上古十大神兽资料大全【图文】...
  10. Java EE系列(九)——Java EE连接Mysql数据库(JDBC保姆级教学)