2010-10-28 14 views
2

Vous cherchez une solution PHP pour créer des fichiers Excel à la volée (Think dynamic reporting).Le moyen le plus efficace pour créer des fichiers Excel

Maintenant, j'ai vu PHP Excel et je sais que je peux créer un fichier CSV mais sont-ils par les meilleures options?

J'exécutant ce script sur un système Linux en utilisant PHP Excel, mais il ne définit pas toutes les options

$objPHPExcel->getProperties()->setCreator("Phill"); 
$objPHPExcel->getProperties()->setLastModifiedBy("Phill"); 
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX"); 

Aussi, si je donne l'extension .xls au lieu de l'.xlsx il jette un fichier non valide et ne s'ouvre pas. (NOTE: J'utilise Open Office pour afficher la feuille Excel générée)

Vous voulez savoir s'il existe d'autres/meilleures solutions?

EDIT:

Comment puis-je enregistrer le fichier

$file = '/path/to/777/dir/file.xlsx'; // not viewable by public 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->save($file); 
+2

Le problème est que le format MS Excel est une cible mobile. Je finis toujours par revenir au CSV. – bogeymin

+0

"Le moyen le plus efficace pour créer des fichiers Excel" - utilisez Excel;) Sinon, êtes-vous sûr de vouloir créer un fichier Excel? Il pourrait y avoir de meilleures options (par exemple, comme vous l'avez mentionné vous-même: csv), mais cela dépend de ce que vous essayez d'accomplir. – poke

+2

[Voir la liste de Mark Baker. Je pense qu'il est complet.] (Http://stackoverflow.com/questions/3930975/alternative-for-php-excel) – Gordon

Répondre

4

Il existe des alternatives à PHPExcel, comme indiqué here

Mais avant rejeter PHPExcel d'emblée, j'aimerais savoir pourquoi ça ne marche pas. C'est quelque chose qui fonctionne normalement sans aucun problème; mais votre extrait de code ne montre rien sur l'enregistrement du fichier. Comment sauvegardez-vous le fichier: quel writer utilisez-vous?

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('/path/to/777/dir/file.xls'); 

EDIT

ou

$file = '/path/to/777/dir/file.xls'; // not viewable by public 
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 
$objWriter->save($file); 

La dernière version d'Office Open (je crois) lire les fichiers .xlsx aussi bien, mais il ne préfère si elles ont l'extension correcte .

Notez que l'enregistreur Excel5 ne prend pas en charge les propriétés de document (même si Excel2007 le fait). Il y a un élément de travail actif pour cela sur la liste des problèmes de PHPExcel.

+0

@Phil - vous essayez d'économiser en utilisant l'écrivain Excel2007, qui crée Exzcel2007 (et Excel2010). Fichiers xlsx. Vous devez utiliser l'éditeur Excel5 pour créer des fichiers BIFF8 .xls. –

+0

Je vois, vous avez deux fonctions différentes pour différents formats. Logique. BTW ne rejette pas PHP Excel, mais ne définit pas toutes les propriétés comme dans les fichiers d'exemple, mais est-ce dû à ma lecture dans Open Office? –

+0

Merci Marc, ça aide. –

0

Oui il y a. Vous pouvez utiliser Pear's Spreadsheet_Excel_Writer. Il ne crée que des fichiers BIFF8 ou plus anciens (Word 2003), mais cela fonctionne plutôt bien.

Modifier: Je viens de remarquer qu'ils disent qu'il a besoin d'une réécriture complète et ne recommande pas de l'utiliser pour un nouveau développement. Je l'ai utilisé pendant environ 3 ans dans les systèmes de production, et d'autres que quelques minuscules petits bugs, il a très bien fonctionné pour moi ...