2013-02-21 3 views
5

면책 조항 : coldfusion에 처음 들어 왔습니다. 이미지와 여러 탭이 포함 된 Excel 2010 문서를 만들려고합니다. XLS로 출력 할 수 있었지만 이미지를 파일로 가져올 수 없습니다.coldfusion을 사용하여 xlsx 파일을 만드는 방법

XLSx 파일을 올바르게 만드는 방법에 대한 전체 예제를 찾을 수 없었습니다. 나는 나쁜 습관이 아니라 올바른 방법을 배우고 나 자신의 나쁜 습관을 개발하는 것을 선호합니다. 나는 (첫 번째 버전 9에 소개) ColdFusion에서의 내장 스프레드 시트 기능을 사용하는 것이 좋습니다 것

<!--- Make CF export to Excel ---> 
<!--- This will create a XLS file ---> 
<!--- <cfheader name="Content-Disposition" value="attachment; filename=#URL.TRNo#_image.xls"> 
<cfcontent type="application/vnd.msexcel"> ---> 

<!--- This does not work to create an XLSX file ---> 
<cfheader name="Content-Disposition" value="inline; filename=#URL.TRNo#_image.xlsx"> 
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"> 

<cfparam name="URL.TRNo" default="AD0310"> 

<cfoutput> 
    <?xml version="1.0"?> 
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
     <ss:Styles> 
      <ss:Style ss:ID="Default" ss:Name="Normal"> 
       <ss:Font ss:Size="11" ss:FontName="Calibri"/> 
      </ss:Style> 
      <ss:Style ss:ID="Left"> 
       <ss:Alignment ss:Horizontal="Left"/> 
      </ss:Style> 
      <ss:Style ss:ID="Center"> 
       <ss:Alignment ss:Horizontal="Center"/> 
      </ss:Style> 
      <ss:Style ss:ID="Right"> 
       <ss:Alignment ss:Horizontal="Right"/> 
      </ss:Style> 
     </ss:Styles> 


     <Worksheet ss:Name="#URL.TRNo# page 1"> 
      <ss:Table ss:DefaultColumnWidth="15" ss:DefaultRowHeight="15"> 
       <Row ss:Height="51"><!--- Start Row 1 ---> 
        <Cell ss:Index="1" ss:MergeAcross="9"> 
         <Data ss:Type="String">Final Test Report</Data> 
        </Cell> 
        <Cell ss:Index="11" ss:MergeAcross="10" ss:StyleID="Center"> 
         <Data ss:Type="String"><!--- <img src="http://wwwdev.elmsweb.ford.com/elmsGEN3/SafetyLab/FMVSS/ReportWriter/img/fordLogo_transparent_small.png" height="68" width="181" alt="13"> ---></Data> 
        </Cell> 
        <Cell ss:Index="22" ss:MergeAcross="9" ss:StyleID="Right"> 
         <Data ss:Type="String">Confidential</Data> 
        </Cell> 
       </Row><!--- End Row 1 ---> 
       <Row/><!--- Row 2 Blank ---> 
       <Row><!--- Start Row 3 ---> 
        <Cell ss:Index="1" ss:MergeAcross="1" ss:StyleID="Right"> 
         <Data ss:Type="String">To:</Data> 
        </Cell> 
        <Cell ss:Index="3" ss:MergeAcross="12"> 
         <Data ss:Type="String"></Data> 
        </Cell> 
        <Cell ss:Index="16" ss:MergeAcross="10" ss:StyleID="Right"> 
         <Data ss:Type="String">Test Order:</Data> 
        </Cell> 
        <Cell ss:Index="27" ss:MergeAcross="4"> 
         <Data ss:Type="String">#URL.TRNo#</Data> 
        </Cell> 
       </Row><!--- End Row 3 ---> 
      </ss:Table> 
     </Worksheet> 
    </Workbook> 
</cfoutput> 
+4

<cfset var_filenameis = "Myspreadsheet.xlsx"> <cfset SpreadsheetObj = spreadsheetNew("true")> <cfset SpreadsheetObj = spreadsheetNew("#var_filenameis#","yes")> <cfspreadsheet action="write" filename="./xlsx/#var_filenameis#" query="Myquery" overwrite="true"> <cflocation url = "./xlsx/#var_filenameis#"> 

이 사용 해봤 ColdFusion에서 내장 된 스프레드 시트 기능? [SpreadsheetNew 기능에 대한 설명서] (http://help.adobe.com/ko_KR/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-747b.html). 'xmlformat' 매개 변수를 'true'로 설정하면 .xlsx 파일이 생성됩니다. _이 기능을 사용하려면 ColdFusion 9 이상이 필요합니다. –

+1

이들 모두 XLS 또는 XLSX 파일을 기술적으로 만들지는 않으며 Excel에 제공되는 XML 파일을 만듭니다. 첫 번째 줄에서'cfheader/content'를 쉽게 사용할 수 있으며 XLSX 파일로 "나타나야"확장자를 변경합니다. 그러나 XLS/XLSX 형식은 아닙니다. – Busches

+0

@ Miguel-F 고맙습니다. 저는 그것이 올바른 방향으로 나아가는 단계라고 생각합니다. 하지만 어떻게 사용자가 파일을 얻을 수 있습니까, 나는 그들을 서버에 저장하고 싶지 않아? – BTThomas

답변

6

: 여기

은 예입니다. 다음은 documentation for the SpreadsheetNew function입니다. xmlformat 매개 변수를 'true'로 설정하면 .xlsx 파일이 생성됩니다.

이러한 ColdFusion 기능을 사용하는 방법에 대한 웹 (여기에는 SO)이 몇 가지 예가 있습니다. Raymond Camden has a nice example here은 스프레드 시트를 생성하고 cfcontent 태그를 사용하여 사용자에게 직접 전달하는 방법에 대해 설명합니다. Here is another example from Raymond은 첫 번째 예를 기반으로합니다.

3

저는 일주일 내내이 작업을 해왔으며 결과를 공유하고 싶었습니다. 이 코드는 Windows Server 2008 R2에서 CF 9를 사용하여 저에게 적합합니다. 그건 그렇고, CFSpreadsheet 큰 수출에 많은 메모리를 소비하는 것 같습니다. 이러한 이유로 서버의 실제 메모리를 늘린 후 CF 관리자를 사용하여 관리자 -> Java 및 JVM 설정에서 jvm 힙 크기를 늘립니다. 내 최대 자바 힙 크기는 이제 3072 Gig입니다. 도움이 필요하십니까?

코드 [email protected] :

예 쿼리는 "MYQUERY"스프레드 시트라고 불린다 "Myspreadsheet"나는라는 하위 디렉토리에 스프레드 시트를 내보내 나는 "XLSX"나는 당신이 서버 문제에 찰리 Arehart에 문의하는 것이 좋습니다 cflocation을 사용하여 브라우저를 스프레드 시트에 연결하십시오. 브라우저는 사용자에게 열거 나 저장 또는 취소하라는 메시지를 표시합니다. 데이브 크래프트

+0

실제 Excel 파일을 서버에 로컬로 저장합니까? 그게 필요한 단계인가? (그것을하는 이상한 방법이 보인다. 그러나 나는 아직 대안을 발견하지 못했다) –

관련 문제