免责声明:我是冷冻新手。 我正在尝试使用图像和多个选项卡创建Excel 2010文档。 我已经能够将其输出到XLS中,但我无法将图像输入到文件中。
我无法找到如何正确创建XLSx文件的完整示例。 我宁愿学习正确的方法,以后养成自己的坏习惯,而不仅仅是养成坏习惯。
以下是一个例子:
<!--- 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>
答案 0 :(得分:7)
我建议使用ColdFusion的内置电子表格功能(首次在版本9中引入)。这是documentation for the SpreadsheetNew function。如果将xmlformat
参数设置为“true”,则会创建.xlsx文件。
有关如何使用这些ColdFusion功能的网上(以及此处的SO)有几个例子。 Raymond Camden has a nice example here了解如何使用cfcontent
标记生成电子表格并将其直接发送给用户。 Here is another example from Raymond建立在第一个例子的基础上。
答案 1 :(得分:3)
我整个星期都在努力,希望分享结果。此代码适用于我在Windows Server 2008 R2上使用CF 9。顺便说一下,CFSpreadsheet似乎在更大的出口上消耗了大量内存。出于这个原因,我们增加了服务器的物理内存,然后使用CF Administrator在Administrator中增加了jvm堆大小 - &gt; Java和JVM设置。我的最大Java堆大小现在是3072千兆。 需要帮忙?我建议您就服务器问题联系Charlie Arehart:charlie@carehart.org
代码:
示例查询称为“Myquery”Spreadsheet称为“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#">
戴夫卡夫