2013-04-18 2 views
0

Я запускаю Coldfusion 10 в Центре данных Microsoft Windows Server 2008 R2 - SP 1 с источником данных SQL Server 2012.Добавление текстовых/дополнительных запросов в вывод cfspreadsheet

У меня есть 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

Можно ли это сделать с помощью cfspreadsheet?

№ Действие write принимает только один запрос. Однако вы всегда можете прочитать лист в переменной. Затем используйте SpreadSheetAddRow, чтобы добавить дополнительные значения к этому листу.

Как в стороне, вы также можете передавать таблицу непосредственно из переменной. Обратите внимание, что это может быть немного более ресурсоемким.

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

В зависимости от данных, вы можете объединить все в один запрос и обойти его таким образом. Но это немного хакерский ... – Leigh

1

Вы не заперты ни в чем. Существует несколько способов поместить данные в электронную таблицу. Ли дал вам ссылку на одну из доступных функций, которые предоставляет 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)> 

Не зацикливайтесь на неэлегантность этого примера. Дело в том, что вы можете делать много вещей с помощью электронных таблиц, если не ограничиваете себя.

Смежные вопросы