我在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完成吗?或者我是否只能在每张纸上使用一个查询?
答案 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)>
不要挂在这个例子的不雅之处。关键是如果你不限制自己,你可以用电子表格功能做很多事情。