如何使用ColdFusion创建XLSX文件(how to create xlsx files us

2019-08-17 02:29发布

免责声明:我是新进的ColdFusion。 我试图创建具有图像和多标签的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>

Answer 1:

我建议使用ColdFusion的内建功能的电子表格(9版首次推出)。 这里是为SpreadsheetNew函数文档 。 如果将xmlformat参数为“真”,它会创建一个.xlsx文件。

还有网络上的几个例子(这里的SO)如何使用这些功能的ColdFusion。 雷蒙德·卡姆登这里有一个很好的例子 ,如何生成一个电子表格,并直接将其使用用户cfcontent标签。 下面是来自雷蒙德另一个例子是建立在第一个例子。



Answer 2:

我一直工作在这整个星期,并希望分享成果。 此代码的Windows Server 2008 R2上使用CF 9对我的作品。 顺便说一句,CFSpreadsheet似乎要消耗大量的内存在较大的出口。 出于这个原因,我们增加了那么服务器的物理内存使用CF管理员增加管理员JVM堆的大小 - > Java和JVM设置。 我的最大Java堆大小现在是3072千兆。 需要帮忙? 我建议你联系查理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#">  

戴夫·克拉夫特



文章来源: how to create xlsx files using coldfusion