vue +xlsx+exceljs 导出excel文档

实现功能:分标题行导出数据过多,一个sheet表里表格条数有限制,需要分sheet显示。

步骤1:安装插件包

npm install exceljs

npm install xlsx

步骤2:引用包

    import XLSX from 'xlsx';
    import ExcelJS from 'exceljs';

步骤3:举例按关键代码说明

//通用方法
async xlsxExport(titles,columns,data,pageSize)
		{
				let workbook = new ExcelJS.Workbook();				
				let pageNo = Math.ceil(data.length*1.0/pageSize);
				for(var p=0;p<pageNo;p++)
				{
                  //创建Sheet表
				  const worksheet = workbook.addWorksheet('Sheet'+(p+1));				  
				  
				  for(let t=1;t<=titles.length;t++)
				  { 
                     //判断单元格是否已合并
				     if(!worksheet.getRow(t).getCell(1).isMerged)
				     {
				     worksheet.mergeCells( t, 0 ,t, columns.length );
					 	  
					 }
                     //合并单元格填充值
					 worksheet.getRow(t).getCell(1).value=titles[t-1];
				
                     //单元格增加样式
					 if(t==1)
				     {
				        worksheet.getRow(t).getCell(1).alignment = { 
				          vertical: 'middle', 
				          horizontal: 'center' 
				        };
						worksheet.getRow(t).getCell(1).font = { bold: true, size: 16 };
				     }
				     else
				     {				
					  
				       worksheet.getRow(t).getCell(1).alignment = {
				         vertical: 'middle', 
				         horizontal: 'left' 
				       };
				     }
				    }
					//填充标题列
					worksheet.addRow(columns);
					let pdata = [];
                    //组织当前sheet的数据结构
					data.forEach(item=>{
						if(item[0]>=p*pageSize && item[0]<=(p+1)*pageSize)
						{
							pdata.push(item);
						}
					});
					worksheet.addRows(pdata);
				  }
					//所有sheet填充完,写入xlsx文件并下载
				      const buffer = await workbook.xlsx.writeBuffer();
				      const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
				      // 创建下载链接
				      const url = URL.createObjectURL(blob);
				      const link = document.createElement('a');
				      link.href = url;
				      link.download = titles[0]+".xlsx";
				      document.body.appendChild(link);
				      link.click();
				      document.body.removeChild(link);
				      URL.revokeObjectURL(url);						
			 
		}

步骤4:举例应用

let str2 = `ROWS,A,B,C`;
let titles=["excel导出实例",`当前日期:${this.currTime}];
let columns=["序号","A对应的列标题","B对应的列标题","C对应的列标题"];
let data =[{[对应str2的值]},{[对应str2的值]}];//对应数据值
let pageSize = 1000;//对应sheet表显示条数
await this.xlsxExport(titles,columns,data,pageSize);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值