Создайте экспорт файла Excel с нестандартными именами столбцов (с пробелами), используя cfwheels, coldfusion и cfspreadsheet.

Это скорее инструкция, чем реальный вопрос. (Я искал и не мог найти решение, поэтому я придумал это)

Мне нужно было создать экспорт файла Excel, который позволил бы пользователям:

  1. отфильтровать данные с помощью формы из исходной таблицы
  2. Экспортируйте результаты в файл Excel из исходной таблицы.
  3. Разрешить нестандартные имена столбцов с пробелами и некоторыми специальными символами.
  4. Отформатируйте экспортированные данные в некоторых столбцах, сохранив исходные значения таблицы (для фильтрации).

person Bob Marley    schedule 08.04.2016    source источник
comment
(Изменить) Спасибо за публикацию. В соответствии с форматом вопросов и ответов SO, не могли бы вы разбить его на отдельный вопрос, а затем опубликовать решение отдельно как ответ? (Я знаю, что это немного странно, поскольку вы и спрашиваете, и отвечаете, но, похоже, это предпочтительный метод ответа на ваш собственный вопрос / создание инструкции :-)   -  person Leigh    schedule 08.04.2016
comment
Это очень круто! Определенно делайте то, что предложил @Leigh.   -  person Chris Peters    schedule 09.04.2016
comment
Большое спасибо! Будет полезно для меня.   -  person Thorsten    schedule 12.04.2016
comment
Извини за это. Я исправил формат.   -  person Bob Marley    schedule 12.04.2016
comment
Большое спасибо. (Приятным побочным эффектом является то, что люди теперь могут голосовать как за вопрос , так и за ответ :)   -  person Leigh    schedule 13.04.2016


Ответы (1)


Я искал и не мог найти решение, поэтому я придумал это:

Используя образец таблицы «Зарплата»

CREATE TABLE [dbo].[Salary](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [employee_id] [varchar](36) NULL,
    [salary] [decimal](18, 0) NULL,
    [createdat] [datetime] NULL,
    [updatedat] [datetime] NULL,
    [updated_by] [varchar](36) NULL,
    [created_by] [varchar](36) NULL )

Сначала создайте специальную модель для извлечения данных Excel. Пример "export.cfc"

модели\экспорт.cfc

<cfcomponent extends="Model" output="false">
    <cffunction name="init">   
      <cfset table("Salary")/>
       <!--- defined properties to allow spaces in column names via [] alias.--->
      <cfset property(sql="employee_id", name="[Employee ID]")>
      <cfset property(sql="dbo.getName(employee_id)", name="[The Employee Name]")>
      <cfset property(sql="salary", name="[He gets paid what?]")>
      <cfset property(sql="CONVERT(VARCHAR, createdAt, 101)", name="[Date Created]")>
    </cffunction>   
</cfcomponent>

Затем просто вытащите определенные столбцы, необходимые для экспорта в Excel. ([] являются обязательными)

<cfset columns = "id,[employee id],[The Employee Name],[He gets paid what?],[Date Created]"/>

<cfset excelData = model("export").findAll( 
                                        select=columns,
                                        parameterize=false
                                         ) />
<cfspreadsheet 
        action = "write"  
        filename="#expandpath('files')#\export.xls" 
        query="excelData" 
        overwrite="true">
person Bob Marley    schedule 12.04.2016
comment
Это суперумно. Я планирую изменить некоторые из наших функций Excel, чтобы использовать это вместо другого глупого хака, который мы использовали. - person Chris Peters; 18.04.2016
comment
Звучит здорово. - person Bob Marley; 03.05.2016