0

我是一名 Coldfusion 开发人员,正在开发一个报告应用程序以显示来自 CFSTOREDPROC 进程的信息。我已经能够从我的查询中获取数据以在 CFGRID 中正确显示,而且我对数据的显示非常满意。网格节省了大量时间,因为它避免了使用 CFOUTPUT 标记和为数百个报告设置 HTML 格式的数据。

我想做的就是在数据网格控件的某处添加一个简单的磁盘图标,该图标将保存数据网格的内容并将其导出到最终用户可以在电子表格程序中操作的 XLSX(2010) 文件中。这很重要,因为数据需要在一年中的某些时间保存“快照”。

尝试过的解决方案:我研究了报告选项页面中的链接,该链接将触发到 report_xls.cfm 页面,但设计一个第二次捕获所有报告选项的页面似乎很愚蠢,并且会向网站添加数千个 CFM。

由于各种原因,CFSPREADSHEET 似乎不起作用。一是服务器似乎一直在用这个标签中的“写”功能与我抗争。另一个是我不知道如何使 javascript 为这个按钮工作以获得我想要的输出。

我还考虑将其作为一个 Javascript 按钮来执行,该按钮会根据输入的数据触发。虽然如果我使用 CFOUTPUT 块,来自 CFSTOREDPROC 的数据将正确显示,但 CFGRID 似乎很难处理除 HTML 之外的所有输出样式。这给这些解决方案带来了一些困难,因为应用程序不会输出一个整洁的 HTML 表格,而是发送一个 javascript 页面部分。

4

1 回答 1

0

Raymond Camden 的博客包含我们在项目中使用的从 CFGRID 导出的条目。

文章中的示例导出为 PDF,但修改download.cfm文件以导出为 Excel 文件也相当简单:

  1. 您修改该文件以<table>...</table>在标记中从他的示例生成 HTML <cfsavecontent variable="exportList">,以便该#exportList#变量包含将在电子表格中显示的表。
  2. 接下来我们有一个 URL 参数mode,用于确定是导出为 PDF 还是 Excel。

所以我们的结尾download.cfm看起来像下面这样:

<cfif url.mode EQ "PDF">
  <cfheader name="Content-Disposition" value="inline; filename=report.pdf">
  <cfdocument format="pdf" orientation="landscape">    
    <cfoutput>#exportList#</cfoutput>
  </cfdocument>
<cfelse>
  <cfcontent type="application/vnd.ms-excel">
  <cfheader name="Content-Disposition" value="report.xls">
  <cfoutput>#exportList#</cfoutput>
</cfif>
于 2012-01-17T10:35:25.880 回答