0

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

我在页面上有一个 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

每个在绘制信息的页面上都有自己的选择语句。这可以用cfspreadsheet完成吗?还是我被锁定在每张纸上只使用一个查询?

4

2 回答 2

4

这可以用cfspreadsheet完成吗?

不可以。该write操作只接受一个查询。但是,您始终可以将工作表读入变量。然后使用SpreadSheetAddRow将附加值附加到该工作表。

顺便说一句,您还可以直接从变量流式传输电子表格。请注意,这可能会占用更多资源。

<cfheader name="Content-Disposition" value="attachment; filename=someFile.xls" />
<cfcontent type="application/vnd.msexcel" 
        variable="#spreadSheetReadBinary(yourSpreadSheetObject)#" />  
于 2013-04-18T23:57:29.347 回答
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)>

不要沉迷于这个例子的不雅。关键是,如果您不限制自己,您可以使用电子表格功能做很多事情。

于 2013-04-19T02:30:53.950 回答