2009-05-15 12 views
5

Je cherchais une bonne classe de génération de fichiers Excel et je n'en ai pas encore trouvé - mon problème numéro un est que je puisse obtenir le fichier exporté dans Excel (en cours d'exécution 2007), je reçois toujours un avertissement disant "le fichier est dans un format différent à l'extension de fichier". J'ai remarqué que l'export Excel dans phpMyAdmin génère même le message d'avertissement mentionné ci-dessus.Classe de génération/exportation de fichiers Microsoft Excel PHP

Quel code les autres utilisateurs utilisent-ils pour cette exigence commune? Si je mets l'extension de fichier de mon fichier Excel généré au format XML, il s'ouvre dans le navigateur (même si j'envoie les bons en-têtes), mais si je choisis d'enregistrer le fichier XML, puis d'ouvrir le fichier .xml. à partir d'Excel, cela fonctionne sans aucun avertissement! Malheureusement, c'est plus compliqué pour les utilisateurs que de simplement cliquer sur "Continuer de toute façon" avec l'avertissement que je reçois. D'autres idées?

Répondre

2

J'ai découvert que l'ajout de ce qui suit, dans la déclaration xml dans mon fichier Excel généré, assure Excel ouvre le fichier avec une extension de fichier xml (plutôt que le navigateur Web):

<?mso-application progid=\"Excel.Sheet\"?> 

Je suis aussi définissant les en-têtes suivants en php:

// deliver header (as recommended in php manual) 
header('Content-Type: application/vnd.ms-excel; charset=UTF-8'); 
header('Content-Disposition: attachment; filename="' . $filename . '.xml"'); 
2

Utilisez Spreadsheet_Excel_Writer de PEAR

ou

Ecrire le fichier à CSV format.
Mais utiliser Microsoft Excelle compréhension de csv: Un point-virgule (;) comme seperator

+0

J'ai examiné le paquet PEAR, il ressemble beaucoup plus de travail à mettre en œuvre - plus je ne suis pas sûr que ça va résoudre mon problème , qui ne semble affecter que Excel 2007. – BrynJ

+0

N'utilisez pas le package PEAR, il est obsolète! Il a été en bêta depuis 2006. Utilisez plutôt PHPExcel !!! – markus

0

le fichier est dans un format différent qui l'extension de fichier

Avez-vous essayé d'enregistrer le fichier avec un autre fichier extension? Comme "foo.xlsx" au lieu de "foo.xls".

+0

J'ai, oui - xls, xlsx et xml - tous avec le même résultat. Je suppose qu'il est malformé d'une certaine façon, mais je ne sais pas exactement quoi. – BrynJ

+0

Ok, juste pour ajouter à ce qui précède - en fait, si je définis l'extension de fichier en tant que xml il s'ouvre dans le navigateur (même si j'envoie les en-têtes correctes).Si je choisis de sauvegarder le fichier xml puis de l'ouvrir à partir d'Excel, cela fonctionne sans aucun avertissement! Malheureusement, c'est plus compliqué pour les utilisateurs que de simplement cliquer sur "Continuer de toute façon" avec l'avertissement que je reçois. – BrynJ

2

Vous désactivez également la boite de dialogue, en utilisant regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Démarrer -> Exécuter -> regedit
  • Aller à "HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Office \ 12.0 \ EXCEL \ SECURITY"
  • Nouveau DWORD
  • type « ExtensionHardening » comme le nom et 0 comme valeur
+0

Intéressant, mais pas vraiment une solution viable pour une application basée sur le Web bien que +1 de toute façon. –

+0

+1 - Je peux être en mesure de l'utiliser réellement, car je fournis cette fonctionnalité dans la zone d'administration de mon application Web, de sorte que les utilisateurs sont finis (c'est une application sur mesure). – BrynJ

8
+0

Merci pour le lien - il ressemble à une classe très complète, pour être honnête, c'est loin de mes exigences. – BrynJ

+1

Vous ne devriez pas avoir peur de la taille quand la qualité est bonne. Beaucoup mieux que d'utiliser la classe périmée PEAR. – markus

Questions connexes