2010-08-20 5 views
2

J'ai besoin d'enregistrer des données dans un fichier .xls. J'essaie d'utiliser la bibliothèque PEAR Spreadsheet_Excel_Writer. C'est du travail. Mais maintenant je travaille avec l'hébergement sans PEAR. De cause, c'est très terrible.PHP Excel, mais pas Spreadsheet_Excel_Writer

Spreadsheet_Excel_Writer a beaucoup de dépendances. J'ai besoin d'un module ou d'un code, que je peux inclure dans mes scripts.

Thx.

Répondre

4

J'utilise Tableur Writer beaucoup et il est agréable d'avoir, mais si vous n'avez pas besoin de plusieurs feuilles ou la possibilité de faire une mise en forme, etc., vous un HTML toujours juste sortie et envoyer un

header("Content-type: application/vnd.ms-excel") 

et une extension de ".xls", puis tableur Excel ou OpenOffice (et je suppose, je suppose, le tableur de Mac) l'ouvrira et formater le HTML comme une feuille de calcul.

Ce n'est pas une solution native, mais à la fin, cela semble plutôt bien pour l'utilisateur final. Vous devez utiliser des tables dans votre HTML, mais vous pouvez ajouter des couleurs/bordures, padding, changements de police, rowspan, colspan, etc, pour un peu de contrôle. Pas de fonctions ou de formules ou de plusieurs feuilles, cependant.

3

Littéralement, PHPExcel: http://phpexcel.codeplex.com/

+0

Il a besoin d'un php_zip php_gd et php 5.2. L'hébergement de mon client n'a pas ce genre de choses. Et php 5.16. Terrible hébergement! – pltvs

+0

@ Alexander.Plutov: PHP 5.1.6? Je ressens ta douleur. Bonne chance avec la recherche ... – Piskvor

+0

Ouais. Je l'ai trouvé.http: //dustweb.ru/log/2008/08/01/write_excel_php/ – pltvs

4

Il est un format peu connu qui n'a jamais vraiment pris, mais MS Office a un support pour soi-disant fichiers XML Excel 2003 - qui sont en effet XML et, au strict minimum, ressembler à ceci:

<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <Worksheet> 
    <Row> 
     <Cell> 
     <Data ss:Type="String">First</Data> 
     </Cell> 
    </Row> 
    </Worksheet> 
</Workbook> 

vous pouvez générer ce tout simplement sans extensions PHP, et il sera correctement ouvert dans toutes les versions de MS Excel depuis 2003. OpenOffice 2 et 3 va ouvrir ces correctement si vous renommez l'extension de fichier à .xls.xml

Lorsqu'un utilisateur ouvre ce fichier et l'enregistre à partir d'Excel, il est, par défaut, converti en fichier XLS classique.

Comme @ Alexander.Plutov note dans un commentaire, il y a a library for writing these files.

Il y a utile (et plus complète) page sur le site d'IBM sur ce format et PHP: http://www.ibm.com/developerworks/opensource/library/os-phpexcel/#N101F7

+0

Je me demande où cette réponse est censée être fausse; J'ai utilisé avec succès le format XML Excel 2003 de cette façon, à plusieurs reprises, et cela fonctionne. Envie de commenter? – Piskvor

+0

Je n'ai pas downvote, mais je soupçonne qu'il pourrait être l'utilisation de la concaténation de chaîne pour construire un fichier XML plutôt que XMLWriter ou similaire –

+0

@ Baker Baker: Pourrait être. Je l'ai mentionné pour montrer que dans un cas extrême, aucune bibliothèque n'est strictement nécessaire (il fallait le faire une seule fois, dans un environnement contraint, mais je suis d'accord que l'utilisation d'un XMLWriter pour écrire du XML a du sens dans la plupart des cas). Edité cela. – Piskvor

1

Prenez garde, le code source fourni par Piskvor:

<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <Worksheet> 
    <Row> 
     <Cell> 
     <Data ss:Type="String">First</Data> 
     </Cell> 
    </Row> 
    </Worksheet> 
</Workbook> 

est pas un fichier Excel valide (au moins dans ma version - Excel 2010) et échouera ouverture produisant un message d'erreur, car il manque deux valeurs corrigées dans l'exemple suivant nécessaire (la partie manquante est que dans un WorkSheet vous avez besoin d'un Table et un WorkSheet doit avoir un nom spécifié comme une chaîne dans ss:Name):

<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <Worksheet ss:Name="test"> 
    <Table> 
     <Row> 
     <Cell> 
      <Data ss:Type="String">First</Data> 
     </Cell> 
     </Row> 
    </Table> 
    </Worksheet> 
</Workbook> 

Ce t hen devient en effet une feuille de calcul Excel valide et grâce à Piskvor pour nous avoir rappelé ce merveilleux format ouvert et lisible à la machine et à l'homme.

Questions connexes