2016-04-08 5 views
7

Dies ist eher ein How-To als eine tatsächliche Frage. (Ich suchte und konnte keine Lösung finden, so kam ich mit diesem nach oben)Erstellen Sie einen Excel-Dateiexport mit nicht standardmäßigen Spaltennamen (mit Leerzeichen) unter Verwendung von cfwheels, coldfusion und cfspreadsheet

Ich brauchte eine Excel-Datei exportieren zu erstellen, mit dem Benutzer erlauben würde:

die Daten
  1. Filter unter Verwendung einer Form, aus Die Originaltabelle
  2. Exportieren Sie die Ergebnisse aus der Originaltabelle in eine Excel-Datei.
  3. Nicht standardmäßige Spaltennamen mit Leerzeichen und einigen Sonderzeichen zulassen.
  4. Formatieren Sie die exportierten Daten in einigen Spalten, während Sie die ursprünglichen Tabellenwerte beibehalten (zum Filtern).
+2

(Bearbeiten) Thanks for posting. Könnte man es in Übereinstimmung mit dem Frage- und Antwortformat von SO in eine separate "Frage" aufteilen und die Lösung dann separat als "Antwort" veröffentlichen? (Ich weiß, es ist ein bisschen komisch, weil Sie beide fragen und antworten, aber das scheint die bevorzugte Methode zu sein, [Ihre eigene Frage zu beantworten] (http://stackoverflow.com/help/self-answer)/Erstellen eines Wie zu :-) – Leigh

+0

Das ist ziemlich genial! Tu definitiv was @Leigh vorgeschlagen hat. –

+0

Vielen Dank! Wird für mich nützlich sein. – Thorsten

Antwort

3

Ich suchte und konnte keine Lösung finden, so kam ich mit auf den Punkt:

Mit Beispieltabelle „Gehalt“

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) 

Zunächst ein Sondermodell erstellen für die Excel-Daten ziehen . Beispiel "export.cfc"

Modelle \ 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> 

Dann ziehen Sie einfach die spezifischen Spalten, die Sie für die Excel-Export benötigen. ([] werden benötigt)

<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"> 
+0

Das ist super schlau. Ich plane, einige unserer Excel-Funktionen zu ändern, um diese anstelle eines anderen dummen Hacks zu verwenden, den wir verwendet haben. –

+0

Das klingt großartig. –

Verwandte Themen