【问题标题】:Creating XLS file Using ColdFusion使用 ColdFusion 创建 XLS 文件
【发布时间】:2013-07-22 11:56:42
【问题描述】:

我正在尝试使用 Adob​​e ColdFusion - 8 创建电子表格(.XLS 文件)。 创建电子表格的代码是:

<cfsetting enablecfoutputonly="Yes">
<cfset date_from = "#URL.date_from#">
<cfset date_to = "#URL.date_to#">
<cfset query_id="#URL.queryID#">
<cfquery name="GetEmps" datasource="cfdocexamples">
 <!--- My SQL Queries Goes Here--->
</cfquery>

<cfcontent type="application/msexcel">
<cfheader name="Content-Disposition" value="filename=Employees.xls">
<cfoutput>
    <table cols="4">
        <cfloop query="getData">
            <tr>
                <td>#uid#</td>
                <td>#week#</td>
                <td>#book_count#</td>
            </tr>
        </cfloop>
    </table>
</cfoutput>

每当我运行该页面时,都会创建一个 XLS 工作表,但我找不到任何数据。创建的 XLS 文件大小为 0。

请注意:查询是正确的(因为当我将输出打印为 html 时,我可以看到表格没有任何错误/警告)。

** 读完 cmets: UPD**:

我已经更新了我的代码,现在只包含重要的代码 sn-p。

UPD 2

每当我评论 &lt;cfsetting enablecfoutputonly="Yes"&gt; 行时,都会使用预期数据创建 xls 文件。但是,当我打开生成的文件时,会出现一个对话框:

请注意生成的电子表格是完美的。唯一困扰我的是上面的警告。 另请注意:每当我尝试在 google-docs 中打开电子表格作为预览时,它都会显示由于格式损坏而无法打开该文件。

但是,我可以在 MS-Excel 中完美打开它。

即使将内容类型更改为:&lt;cfcontent type="application/vnd.msexcel"&gt;,我也收到了同样的警告。

【问题讨论】:

  • 我看不到名为“getData”的查询是在哪里创建的。 &lt;cf_sql_select_&gt; 是什么?
  • 这个&lt;cfset date_to = "#URL.date_to#"&gt;只需要&lt;cfset date_to = URL.date_to&gt;除非你专门输出数据#很少需要。
  • @MattBusche 请检查我的更新。谢谢!
  • @ScottStroz:请检查更新。谢谢!
  • @ritesh_NITW - 那是因为您并没有真正生成 real excel 文件(只是 html)。该警告是由Excel's Extension Hardening 安全功能引起的。它不能在服务器上禁用。避免它的唯一方法是确保内容与扩展名匹配。例如,您可以使用cfspreadsheet 生成真正的excel 文件,或者改为生成CSV 文件等。只要实际内容与您的cfheader 中的文件扩展名匹配即可。

标签: coldfusion coldfusion-8


【解决方案1】:

虽然我无法确切说明如何实现这一点,但我知道我组织内的开发人员使用 Apache POI 解决了这个问题。这似乎对他们有用。它确实必须通过 Coldfusion 使用 Java 完成。 Here 就是一个例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多