我正在制作一个应该将html表导出到xls文件的脚本。 我在测试时使用Chrome,并不要求它在IE上工作。
问题是单击导出按钮时下载的文件是文本文件。
来自文本文件的片段:
<table><tr><th>Mail</th><th>Telefonnummer</th></tr><td>asdasd@asdasd.com </td><td></td></tr><td>test@company.com </td><td></td></tr><td>asd@adsasd.com
我的代码:
var export_data = '';
var objTable = document.getElementById('table');
export_data += '<table><tr>';
for(var i = 0; i < objTable.rows.length; i++){
export_data += objTable.rows[i].innerHTML + '</tr>';
}
export_data += '</table>';
sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(export_data));
return sa;
答案 0 :(得分:0)
为什么不写一个包含表标题和tabe内容逗号分隔的csv文件。这只是纯文本和一些逗号。你不需要HTML标签。
var export_data = '';
var objTable = document.getElementById('table');
for(var i = 0; i < objTable.rows.length; i++){
export_data += objTable.rows[i].innerHTML + '\r\n';
}
export_data.replace(/</t(h|d)><t(h|d)>/, '; ');
export_data.replace(/<t(h|d)>/, '');
export_data.replace(/</t(h|d)>/, '');
该文件只能包含:
邮件; Telefonnummer
asdasd@asdasd.com;
test@company.com;
asd@adsasd.com;
window.open('data:text/csv;charset=utf-8,' + encodeURIComponent(export_data));
您也可以在这里找到一些信息: Using javascript to download file as a.csv file
答案 1 :(得分:0)
您是否考虑使用application / csv并使用逗号分隔值直接拼接单元格值?
在这个例子中,我生成了6个数据单元,可以在libreoffice(或者还有)Microsoft Excel中打开。
<html>
<body>
<script language='JavaScript'>
function run_opencsv() {
var export_data = '';
export_data += 'Column1name, Column2name, Column3name' + '\n';
export_data += 'Cell1, Cell2, Cell3' + '\n';
export_data += 'Cell4, Cell5, Cell6' + '\n';
sa = window.open('data:application/csv,' + encodeURIComponent(export_data));
return sa;
}
run_opencsv();
</script>
</body>
</html>
顺便说一句,在我的机器上(使用firefox),你提供的代码片段确实生成了一个.xls数据文件。唯一的问题是它中的export_data文本仍然在html中。更接近的替代方案可能是使用.xlsx,它被称为Open XML格式。所以它会有标签,但它是压缩的zip格式。您必须使用类似JSZip的内容作为生成下载的最后一步。
基本上,您将以纯文本格式创建一组.xml文件,类似于将export_data放在一起的方式,但最后您将使用JSZip的.xml文件合并到.xlsx中进行下载。