gpt4 book ai didi

javascript - 从linux下载的xls与从windows下载的xls不一样

转载 作者:行者123 更新时间:2023-11-28 05:46:17 24 4
gpt4 key购买 nike

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

使用 js,我解析一个 html 表,过滤掉一些列,然后将表推送到表单中,然后将其提交给 php 脚本。在脚本中,我回显带有特定 header 的 xml 文件。当我在 Windows 上使用 xampp 执行此操作并下载并打开文件时,我从 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>";
?>

感谢您的帮助!

最佳答案

来自 Linux 的文件可能被“阻止”,因为该文件来自未知计算机。如果您在 Windows 中查看该文件的属性,底部可能会有一条有关安全性和“解锁”能力的消息。由于您编辑并保存了 Linux 文件,Excel 现在认为它是 Windows 计算机中的安全文件,因此不会被阻止。

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

Option 1

  • Control Panel > Internet Options
  • Security Tab > Trusted Sites
  • Add the site you are downloading from to the trusted site list

** You will need to re-download excel files once this change is made. Files previously downloaded when untrusted may still open blank **

Option 2

  • Go into the properties of the file you have saved to your computer (right click it, then left click properties)
  • Click Unblock
  • Click Apply
  • Open the file

Option 3

  • Open Excel Go to File Options
  • Click Trust Center -> Trust Center Settings
  • Go to Protected View. there are 3 options that show that were all clicked. Uncheck the first option that reads -- "Enable Protected View for files originating from the Internet"

Option 4

  • Open Excel Go to File Options
  • Click Trust Center -> Trust Center Settings
  • Go to File Block Settings
  • Uncheck Web Pages and Excel 2003 XML Spreadsheets

Option 5

  • Uninstall the previously mentioned update that applies to your Office version

关于javascript - 从linux下载的xls与从windows下载的xls不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com