导出HTML TableToExcel不在Excel中显示网格线

问题描述 投票:4回答:1

我正在使用TableToExcel,它在Windows Excel上可以正常工作,但是在导出它并在Excel:Mac 2011中打开它时,网格线将不会显示。这是我在TableToExcel中的代码:

var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,';
var template = '<html ' +
'xmlns="urn:schemas-microsoft-com:office:office" ' +
'xmlns:o="urn:schemas-microsoft-com:office:office"' +
'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
'xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ' +
'xmlns:html="https://www.w3.org/TR/html40/" >' +
'<head>' +
'<meta http-equiv="content-type" content="text/plain; charset=UTF-8"/>'+
'<!--[if gte mso 9]>' +
'<xml>' +
'<x:ExcelWorkbook>' +
'<x:ExcelWorksheets>' +
'<x:ExcelWorksheet>' +
'<x:Name>{worksheet}</x:Name>' +
'<x:WorksheetOptions>' +
'<x:DisplayGridlines />'+
'</x:WorksheetOptions>' +
'</x:ExcelWorksheet>' +
'</x:ExcelWorksheets>' +
'</x:ExcelWorkbook>' +
'</xml>' +
'<![endif]-->' +
'</head>' +
'<body>' +
'<font face="Arial" size="12">' +
'<table>{table}</table>' +
'</font>' +
'</body>' +
'</html>';

var base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))); };
var format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }); };
return function(table, name, filename) {
if (!table.nodeType) table = document.getElementById(table);
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML};
var link = document.createElement("A");
link.href = uri + base64(format(template, ctx));
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
link.download = filename || 'Workbook.xls';
link.target = '_blank';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
})();

我尝试更改background-colorbackground,添加<x:Panes></x:Panes><x:Print><x:Gridlines /></x:Print>更改MIME,删除表的所有内容,但网格线仍不会显示。

我考虑过使用Datatables进行Excel导出,但是与现在相比,很难手动更改格式(例如,字体样式,大小,行高等)

编辑:

曾经使用JQuery在不同的库中搜索了一段时间。仍然找不到更好的解决方案来解决我的问题。可以尝试使用DataTables导出功能,然后对其进行修改。

EDIT2:

我对Datatables不走运,我回到tableToExcel.js,因为我真正想要实现的是将格式应用于不同的行,单元格,列等。>

我正在使用TableToExcel,它在Windows Excel上可以正常工作,但是在导出它并在Excel:Mac 2011中打开它时,网格线将不会显示。这是我在TableToExcel中的代码:var tableToExcel =(...

javascript php html
1个回答
-1
投票

我不熟悉TableToExcel,但是由于它使用的是HTML,因此您可以尝试在</head>上方向其中添加CSS:

© www.soinside.com 2019 - 2024. All rights reserved.