【问题标题】:How can I download to Excel?如何下载到 Excel?
【发布时间】:2011-05-29 07:44:30
【问题描述】:

我想为我的coldfusion网站不同部分上的几组不同数据提供“下载到excel”功能。我正在使用coldfusion,并且很想使用免费提供的自定义标签/库来帮助我完成这项工作,而不是自己从头开始编写代码。我被指向cflib.org,但不知道如何开始。任何人有任何关于将coldfusion网站数据下载到excel的想法、cmets或资源?

【问题讨论】:

    标签: excel resources coldfusion download


    【解决方案1】:

    我过去在加载大量表格统计数据的 Intranet 中使用的一种方法是利用 Excel 可以读取 HTML 的事实。

    在我打算为其提供 Excel 链接的页面上,我将核心表作为 HTML 写到文件中,并在呈现的页面中包含指向该文件的链接。然后,您可以使用 .xls 扩展名提供此页面,使用元标题,甚至使用带有 CFCONTENT 的中间页面,以便让您的浏览器启动 Excel 以显示内容。

    这种方法可以扩展到每页任意数量的表。您必须编写一个标签来包含该表,然后该标签将负责编写文件并为其中包含的所有 HTML 内容提供下载链接。

    抱歉缺少示例代码。如果我对过程的描述让您摸不着头脑,那么我将为您提供一些示例。

    【讨论】:

    • +1 - 我们也使用这个。可以选择将报告输出为 Excel 或纯 HTML 格式,这样既方便又简单。只需为 Excel 调整标题:添加 <cfcontent type="application/vnd.ms-excel"><cfheader name="Content-Disposition" value="filename=my-file-name.xls">
    • 你介意提供一些示例代码吗? ;)
    【解决方案2】:

    您也可以使用 html 表格,如:

    <cfquery name="data" datasource="whatever">
    ...
    </cfquery>
    
    <cfheader name="Content-Disposition" value="inline; filename=fileName.xls">
    <cfcontent type="application/x-msexcel" reset="true">
    
    <table border="0" cellspacing="0" cellpadding="0">
        <thead>
            <tr>
                <td>Col1</td>
                <td>Col2</td>
            </tr>
        </thead>
        <tbody>
            <cfoutput query="data">
                <tr>
                    <td>#data.Col1#</td>
                    <td>#data.Col2#</td>
                </tr>
            </cfoutput>
        </tbody>
    </table>
    

    第,

    拉里

    【讨论】:

    • 我想我会在我的 部分中使用 标签而不是 标签,但除此之外,这是上面@Steve Martin 描述的一个很好的例子。
    【解决方案3】:

    【讨论】:

    • 仍在使用 Coldfusion 8... 这是可用的还是 9 的新功能?
    【解决方案4】:

    以@Ciaran Archer 的回答为基础,我通常使用 CSV 来完成此操作,如果安装在客户端的 PC 上,Excel 将从 Web 打开。假设您正在使用的数据来自数据库,请使用 Ben Nadel 网站上的 QueryToCSV():

    <cfquery name="data" datasource="">
    ...
    </cfquery>
    <cfinclude template="fun_queryToCSV.cfm">
    <cfheader name="Content-Disposition" value="filename=my-file-name.xls">
    <cfcontent type="test/csv" reset="true">
    <cfoutput>#querytoCSV(data)#</cfoutput>
    

    cfcontent 上的“重置”会清除响应缓冲区,以便其中唯一的内容是后面的内容。或者,如果您已经将数据作为文件,cfcontent 有一个“文件”属性,它将直接提供其内容。

    【讨论】:

      【解决方案5】:

      最后,我们使用了来自 cflib.org 的 Query2Excel 函数,并稍作修改以满足我们的特定需求。

      【讨论】:

        【解决方案6】:

        对于使用 Coldfusion 9+ 并且能够使用 cfspreadsheet 的用户,您可以利用 SpreadsheetReadBinary() 使电子表格可下载,而无需先将电子表格写入文件。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 2018-01-10
        • 2011-10-18
        • 2023-03-27
        相关资源
        最近更新 更多