JS导出Excel文件

需求:
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));
    }
}

上述代码即可实现导出列表选中行数据的功能

在 JavaScript 中,你可以使用以下方法将数据导出Excel 文件: 1. 使用 HTML5 的 Blob 对象和 URL.createObjectURL 方法: ```javascript function exportToExcel(data, filename) { const csvData = convertToCSV(data); const blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.setAttribute('download', filename + '.csv'); link.style.visibility = 'hidden'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } function convertToCSV(data) { const separator = ','; const keys = Object.keys(data[0]); const header = keys.join(separator); const rows = data.map(row => { return keys.map(key => { return row[key]; }).join(separator); }); return header + '\n' + rows.join('\n'); } // 使用示例 const data = [ { name: 'John', age: 30, city: 'New York' }, { name: 'Jane', age: 25, city: 'San Francisco' }, { name: 'Bob', age: 35, city: 'Chicago' } ]; exportToExcel(data, 'users'); ``` 2. 使用第三方库,如 `xlsx`: ```javascript // 安装 xlsx 库 // npm install xlsx const XLSX = require('xlsx'); function exportToExcel(data, filename) { const wb = XLSX.utils.book_new(); const ws = XLSX.utils.json_to_sheet(data); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, filename + '.xlsx'); } // 使用示例 const data = [ { name: 'John', age: 30, city: 'New York' }, { name: 'Jane', age: 25, city: 'San Francisco' }, { name: 'Bob', age: 35, city: 'Chicago' } ]; exportToExcel(data, 'users'); ``` 这些方法可以将数据导出为 CSV 或 XLSX 格式的 Excel 文件。你可以根据自己的需求选择合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值