Создайте экспорт в файл Excel с нестандартными именами столбцов (с пробелами), используя cfwheels, coldfusion и cfspreadsheet
Это скорее практический вопрос, чем реальный вопрос. (Я искал и не мог найти решение, поэтому я придумал это)
Мне нужно было создать экспорт в файл Excel, который позволил бы пользователям:
- фильтровать данные, используя форму из исходной таблицы
- Экспортируйте результаты в файл Excel из исходной таблицы.
- Разрешить нестандартные имена столбцов с пробелами и некоторыми специальными символами.
- Отформатируйте экспортированные данные в некоторых столбцах, сохранив исходные значения таблицы (для фильтрации).
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">