Как я могу скачать в Excel? - PullRequest
       16

Как я могу скачать в Excel?

4 голосов
/ 22 декабря 2010

Я бы хотел предложить функциональность «скачай для превосходства» для нескольких различных наборов данных, доступных на разных частях моего сайта Coldfusion.Я использую coldfusion и хотел бы использовать свободно доступные пользовательские теги / библиотеки, которые могут помочь мне достичь этого, вместо того, чтобы писать все самому с нуля.Мне указали на cflib.org , но я не уверен, с чего начать.У кого-нибудь есть какие-либо идеи, комментарии или ресурсы по загрузке данных с сайта Coldfusion, чтобы преуспеть?

Ответы [ 6 ]

5 голосов
/ 22 декабря 2010

Подход, который я использовал в прошлом для интрасети с загрузкой табличных статистических данных, заключается в том, чтобы использовать тот факт, что Excel может читать HTML.

На страницах, которые я намереваюсь предоставить в ссылках Excelибо я записываю основную таблицу в виде HTML в файл и включаю ссылку на этот файл на отображаемой странице.Затем вы можете использовать эту страницу с расширением .xls, использовать мета-заголовки или даже использовать промежуточную страницу с CFCONTENT, чтобы ваш браузер запускал Excel для отображения содержимого.

Этот подход может быть расширен дляпроизвольное количество таблиц на странице.Вам нужно будет написать тег для таблицы, которая затем позаботится о написании файла и предоставлении ссылки на скачивание для всего содержимого HTML, содержащегося в нем.

Извините за отсутствие примера кода.Если мое описание процесса заставило вас почесать голову, я приведу несколько примеров для вас.

4 голосов
/ 28 декабря 2010

Вы также можете использовать HTML-таблицу, как в:

<cfquery name="data" datasource="whatever">
...
</cfquery>

<cfheader name="Content-Disposition" value="inline; filename=fileName.xls">
<cfcontent type="application/x-msexcel" reset="true">

<table border="0" cellspacing="0" cellpadding="0">
    <thead>
        <tr>
            <td>Col1</td>
            <td>Col2</td>
        </tr>
    </thead>
    <tbody>
        <cfoutput query="data">
            <tr>
                <td>#data.Col1#</td>
                <td>#data.Col2#</td>
            </tr>
        </cfoutput>
    </tbody>
</table>

НТН,

Larry

2 голосов
/ 22 декабря 2010

Если вы используете ColdFusion 9, вы всегда можете использовать cfspreadsheet:

http://www.cfquickdocs.com/cf9/#cfspreadsheet

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS434C35B0-279B-4051-A61B-D84B5D76189C.html

1 голос
/ 25 января 2011

В итоге мы использовали функцию Query2Excel из cflib.org и слегка изменили ее в соответствии с нашими конкретными потребностями.

1 голос
/ 22 декабря 2010

Опираясь на ответ @Ciaran Archer, я обычно использую для этого CSV, который Excel откроет из Интернета, если он будет установлен на компьютере клиента.Предполагая, что данные, с которыми вы работаете, поступают из базы данных, используйте QueryToCSV () с сайта Бена Наделя следующим образом:

<cfquery name="data" datasource="">
...
</cfquery>
<cfinclude template="fun_queryToCSV.cfm">
<cfheader name="Content-Disposition" value="filename=my-file-name.xls">
<cfcontent type="test/csv" reset="true">
<cfoutput>#querytoCSV(data)#</cfoutput>

«Сброс» на cfcontent очищаетбуфер ответа, так что единственное, что находится внутри него, это то, что следует после.С другой стороны, если у вас уже есть данные в виде файла, у cfcontent есть атрибут «файл», который будет напрямую обслуживать его содержимое.

0 голосов
/ 12 августа 2013

Для тех, кто работает в Coldfusion 9+ и может использовать cfspreadsheet, вы можете использовать SpreadsheetReadBinary (), чтобы сделать электронную таблицу загружаемой без необходимости сначала записывать таблицу в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...