Как добавить определенные столбцы запроса в объект электронной таблицы в Coldfusion

У меня есть объект запроса, который содержит 5 столбцов, но мне нужно добавить в электронную таблицу только 4 столбца. Когда я использую <cfset spreadSheetAddRows(spreadSheetObj,qryObj)>, он добавляет все столбцы в электронную таблицу. Я не могу удалить 5-й столбец из запроса, так как он требуется для какой-то другой цели.

Итак, как я могу добавить только 4 столбца из запроса в электронную таблицу?

Пример: мой запрос содержит 4 столбца, например «Id, Name, Roll, CGPA».

Но мой лист Excel должен содержать только «Id, Name, Roll».

Как это сделать?


person user3427540    schedule 11.04.2014    source источник


Ответы (2)


Вы можете выполнить Query-of-Query, чтобы создать временный запрос, который затем можно использовать для загрузки в ваш spreadSheetAddRows().

<cfquery name="local.spreadsheetQuery" dbtype="query">
SELECT Id,Name,Roll
FROM variables.originalQuery
</cfquery>

Затем используйте <cfset spreadSheetAddRows(spreadSheetObj,local.spreadsheetQuery)> вместо <cfset spreadSheetAddRows(spreadSheetObj,variables.originalQuery)>.

person Fish Below the Ice    schedule 11.04.2014
comment
Нет прямой функции для этого? - person user3427540; 11.04.2014
comment
Это не очень хороший способ выполнить задачу. Нет необходимости во втором запросе. - person fyroc; 11.04.2014
comment
Для этого нет прямой функции? Нет. Варианты: а) зациклить и добавить значения ячеек вручную б) создать промежуточный запрос, содержащий только необходимые столбцы ИЛИ в) добавить все столбцы, затем удалите лишнее. У каждого варианта есть плюсы и минусы. - person Leigh; 11.04.2014
comment
На самом деле, это потенциально очень эффективный способ выполнить задачу. Как только вы сделаете q из q, это будет простой ‹cfspreadsheet query=newquery› - person Dan Bracuk; 11.04.2014
comment
Я исправляюсь. У меня всегда было впечатление, что QoQ замедлит процесс, в зависимости от размера электронной таблицы. - person fyroc; 11.04.2014
comment
С точки зрения того, что происходит под капотом, это, вероятно, менее эффективно. q из q должен выполняться, а результаты занимают больше памяти. Однако повышенная простота кода может сделать его стоящим. - person Dan Bracuk; 12.04.2014

Просто добавьте каждую строку отдельно с помощью SpreadsheetAddRow(spreadsheetObj, data [,row, column, insert]);

А для столбцов используйте SpreadsheetAddColumn(SpreadsheetObj, data[, startRow, startColumn, insert]);

person fyroc    schedule 11.04.2014
comment
Просто проверьте мой пример именно то, что я хочу. - person user3427540; 11.04.2014
comment
Ваш ответ никак не связан с моим вопросом. - person user3427540; 11.04.2014
comment
Ни один из этих вариантов не является хорошим вариантом, поскольку для них требуется список записей ячеек, разделенных запятыми, что требует взлома, если данные содержат запятые. К сожалению, не существует однострочного решения. У всех вариантов есть недостатки, но лично я считаю, что другие чище. - person Leigh; 11.04.2014