Можно ли добавить в CFGRID кнопку, позволяющую пользователю экспортировать сетку в файл XLSX? Как?

Я разработчик coldfusion, работающий над отчетным приложением для отображения информации из процесса CFSTOREDPROC. Мне удалось добиться правильного отображения данных из моего запроса в CFGRID, и я очень доволен отображением данных. Сетка экономит много времени, поскольку позволяет избежать использования тега CFOUTPUT и форматирования данных в HTML для сотен отчетов.

Все, что я хотел бы сделать, это добавить простой значок диска где-нибудь в элементе управления сеткой данных, который бы сохранял содержимое сетки данных и экспортировал его в файл XLSX (2010), которым конечный пользователь мог бы затем манипулировать в программе для работы с электронными таблицами. Это важно, потому что данные должны иметь «моментальный снимок» в определенное время года.

Пробованные решения: я искал ссылку со страницы параметров отчета, которая будет вести на страницу report_xls.cfm, но разработка страницы, которая захватывает все параметры отчета во второй раз, кажется глупой и добавила бы тысячи CFM на веб-сайт.

CFSPREADSHEET, похоже, не работает по целому ряду причин. Во-первых, кажется, что сервер постоянно борется со мной с функцией «запись» в этом теге. Другое дело, что я не знаю, как заставить javascript работать с этой кнопкой, чтобы получить желаемый результат.

Я также рассматривал возможность сделать это как кнопку Javascript, которая будет срабатывать на основе введенных данных. Хотя данные из CFSTOREDPROC будут отображаться правильно, если я использую блок CFOUTPUT, похоже, что CFGRID испытывает трудности со всеми стилями вывода, кроме HTML. Это вызвало некоторые трудности с этими решениями, потому что приложение не выдает аккуратную HTML-таблицу, а вместо этого отправляет раздел страницы javascript.


person Brad Hines    schedule 12.01.2012    source источник


Ответы (1)


В блоге Рэймонда Камдена есть запись Экспорт из CFGRID. которые мы использовали в нашем проекте.

Пример в статье экспортирует в PDF, но довольно просто изменить файл download.cfm для экспорта в файлы Excel:

  1. Вы изменяете файл, чтобы сгенерировать <table>...</table> HTML из его примера в теге <cfsavecontent variable="exportList">, чтобы переменная #exportList# содержала таблицу, которая будет отображаться в электронной таблице.
  2. Далее у нас есть параметр URL mode, который определяет, экспортируется ли он в PDF или Excel.

Итак, конец нашего download.cfm выглядит следующим образом:

<cfif url.mode EQ "PDF">
  <cfheader name="Content-Disposition" value="inline; filename=report.pdf">
  <cfdocument format="pdf" orientation="landscape">    
    <cfoutput>#exportList#</cfoutput>
  </cfdocument>
<cfelse>
  <cfcontent type="application/vnd.ms-excel">
  <cfheader name="Content-Disposition" value="report.xls">
  <cfoutput>#exportList#</cfoutput>
</cfif>
person Wernsey    schedule 17.01.2012
comment
Есть ли способ экспортировать версию Excel в XLSX? Я получаю всплывающее окно в Excel, в котором говорится, что формат файла и расширение «имя файла» не совпадают ..., что может отпугнуть людей. Спасибо - person frostshoxx; 02.10.2013
comment
Если вы используете этот метод, расширение должно быть .xls. .xlsx — более новый формат. Этот ответ немного устарел. Вместо этого см. здесь. - person Wernsey; 02.10.2013