comment créer des fichiers xlsx à l'aide de coldfusion

Disclaimer: je suis nouveau dans coldfusion.
Je suis en train de créer un Excel 2010 document avec des images et plusieurs onglets.
J'ai été en mesure d'obtenir ce pour une sortie en XLS, mais je ne peux pas obtenir l'image dans le fichier.

Je n'ai pas été en mesure de trouver un exemple complet de créer Correctement un fichier XLSx.
Je préfère apprendre la bonne manière et de développer mes propres mauvaises habitudes plus tard, plutôt que de simplement avoir de mauvaises habitudes.

Voici un exemple:

<!--- Make CF export to Excel --->
<!--- This will create a XLS file --->
<!--- <cfheader name="Content-Disposition" value="attachment; filename=#URL.TRNo#_image.xls">
<cfcontent type="application/vnd.msexcel"> --->
<!--- This does not work to create an XLSX file --->
<cfheader name="Content-Disposition" value="inline; filename=#URL.TRNo#_image.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"> 
<cfparam name="URL.TRNo" default="AD0310">
<cfoutput>
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<ss:Styles>
<ss:Style ss:ID="Default" ss:Name="Normal">
<ss:Font ss:Size="11" ss:FontName="Calibri"/>
</ss:Style>
<ss:Style ss:ID="Left">
<ss:Alignment ss:Horizontal="Left"/>
</ss:Style>
<ss:Style ss:ID="Center">
<ss:Alignment ss:Horizontal="Center"/>
</ss:Style>
<ss:Style ss:ID="Right">
<ss:Alignment ss:Horizontal="Right"/>
</ss:Style>
</ss:Styles>
<Worksheet ss:Name="#URL.TRNo# page 1">
<ss:Table ss:DefaultColumnWidth="15" ss:DefaultRowHeight="15">
<Row ss:Height="51"><!--- Start Row 1 --->
<Cell ss:Index="1" ss:MergeAcross="9">
<Data ss:Type="String">Final Test Report</Data>
</Cell>
<Cell ss:Index="11" ss:MergeAcross="10" ss:StyleID="Center">
<Data ss:Type="String"><!--- <img src="http://wwwdev.elmsweb.ford.com/elmsGEN3/SafetyLab/FMVSS/ReportWriter/img/fordLogo_transparent_small.png" height="68" width="181" alt="13"> ---></Data>
</Cell>
<Cell ss:Index="22" ss:MergeAcross="9" ss:StyleID="Right">
<Data ss:Type="String">Confidential</Data>
</Cell>
</Row><!--- End Row 1 --->
<Row/><!--- Row 2 Blank --->
<Row><!--- Start Row 3 --->
<Cell ss:Index="1" ss:MergeAcross="1" ss:StyleID="Right">
<Data ss:Type="String">To:</Data>
</Cell>
<Cell ss:Index="3" ss:MergeAcross="12">
<Data ss:Type="String"></Data>
</Cell>
<Cell ss:Index="16" ss:MergeAcross="10" ss:StyleID="Right">
<Data ss:Type="String">Test Order:</Data>
</Cell>
<Cell ss:Index="27" ss:MergeAcross="4">
<Data ss:Type="String">#URL.TRNo#</Data>
</Cell>
</Row><!--- End Row 3 --->
</ss:Table>
</Worksheet>
</Workbook>
</cfoutput>
  • Avez-vous essayé d'utiliser ColdFusion intégré dans les fonctions de feuille de calcul? Documentation pour SpreadsheetNew fonction. Si vous définissez la xmlformat paramètre à 'true' il va en créer un .fichier xlsx. Vous avez besoin d'au moins ColdFusion 9 pour ces fonctions
  • Aucun de ces éléments fera une XLS ou XLSX fichier techniquement, ils font un fichier XML qui a servi à Excel. Vous pouvez facilement utiliser la cfheader/content à partir de la première ligne et de changer l'extension de l'avoir "apparaître" comme un fichier XLSX, mais il ne va pas être dans la XLS/XLSX.
  • Merci, je pense que c'est un pas dans la bonne dirrection. mais comment l'utilisateur peut-il obtenir le fichier, je ne veux pas les stocker sur le serveur?
  • Pourriez-vous nous donner un exemple? Je ne pouvais pas obtenir un fichier valide créé par la modification de la cfheader/contenu, Excel donnerait une erreur et de ne pas l'ouvrir.
  • Ce code, pastebin.com/wgMW1ggN, correctement s'ouvre dans excel, mais il me donne le "extension différente" erreur, mais je n'obtiens que, peu importe si c'est en xls ou xlsx.
  • Quand je l'ai essayé, j'ai reçu un message d'erreur indiquant: "impossible d'ouvrir le fichier 'Teset.xlsx" parce que le format du fichier ou l'extension de fichier n'est pas valide. Vérifiez que le fichier n'a pas été corupted et que l'extension du fichier correspond au format du fichier." Il n'ouvre pas le fichier après avoir cliqué sur OK. J'utilise office 2010.
  • Je seconde les suggestions de regarder les fonctions de feuille de calcul dans CF9+. Vous n'avez pas à enregistrer le fichier sur le disque. Vous pouvez en streaming pour le navigateur de la mémoire. Btw, un problème avec l'utilisation de faux-fichiers excel, c'est que les versions ultérieures d'Excel sont beaucoup plus pointilleux sur le format de fichier et l'extension de fichier. Même si le contenu est valide, si elle ne correspond pas à l'extension que vous utilisez, les utilisateurs peuvent obtenir l'ennuyeux extension incompatibilité d'avertissement en raison de extension de durcissement.
  • Merci à vous tous pour vous réponses, les fonctions de feuille de calcul sont pour la plupart travaillent pour moi, il y a quelques bizarreries avec cette solution. Assurez-vous d'être un objet d'un autre post.
  • Alors @Miguel-F doit écrire que comme une réponse.
  • J'ai posté mon commentaire original comme réponse. Merci @Leigh. Désolé, je viens de ce, était en vacances. 🙂

InformationsquelleAutor BTThomas | 2013-02-21