导出HTML表格到Excel – 不在Office 2010中打开

我正在使用下面的JavaScript代码生成一个即时转换,将HTML表格转换为电子表格的Excel。

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> 

在这里输入图像说明

我们有同样的问题太多客户的投诉。 我们将其追溯到Excel OFffice安全补丁KB3115262 – https://support.microsoft.com/zh-cn/kb/3115262 2016年7月12日发布

要解决这个问题,我们让客户在Excel中进行更改以允许来自Internet的文件。

修复:1)打开Excel进入文件选项

2)点击信任中心 – >信任中心设置

3)转到受保护的视图。 有3个选项显示所有点击

我们取消选中第一个选项 – “启用受保护的视图以查找源自Internet的文件”

这解决了这个问题。 也许不是最好的解决scheme。 我不知道为什么这个特定的知识产权破坏了这一点,但我想也许这个事实的文件格式不是预期的,这个设置是相互冲突的。

在一台电脑上,我没有安装这个知识库,所有这些检查,它仍然工作正常(不是空白,但提示文件格式是不同的),我想在受保护的视图中显示。

我们注意到,如果我们将文件保存在记事本或记事本++中而没有做任何修改,那么事实上它并不是文件的内容,因此文件performance良好,因此,Excel必须读取文件的某些属性而不是内容来阻止它。

您正在将HTML内容保存为*.xls的文件。 Excel可以打开这个,但会正常显示警告消息:

您尝试打开的文件“name.ext”与文件扩展名指定的格式不同。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 你想现在打开文件吗?

如果这个警告没有发生,文件没有打开,那么也许是

Windows Registry ,将HKEY_CURRENT_USER\Software\Microsoft\Office\<version number>\Excel\Security DWORDExtensionHardening设置为2

这意味着“检查文件扩展名和文件types,如果不匹配,请不要打开文件”。

请参阅https://support.microsoft.com/en-us/kb/948615

也许你的pipe理员已经通过组策略设置。 如果您在pipe理的networking中,请询问您的pipe理员。

如果您是您自己的pipe理员,那么请查找该registry设置并将其更改为默认值1

而不是做:

我们取消选中第一个选项 – “启用从Internet发起的文件的受保护视图”,这是不安全的

做这个:

转到该文件的属性,然后单击解除阻止(如果您知道该文件是安全的)。

图片: 转到文件的属性,然后点击取消阻止

类似的问题,我的代码使用StringWriter,HTMLTextWriter和RenderControl从GridView转储到XLS文件。

由于我们的ASP.NET代码运行在公司内部网上,因此我们在公司内部卸载了以下更新,而不是进入100多台用户PC并更改其设置。

卸载:

  • Windows Update KB3115262(Excel 2013)
  • Windows Update KB3115130(Excel 2010)
  • Windows Update KB3115272(Excel 2016/64位)

这解决了我们的问题,并且还会修复受这些更新影响的您和其他人。

对于那些更安全的偏执,我看到SalesForce网站上的另一个答案,这也应该工作 – https://success.salesforce.com/answers#!/feedtype=SINGLE_QUESTION_DETAIL&dc=All&criteria=BESTANSWERS&id=9063A000000iTIyQAM

基本上标记你正在下载的网站是安全的。

我没有自己尝试过

基本上打开您将在Internet Explorer中下载Excel文件的网站

转到设置Internet选项安全可信站点站点添加

这应该添加有问题的网站允许,然后你可以使用任何浏览器你想要的,例如Firefox /铬合金等

我有一个类似的问题,内联网明智的。 网格导出到HTML Excel突然停止工作,当用户点击打开。 快速解决方法,保存并打开下拉选项或保存然后打开。

我的修复是将内容处置从附加到内联。 现在用户得到旧的popup中心页面,而不是底部的一个,打开工程就好了。

可能的问题修复:

解决scheme1:

1)在开始菜单中键入Regedit

2)导航到registry,

在registry中:HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Excel \ Security

哪里=

  15.0 for Office 2013 16.0 for Office 2016 12.0 for Office 2010 

创build一个DWORD(32位)值并将其命名为:ExtensionHardening。 可能的值是:

 0: Do not check the file name extension and the file type, and bypass the function of the warning message. 1: Check the file name extension and the file type. If they do not match, display the warning message. 2: Check the file name extension and the file type. If they do not match, do not open the file. 

使用1作为值。

解决scheme2:

右键单击Excel – >属性 – >解除阻止 – >确定。

UnblockExcel

污染3

卸载更新:

Windows Update KB3115272(Excel 2016/64位)

Windows Update KB3115262(Excel 2013)

Windows Update KB3115130(Excel 2010)

有关此问题的更多信息,请参阅下面的链接。 https://social.technet.microsoft.com/Forums/en-US/d2d84793-9920-45e3-baef-5027a4ac1ae0/kb3170008-for-office-2016-breaks-functionality-ms16088?forum=officeitpro

微软在8月9日修补了Excel以恢复原始function。 滚动到8月9日在这个post发表更多信息: https : //social.technet.microsoft.com/Forums/en-US/d2d84793-9920-45e3-baef-5027a4ac1ae0/kb3170008-for-office-2016-breaks -Functionality-ms16088?论坛= officeitpro

更新Excel解决了我的问题。