Table 到 Excel 出于某种原因导出为文本?
Table to Excel exports as text for some reason?
我正在制作一个脚本,该脚本应该将 html table 导出到 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;
你为什么不写一个包含 table 标题和逗号分隔的 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)>/, '');
该文件只能包含:
邮件;电话号码
asdasd@asdasd.com;
测试@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
您是否考虑过使用 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 放在一起的方式,但最后您将合并这些 .xml 文件使用 JSZip 转换为 .xlsx 以供下载。
我正在制作一个脚本,该脚本应该将 html table 导出到 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;
你为什么不写一个包含 table 标题和逗号分隔的 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)>/, '');
该文件只能包含:
邮件;电话号码
asdasd@asdasd.com;
测试@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
您是否考虑过使用 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 放在一起的方式,但最后您将合并这些 .xml 文件使用 JSZip 转换为 .xlsx 以供下载。