使用 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文件了~!!