1

我编写了一个 ColdFusion 文件,它从数据库中获取一些数据并将其存储在一个数组中并填充一些变量。然后我将其格式化为 html 表并将其输出到保存在服务器上的 excel 文件中。

我遇到的问题是当页面被访问时,文件被写入,但浏览器也被提示下载 cfm 文件。比如我访问页面( bla/bla/get_open_today.cfm) 文件是写的,但是浏览器也想下载get_open_today.cfm。有谁知道是什么导致了这个问题?

这是输出到excel的代码:

<!--- Export to XLS file --->
<cfsavecontent variable="saveContent1">
<cfcontent type="application/msexcel">
<cfoutput>
<table border="1">
</tr>
<th >Hall ID</th>
<th >Room Number</th>
<th >Room Type</th>
<th >In Date</th>
<th >Clean Date</th>
<th >Comments</th>
</tr>
</cfoutput>
<cfoutput>
<cfloop index="x" from="1" to="#ArrayLen(myarray)#">
    <tr><td>#myarray[x][1]#</td><td> #myarray[x][2]# </td><td>#myarray[x][3]# </td><td>#myarray[x][4]#                                  </td><td>#myarray[x][5]#</td><td>#myarray[x][6]#</td></tr>
</td>
</cfloop>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td>One Bedroom</td>
        <td>#oneBR#</td>
        <td>Units Assigned</td>
        <td>#unitsAssigned#</td>
    </tr>
    <tr>
        <td>Two Bedroom</td>
        <td>#twoBR#</td>
        <td>Units Unassigned</td>
        <td>#unitsUnassigned#</td>
    </tr>
    <tr>
        <td>Three Bedroom</td>
        <td>#threeBR#</td>
        <td>Total Units</td>
        <td>#totalUnits#</td>
    </tr>
</cfoutput>

</table>
</cfsavecontent>
<cffile action="write" mode="777" output="#saveContent1#" file="Example/www/BFILES/Unit_Report.xls">
4

2 回答 2

4

删除cfcontent - 这是将页面的内容类型标头设置为未处理的类型,从而提示浏览器提供下载。

cfcontent 的目的是向客户端发送信息——在 cfsavecontent 内部使用没有任何效果,因为 savecontent 只是对大字符串执行 cfset 的一种方便方式。

您不能使用 / 不需要 cfcontent 将 HTML 保存为 XLS 文件。

于 2012-12-14T17:07:03.627 回答
0

当 MS 发布 Office 2007 时,使用 html 表格标签进行 Excel 导出的技术成为一种糟糕的做事方式。它仍然有效,但不是很好。

幸运的是有更好的方法。ColdFusion 的更高版本具有 cfspreadsheet 标签。如果您的版本不够新,Ben Nadel 的博客有一个指向 Apache POI 的链接,您可以使用该链接。

于 2012-12-14T17:26:18.590 回答