视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用js-xlsx之合并单元格
2020-11-27 20:01:18 责编:小采
文档
这次给大家带来如何使用如何使用s-xlsx之合并单元格,使用s-xlsx之合并单元格的注意事项有哪些,下面就是实战案例,一起来看一下。

导入数据观察数据格式

1.1.我们先创建一个具有合并单元格的xlsx表格

就以表头数据合并示例吧:

示例

1.2.写个简单的数据导入功能(你可以参考前言中的文章编写,我就不放代码了)

导入xlsx参考数据格式:

示例

1.3.查看官网说明

官网示例(http://sheetjs.com/demos/modify.html):

官网示例

根据官网说明我们简单看出合并单元格的数据格式是:

........
data["!merges"] = [{
 s: {//s为开始
 c: 1,//开始列
 r: 0//可以看成开始行,实际是取值范围
 },
 e: {//e结束
 c: 4,//结束列
 r: 0//结束行
 }
 }];
........

2.动手实验

2.1.写个简单的导出demo

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <title></title></head><body>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
 <!--调用FileSaver saveAs函数可以实现文件下载-->
 <!--<script src="http://sheetjs.com/demos/Blob.js"></script>
 <script src="http://sheetjs.com/demos/FileSaver.js"></script>-->
 <script>
 //如果使用 FileSaver.js 就不要同时使用以下函数
 function saveAs(obj, fileName) {//当然可以自定义简单的下载文件实现方式 
 var tmpa = document.createElement("a");
 tmpa.download = fileName || "下载";
 tmpa.href = URL.createObjectURL(obj); //绑定a标签
 tmpa.click(); //模拟点击实现下载
 setTimeout(function () { //延时释放
 URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL
 }, 100);
 } var jsono = [{ //测试数据
 "id": 1,//A
 "合并的列头1": "数据11",//B
 "合并的列头2": "数据12",//C
 "合并的列头3": "数据13",//D
 "合并的列头4": "数据14",//E
 }, { "id": 2, "合并的列头1": "数据21", "合并的列头2": "数据22", "合并的列头3": "数据23", "合并的列头4": "数据24",
 }];//....
 const wopts = { bookType: 'xlsx', bookSST: true, type: 'binary' };//这里的数据是用来定义导出的格式类型 
 function downloadExl(data, type) { var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} }; //wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(data);//通过json_to_sheet转成单页(Sheet)数据
 data = XLSX.utils.json_to_sheet(data); 
 data["B1"] = { t: "s", v: "asdad" };
 data["!merges"] = [{//合并第一行数据[B1,C1,D1,E1]
 s: {//s为开始
 c: 1,//开始列
 r: 0//开始取值范围
 }, e: {//e结束
 c: 4,//结束列
 r: 0//结束范围
 }
 }];
 wb.Sheets['Sheet1'] = data;
 saveAs(new Blob([s2ab(XLSX.write(wb, wopts))], { type: "application/octet-stream"}), "这里是下载的文件名" + '.' + (wopts.bookType == "biff2" ? "xls" : wopts.bookType));
 } function s2ab(s) { if (typeof ArrayBuffer !== 'undefined') { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf;
 } else { var buf = new Array(s.length); for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF; return buf;
 }
 } </script>
 <button onclick="downloadExl(jsono)">导出</button></body></html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

如何使用s-xlsx实现Excel 文件导入和导出(下)

如何使用s-xlsx实现Excel 文件导入和导出(上)

下载本文
显示全文
专题