我正在使用以下Javascript代码即时生成Excel,该Excel将HTML表转换为电子表格。
Excel文件无法在Office 2010中打开,显示为空白。相同的电子表格随Openoffice打开。可能是什么问题?这和encoding
有关吗
function ExcelReport() {
var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';
tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';
tab_text = tab_text + "<table>";
var headingTable = $('#h_tbl').clone();
tab_text = tab_text + headingTable.html();
tab_text = tab_text + '</table>';
$('.c_tbl').each(function( index ) {
tab_text = tab_text + "<table>";
tab_text = tab_text + "<tr><td></td></tr><tr><td></td></tr>";
tab_text = tab_text + '</table>';
tab_text = tab_text + "<table>";
var exportTable = $(this).clone();
tab_text = tab_text + exportTable.html();
tab_text = tab_text + '</table>';
});
tab_text = tab_text + '</body></html>';
var fileName = name + '.xls';
var blob = new Blob([tab_text], { type: "application/vnd.ms-excel;charset=utf-8" })
window.saveAs(blob, wo_var + ".xls");
}
当我在记事本中打开Excel时,HTML代码如下所示
<html xmlns:x="urn:schemas-microsoft-com:office:excel"><head><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>
<tbody><tr><td>abc:</td></tr></tbody></table></body></html>
最佳答案
我们有同样的问题,来自客户的投诉太多。我们将其追溯到2016年7月12日发布的Excel OFffice Security补丁KB3115262-https://support.microsoft.com/en-us/kb/3115262
为解决此问题,我们让客户对其Excel进行了更改,以允许来自Internet的文件。
修理:
1)打开Excel转到“文件选项”
2)点击信任中心->信任中心设置
3)转到保护 View 。有3个选项显示全部被点击
我们取消选中第一个选项,即“为来自Internet的文件启用 protected View ”
这解决了问题。也许不是最好的解决方案。我不确定为什么这个特定的KB会破坏这一点,但是我认为也许事实并非如此,即文件格式不是预期的,并且此设置相互冲突。
在我没有安装此KB的计算机上,所有这些文件均已检查并且仍然可以正常工作(不是空白,但提示文件格式不同),并且我认为显示的是 protected View 。
导致我们发现其不是文件内容的原因是,如果我们在不进行任何更改的情况下将文件重新保存在记事本或notepad++中,就会注意到该文件运行良好,因此excel必须读取文件的某些属性而不是内容来阻止它。