使用 SheetJS 在html 把多个table 导出excel的一个sheet中

使用 SheetJS 在html 把多个table 导出到excel的一个sheet中

使用SheetJS 把html的table 导出到excel

遇到了一个新的需求,就是将多个table 导出excel的一个sheet页中
经过查找 SheetJS api (https://github.com/SheetJS/sheetjs#the-zen-of-sheetjs)后



function create_gap_rows(ws, nrows) {
  var ref = XLSX.utils.decode_range(ws["!ref"]);       // get original range
  ref.e.r += nrows;                                    // add to ending row
  ws["!ref"] = XLSX.utils.encode_range(ref);           // reassign row
}

/* first table */
var ws = XLSX.utils.table_to_sheet(document.getElementById('table1'));
create_gap_rows(ws, 1); // one row gap after first table

/* second table */
XLSX.utils.sheet_add_dom(ws, document.getElementById('table2'), {origin: -1});
create_gap_rows(ws, 3); // three rows gap after second table

/* third table */
XLSX.utils.sheet_add_dom(ws, document.getElementById('table3'), {origin: -1});

发现官方有对sheet 累加 合并 的示例代码
纪录下
希望对有 多个 页面 table 导出到excel的一个sheet 需求的人有所帮助
下面是 写的 利用sheetjs 导出表格内容到excel的代码

先引入js

 <script type="text/javascript"	src="/xlsx/xlsx.full.min.js"></script>

编写

function create_gap_rows(ws, nrows) {
	  var ref = XLSX.utils.decode_range(ws["!ref"]);       // get original range
	  ref.e.r += nrows;                                    // add to ending row
	  ws["!ref"] = XLSX.utils.encode_range(ref);           // reassign row
}
function exportexcel(){
	 var wopts = {
			  raw: true,
			  origin: -1
		   };
//raw: true:解决默认数字科学技术法的问题
	var ws = XLSX.utils.table_to_sheet(document.getElementById('table1'), wopts);
	create_gap_rows(ws, 1); // one row gap after first table
	XLSX.utils.sheet_add_dom(ws, document.getElementById('table2'), wopts);
	create_gap_rows(ws, 1); // three rows gap after second table
	XLSX.utils.sheet_add_dom(ws, document.getElementById('table3'), wopts);
	create_gap_rows(ws, 1); // three rows gap after second table
	XLSX.utils.sheet_add_dom(ws, document.getElementById('table4'), wopts);
	create_gap_rows(ws, 1); // three rows gap after second table
	XLSX.utils.sheet_add_dom(ws, document.getElementById('table5'), wopts);
	create_gap_rows(ws, 1); // three rows gap after second table
	XLSX.utils.sheet_add_dom(ws, document.getElementById('table6'), wopts);
	openDownloadDialog(sheet2blob(ws), '测试导出.xlsx');
}
/**
 * 通用的打开下载对话框方法,没有测试过具体兼容性
 * @param url 下载地址,也可以是一个blob对象,必选
 * @param saveName 保存文件名,可选
 */
function openDownloadDialog(url, saveName)
{
    if(typeof url == 'object' && url instanceof Blob)
    {
        url = URL.createObjectURL(url); // 创建blob地址
    }
    var aLink = document.createElement('a');
    aLink.href = url;
    aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
    var event;
    if(window.MouseEvent) event = new MouseEvent('click');
    else
    {
        event = document.createEvent('MouseEvents');
        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    }
    aLink.dispatchEvent(event);
}

调用 exportexcel() 这个函数就可以导出到excel文件了~!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值