如何在导出Excel时将文本置于表格上方?AngularJS代码修改求助
解决方案:在DataTables导出的Excel表格上方添加自定义文本
要在导出的Excel表格顶部添加指定文本,需利用DataTables Excel导出按钮的customize回调函数,通过内置的ExcelJS API直接编辑导出的工作簿内容。以下是修改后的完整代码:
$scope.generateLedger = (supplier_id) => { $http({ method: 'POST', url: '../reportsController/ledgerController/getLedger/' + supplier_id }).then(function successCallback(response) { if (response.data) { $scope.ledger = response.data; $scope.tableShow = true; $scope.sup_name = $scope.getSupName(supplier_id); // AngularJS回调执行时DOM已就绪,无需额外包裹$(document).ready $('#supplierLedgerTable').DataTable({ dom: `<"row"<"col-sm-12 col-md-6"l><"col-sm-12 col-md-6"f>><"row"<"col-sm-12"tr>><"row"<"col-sm-12 col-md-5"i><"col-sm-12 col-md-7"pB>>`, "lengthMenu": [10, 25, 50, 75, 100], buttons: [ { extend: 'excel', text: 'Export to Excel', exportOptions: { columns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }, title: 'Supplier Ledger - ' + $scope.sup_name, // 核心:自定义导出内容的回调函数 customize: function (excel) { const worksheet = excel.workbook.worksheets[0]; // 替换为你需要的自定义文本,可结合$scope变量动态生成 const customText = `供应商台账说明:导出时间 ${new Date().toLocaleString()} - 供应商:${$scope.sup_name}`; // 在第一行插入自定义文本,原表格内容自动下移 worksheet.insertRow(1, [customText]); // 合并第一行的所有导出列(A到J,对应你设置的10列) worksheet.mergeCells('A1:J1'); // 可选:设置文本样式,提升可读性 const titleCell = worksheet.getCell('A1'); titleCell.font = { bold: true, size: 14 }; titleCell.alignment = { horizontal: 'center' }; worksheet.getRow(1).height = 25; } } ] }); } else { $scope.tableShow = false; Swal.fire({ title: 'No Data Found.' }); } }); };
关键修改点说明:
- 移除冗余的
$(document).ready:AngularJS的HTTP回调执行时,目标DOM元素已经就绪,无需额外包裹。 customize回调核心逻辑:insertRow(1, [customText]):在表格第一行插入自定义文本,原有表格内容会自动下移一行。mergeCells('A1:J1'):合并第一行的所有导出列(对应你配置的10列),让文本跨列完整显示。- 可选样式配置:通过ExcelJS API设置文本加粗、居中对齐和行高,优化导出文件的可读性。
- 动态文本支持:自定义文本可结合
$scope.sup_name、当前时间等变量动态生成,适配不同业务场景。
如果需要添加多行文本,只需重复调用insertRow并依次设置行号(比如insertRow(1, ['文本1'])、insertRow(2, ['文本2']))即可。
内容的提问来源于stack exchange,提问作者Michael Carmona
相关产品推荐
相关产品推荐

