2016-04-08 11 views
7

Bu, gerçek bir sorudan daha fazlasıdır.Standart olmayan sütun adları (boşluklu) ile cfwheels, coldfusion ve cfspreadsheet kullanarak bir excel dosyası dışa aktarma oluşturun

ben izin verecek bir excel dosyası ihracat oluşturmak için gerekli (I aradı ve bir çözüm bulamadık, bu yüzden bu geldi) kullanıcılar için:

  1. filtre bir form kullanarak veri, gelen Orijinal tablo
  2. Sonuçları orijinal tablonun bir excel dosyasına verin.
  3. Standart olmayan sütun isimlerini boşluklarla ve bazı özel karakterlerle izin ver.
  4. Dışa aktarılan verileri, orijinal tablo değerlerini (filtreleme için) tutarken, bazı sütunlarda biçimlendirin.
+2

(Düzenle) Gönderdiğiniz için teşekkürler. SO'nun Q & A formatı ile uyumlu olarak, ayrı bir "Soru" haline getirebilir ve sonra çözümü "Cevap" olarak ayrı ayrı gönderebilir misiniz? (Her ikinizin de sorup cevapladığınızdan bu yana biraz garip olduğunu biliyorum, ama bu [kendi sorunuzu cevaplama] (http://stackoverflow.com/help/self-answer)/nasıl bir yöntem oluşturmanın tercih edilen yöntemi gibi görünüyor. :-) – Leigh

+0

Bu oldukça harika! Kesinlikle @Leigh önerdi ne yapmak. –

+0

Çok teşekkürler! Benim için faydalı olacak. – Thorsten

cevap

3

Ben arandı ve bir çözüm bulamadık, bu yüzden bu geldi:

örnek tablosu "Maaş" kullanma

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) 

İlk excel verilerini çekmek için özel bir model oluşturmak . Örnek "export.cfc"

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

Sonra sadece excel ihracat için gereken özel sütunları çekin. ([] gereklidir)

<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

Bu süper zekidir. Kullanmakta olduğumuz bir başka aptal hack yerine bunu kullanmak için bazı Excel işlevlerimizi değiştirmeyi planlıyorum. –

+0

Bu kulağa harika geliyor. –

İlgili konular