我有以下将 html 导出到 excel 的函数:
function generateexcel(tableid) {
var table= document.getElementById(tableid);
var html = table.outerHTML;
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
}
一个问题是数据中的特殊字符被转换为其他符号:
- 1º = 1º
- é = É
你会如何解决这个问题?是否有任何字符替换 html 以防止它?任何编码选项?
最佳答案
替换字符是一个糟糕的解决方案。
我将 encodeURIComponent 替换为转义并且工作正常,但自 ECMAScript v3 以来不推荐使用转义。
出现此问题是因为 encodeURIComponent 适用于 UTF-8 而 Excel 不适用。
对我来说更好。
将数据编码为 base64 并像这样导出。我使用了来自 https://github.com/carlo/jquery-base64/blob/master/jquery.base64.min.js 的 jquery-base64 插件
并将代码更改为:
window.open('data:application/vnd.ms-excel;base64,' + $.base64.encode(html));
如果不想用jquery,可以用这个base64_encode函数 http://phpjs.org/functions/base64_encode
“Base64 编码/解码已经是现代 (tm) 浏览器的原生功能:btoa(str) 和 atob(str) 是无需任何外部重新实现即可使用的功能。” - chipairon
关于javascript - 将 html 表导出到 Excel javascript 函数特殊字符已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084564/