从linux下载的xls与从windows

时间:2016-07-21 07:26:30

标签: javascript php xml xls

我有一个关于非常奇怪的问题...为什么我用php创建的xls文件,当我从Linux服务器下载它时,从我从Windows服务器下载时不一样?< / p>

使用js我解析一个html表,过滤掉一些列并将表推送到表单并将其提交给php脚本。在脚本中,我回显一个带有特定标题的xml文件。当我在带有xampp的Windows上执行此操作并下载并打开文件时,我从excel收到一条消息,内容和文件类型不匹配,但我可以打开它。当我从linux服务器下载相同的文件(具有相同内容的新生成的文件)时,我无法打开文件 - 甚至不会显示该消息。

文件大小,内容,编码 - 完全相同......

为什么会这样?

修改: 当我用notepad ++打开文件(我从linux下载)时,更改一行,撤消并保存,excel可以打开文件(带有内容和文件类型不匹配的消息)。

以下是一些供您理解的代码:

JS-部分:

// var filename = string
// var this table = previously parsed html table
$('<form target="_blank" action="download.php" method="post"><input type="hidden" name="filename" value="' + encodeURIComponent(filename) + '" /><input type="hidden" name="data" value="' + encodeURIComponent(thisTable) + '" /></form>').appendTo($('body')).submit().remove();

PHP-部分:

<?php
 header('P3P: CP="NOI NID ADMa CAO PSA OUR IND UNI COM NAV"');
 header("Content-Type: application/ms-excel");
 header("Content-Disposition: attachment; filename=\"".$_REQUEST['filename'].".xls\";");
 echo "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">";
 echo "<head>";
 echo "<!--[if gte mso 9]>";
 echo "<xml>";
 echo "<x:ExcelWorkbook>";
 echo "<x:ExcelWorksheets>";
 echo "<x:ExcelWorksheet>";
 echo "<x:Name>".$_REQUEST['filename']."</x:Name>";
 echo "<x:WorksheetOptions>";
 echo "<x:Panes>";
 echo "</x:Panes>";
 echo "<x:PageSetup>";
 echo "<x:Layout x:Orientation=\"Landscape\"/>";
 echo "</x:PageSetup>";
 echo "</x:WorksheetOptions>";
 echo "</x:ExcelWorksheet>";
 echo "</x:ExcelWorksheets>";
 echo "</x:ExcelWorkbook>";
 echo "</xml>";
 echo "<![endif]-->";
 echo '<style type="text/css">td{mso-number-format:"#\,##0\.00";} @page {mso-page-orientation:landscape;}</style>';
 echo "</head>";
 echo "<body>";
 echo utf8_decode(urldecode($_REQUEST['data']));
 echo "</body>";
 echo "</html>";
?>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

可能是来自Linux的文件是&#34;被阻止&#34;因为该文件来自未知的计算机。如果您查看Windows中的文件属性,则可能会在底部显示有关安全性和“解锁”功能的消息。因为您编辑并保存了Linux文件,所以Excel现在认为它是来自Windows计算机的安全文件,因此不会被阻止。

文章https://superuser.com/questions/1103241/excel-no-longer-receive-the-option-to-open-files-in-a-different-format解释了最近的补丁&#34;来自Microsoft已经引入了此限制(适用于Excel 2010的Windows Update KB3115130和适用于Excel 2013的Windows Update KB3115262),以及以下选项可提供帮助:

  

选项1

     
      
  • 控制面板&gt;互联网选项
  •   
  • 安全标签&gt;可信站点
  •   
  • 将您下载的网站添加到可信站点列表
  •   
     

**完成此更改后,您需要重新下载excel文件。以前在不受信任时下载的文件仍可能打开空白**

     

选项2

     
      
  • 进入已保存到计算机的文件属性(右键单击,然后左键单击属性)
  •   
  • 点击取消屏蔽
  •   
  • 点击“应用”
  •   
  • 打开文件
  •   
     

选项3

     
      
  • 打开Excel转到文件选项
  •   
  • 点击信任中心 - &gt;信任中心设置
  •   
  • 转到受保护的视图。有3个选项显示全部被点击。取消选中第一个选项 - &#34;启用受保护的视图   对于来自互联网的文件&#34;
  •   
     

选项4

     
      
  • 打开Excel转到文件选项
  •   
  • 点击信任中心 - &gt;信任中心设置
  •   
  • 转到文件阻止设置
  •   
  • 取消选中网页和Excel 2003 XML电子表格
  •   
     

选项5

     
      
  • 卸载前面提到的适用于您的Office版本的更新
  •   
相关问题