使用 cfwheels、coldfusion 和 cfspreadsheet 创建具有非标准列名(带空格)的 excel 文件导出

Create an excel file export with non standard column names (with spaces) using cfwheels, coldfusion and cfspreadsheet

这更像是一个操作方法,而不是一个实际问题。 (我搜索了没找到解决方案,所以我想出了这个)

我需要创建一个 excel 文件导出,允许用户:

  1. 使用表单过滤数据,来自原始 table
  2. 将结果从原始 table.
  3. 导出到 excel 文件
  4. 允许包含空格和一些特殊字符的非标准列名。
  5. 在某些列中格式化导出的数据,同时保留原始 table 值(用于过滤)。

我搜索了但找不到解决方案,所以我想到了这个:

使用示例 table "Salary"

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"

models\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">