向cfspreadsheet输出添加文本/额外查询

时间:2013-04-18 23:24:47

标签: excel coldfusion cfspreadsheet

我在Microsoft Windows Server 2008 R2数据中心 - 带有SQL Server 2012数据源的SP 1上运行Coldfusion 10。

我在页面上有一个cfspreadsheet标签,如下所示:

<cfinvoke component="assetdata" method="getAllNames" searchString ="#url.searchoption#" returnVariable="result">

<cfspreadsheet 
    action = "write" 
    query="result" 
    filename="#filename#" 
    overwrite="true">
<div>Your spreadsheet is ready. You may download it <a href="search_results.xls">here</a>.</div</div>

我想要做的是除了将查询输出到电子表格之外,还要在其底部添加查询结果:

正在使用的计算机总数:110

要更换的计算机总数:62

已更换的计算机总数:8

每个在绘制信息的页面上都有自己的select语句。这可以用cfspreadsheet完成吗?或者我是否只能在每张纸上使用一个查询?

2 个答案:

答案 0 :(得分:4)

  

可以用cfspreadsheet吗?

没有。 write操作仅接受单个查询。但是,您始终可以将工作表读入变量。然后使用SpreadSheetAddRow向该工作表附加其他值。

另外,您还可以直接从变量中流式传输电子表格。请注意,这可能需要更多的资源。

<cfheader name="Content-Disposition" value="attachment; filename=someFile.xls" />
<cfcontent type="application/vnd.msexcel" 
        variable="#spreadSheetReadBinary(yourSpreadSheetObject)#" />  

答案 1 :(得分:1)

你没有陷入任何困境。有许多方法可以将数据放入电子表格中。 Leigh为您提供了ColdFusion提供的一个可用功能的链接。

大多数(如果不是所有)可用于将数据输出到网页的方法都可用于将数据输出到电子表格。下面是一些示例代码,用于使用数据填充工作表的第1列。稍后在其他查询中填充标题行和使用数据

<cfloop query="DrugsByCategory">
<cfscript>
SpreadsheetAddRow(Workbook, "", RowNumber, 1);
SpreadSheetSetCellValue(Workbook, 
DrugsByCategory.Item[DrugsByCategory.currentrow], RowNumber, 1);

if (DrugsByCategory.type[DrugsByCategory.currentrow] == "Category"){
SpreadsheetFormatCell(Workbook, CategoryFormat, RowNumber, 1); 
StartOfDrugRange = RowNumber + 1;  
}
else if (DrugsByCategory.type[DrugsByCategory.currentrow] == "Summary"){
SpreadsheetFormatCell(Workbook, SummaryFormat, RowNumber, 1); 
EndOfDrugRange = RowNumber - 1;
}
</cfscript>
<!--- get data for each drug, and then the summary --->
<cfif DrugsByCategory.type[DrugsByCategory.currentrow] is "Category">
code for this condition
<cfelseif DrugsByCategory.type[DrugsByCategory.currentrow] is "Drug">
Code for this condition
<cfelseif DrugsByCategory.type[DrugsByCategory.currentrow] is "Summary">
code for this condition
</cfif>  

<cfset RowNumber ++>
</cfloop>
<cfset SpreadSheetAddFreezePane(Workbook, 1, 3)>

不要挂在这个例子的不雅之处。关键是如果你不限制自己,你可以用电子表格功能做很多事情。