J'ai une question à propos de quelque chose de très étrange ... Pourquoi le fichier xls, que je crée avec PHP, pas la même chose quand je le télécharge à partir d'un serveur linux comme quand je le télécharge depuis un serveur Windows? Avec js je parse une table html, filtre quelques colonnes et pousse la table dans un formulaire et la soumets à un script PHP. Dans le script, j'écho un fichier xml avec les en-têtes spécifiques. Lorsque je fais cela sur Windows avec xampp et télécharger et ouvrir le fichier, je reçois un message d'Excel que le contenu et le type de fichier ne correspondent pas, mais je peux l'ouvrir. Lorsque je télécharge le même fichier (nouveau fichier généré avec le même contenu) à partir d'un serveur Linux, je ne peux pas ouvrir le fichier - même pas le message apparaît.xls téléchargé à partir de Linux pas le même que téléchargé à partir de windows
La taille du fichier, le contenu, l'encodage - même ...
Pourquoi cela?
EDIT: Quand j'ouvre le fichier (qui j'ai téléchargé à partir de linux) avec notepad ++, changer une ligne, annuler et conserver ce, Excel peut ouvrir le fichier (avec le message que le contenu et filetype ne correspondent pas) .
est ici un code pour votre compréhension:
JS-Part:
// 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-Part:
<?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>";
?>
Merci pour votre aide!
Votre pas écrire un fichier xls avec ce code –
@Dagon: Peut-être pas un " réel "fichier xls mais un type de sorte Excel peut ouvrir et interpréter (lorsqu'il est téléchargé à partir de Windows Server/xampp). – Theo