我有一個關於非常奇怪的問題...爲什麼xls文件,我用php創建,不一樣,當我從linux服務器下載它時當我從Windows服務器下載它?xls從linux下載不一樣從windows下載
使用js解析一個html表格,過濾一些列並將表格推送到一個表格並提交給php腳本。在腳本中,我使用特定的頭文件回顯一個xml文件。當我使用xampp在windows上執行此操作並下載並打開文件時,我收到了來自excel的內容和文件類型不匹配的消息,但是我可以打開它。當我從linux服務器下載相同的文件(具有相同內容的新生成的文件)時,我無法打開該文件 - 甚至沒有消息出現。
文件大小,內容,編碼 - 全部相同...
爲什麼會發生這種情況?
EDIT: 當我打開該文件(我從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>";
?>
感謝您的幫助!
你不寫與代碼 –
@Dagon XLS文件前面提到的更新:也許不是「真正的「xls文件,但一種類型的excel可以打開並解釋它(從Windows Server/xampp下載時)。 – Theo