tags: [组件]
categories: 业务场景解决方案
需求:datatable表格,每一行带有checkbox,勾选checkbox导出当前行所有数据,全选则导出所有选中行的数据
即实现导出列表选中行数据的功能
<a class="download" download="用户列表">导出</a>
function exportFile() {var dataArr = [];//定义数组用来保存所勾选的列表当前行数据// 定义表头var str = `<tr><th>样本名称</th><th>问卷编码</th><th>提交时间</th></tr>`// 遍历列表中所购选中的行$('table').find('tr.hover-bg').each(function() {var Data = new Object();Data.AreaName = $(this).find('td:eq(1)').html();Data.DataID= $(this).find('td:eq(2)').html();Data.EntryTime= $(this).find('td:eq(3)').html();dataArr.push(Data);})if($('table').find('tr').hasClass('hover-bg')) {//循环遍历,每行加入tr标签,每个单元格加td标签for (let i = 0; i < dataArr.length; i++) {str += '<tr>';for (let item in dataArr[i]) {//增加\t为了不让表格显示科学计数法或者其他格式str += `<td>${ dataArr[i][item] + '\t'}</td>`;}str += '</tr>';}var template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>'录入列表.xls'</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>${str}</table></body></html>`;// 实例化一个 Blob 对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象var blob = new Blob([template], {type: "application/vnd.ms-excel"});$('.download').attr('href', URL.createObjectURL(blob));}}
SheetJS
同时适用于Browser/Nodejs环境的电子表格编辑库,主要功能包括:
读取并解析Excel文件
编辑表格内容
将数据以Excel文件形式导出
