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

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

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

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

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"

Модели \export.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">
Другие вопросы по тегам