Adobe-ColdFusion讀寫(xiě)Microsoft-Office-Excel數(shù)據(jù)_第1頁(yè)
Adobe-ColdFusion讀寫(xiě)Microsoft-Office-Excel數(shù)據(jù)_第2頁(yè)
Adobe-ColdFusion讀寫(xiě)Microsoft-Office-Excel數(shù)據(jù)_第3頁(yè)
Adobe-ColdFusion讀寫(xiě)Microsoft-Office-Excel數(shù)據(jù)_第4頁(yè)
Adobe-ColdFusion讀寫(xiě)Microsoft-Office-Excel數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Adobe ColdFusion讀寫(xiě)Microsoft Office Excel數(shù)據(jù) Adobe公司最新推出的ColdFusion9新增了很多令人興奮地功能,這些功能具體體現(xiàn)在新出現(xiàn)的標(biāo)簽(Tag)上。比如,與微軟Office文件的互操作性(CFSPREADSHEET),與其最新開(kāi)發(fā)工具ColdFusion Builder的緊密集成,對(duì)象-關(guān)系映射(ORM),與微軟Office SharePoint的集成(CFSHAREPOINT),ColdFusion作為服務(wù),Adobe AIR本地/遠(yuǎn)程數(shù)據(jù)庫(kù)同步,服務(wù)管理器以及對(duì)門(mén)戶標(biāo)準(zhǔn)的嵌入支持等。筆者這幾篇隨筆簡(jiǎn)單介紹下ColdFusion9與Exc

2、el的交互操作。首先做一下準(zhǔn)備工作,安裝ColdFusion9和ColdFusion Builder, 添加ColdFusion Server并且配置好相關(guān)數(shù)據(jù)源。從CFBuilder中RDS Dateview觀測(cè)自帶的示例數(shù)據(jù)庫(kù)可以驗(yàn)證連接正常。如圖1.圖 1         然后還需要一個(gè)示例Excel文件Sales.xls。不妨隨意造些數(shù)據(jù),如圖2. 推薦精選圖 2接著新建ColdFusion Project,姑且命名為MyFirstCFPjt, 從項(xiàng)目中添加一個(gè)文件夾spreadsheet。從新建的spre

3、adsheet中添加一個(gè)新的ColdFusion Page,由于要先做一個(gè)讀取操作的Demo, 因此將其命名為read.cfm. 具體代碼很簡(jiǎn)單,只需要將下面的寫(xiě)到新建的read.cfm中即可用內(nèi)置的瀏覽器進(jìn)行瀏覽操作了。 view source print?1<!- Read as query -> 2<cfspreadsheet 3    action = "read"4    src = "Sales.xls"5  

4、60; query = "myQuery"> 6<cfdump var = "#myQuery#">以上代碼主要是將Sales.xls里的數(shù)據(jù)讀取到一個(gè)query中。然后可以在程序其他地方應(yīng)用這個(gè)query中的數(shù)據(jù)。cfdump標(biāo)簽用來(lái)將特定的ColdFusion對(duì)象的詳細(xì)信息展示出來(lái)。在CFBuilder內(nèi)置的IE瀏覽器中效果如圖3.圖 3     自然,我們也可以以一種開(kāi)發(fā)人員更加熟悉的方式使用查詢結(jié)果,使用方法同普通的查詢。將下面的代碼添加到read.cfm中view s

5、ource 推薦精選print?01<P align=left> </P><P align=left><!- Html content -> 02<html> 03    <head> 04        <title>ColdFusion9 Excel Read Demo</title> 05    </head> 0

6、6    <body> 07        <h2>Demo of retriving data from Excel files</h2> 08        <table border=1> 09            <

7、tr colspan=5 border=0> 10                <th>Sales detail</th> 11            </tr> 12         

8、   <cfoutput query="myQuery"> 13            <tr> 14                <td>#myQuery.COL_1#</td> 15   

9、;             <td>#myQuery.COL_2#</td> 16                <td>#myQuery.COL_3#</td> 17        

10、;        <td>#myQuery.COL_4#</td> 18                <td>#myQuery.COL_5#</td> 19            </

11、tr> 20            </cfoutput> 21        </table>   22    </body> 23</html> 24  25</P>在瀏覽器中瀏覽查看,效果如圖4. 推薦精選圖 4  &

12、#160;    要想獲取某個(gè)特定單元格中的數(shù)據(jù)并將其放入特定變量,利用上面提到的查詢方式很容易實(shí)現(xiàn),但CF9提供了一種更加簡(jiǎn)便的方式,只需要設(shè)置cfspreadsheet標(biāo)簽的rows和columns屬性即可。將下面代碼放入read.cfm, 在瀏覽器中瀏覽。此時(shí)要注意設(shè)置format屬性。view source print?01<!- Read specific cell to variable -> 02<cfspreadsheet 03    action = "read"04&

13、#160;   format="csv"05    src = "Sales.xls"06    name = "myVar"07    sheet = "1"08    rows = "3-5"09    columns = "3"> 10&

14、lt;cfoutput>#myVar#</cfoutput>       這樣就可以像使用普通ColdFusion變量一樣使用從Excel文件特定單元格中獲取的數(shù)據(jù)了。推薦精選上一篇隨筆主要簡(jiǎn)單演示了數(shù)據(jù)讀取操作,要想編輯Excel中數(shù)據(jù)的功能也很容易實(shí)現(xiàn)。代碼幾乎同讀取操作一樣,顯著的不同是要將cfspreadsheet標(biāo)簽的action屬性設(shè)置為write,設(shè)定所要編輯的單元格位置信息并且調(diào)用spreadsheetSetCellValue方法進(jìn)行編輯。我們繼續(xù)使用上一篇隨筆中的那個(gè)示例Excel文件Sales.x

15、ls, 如圖1.圖 1     注意這個(gè)文件第2行第2列的數(shù)字現(xiàn)在是“50000”。新建一個(gè)ColdFusion Page, 并將下面的代碼添加進(jìn)去。view source print?01<!- Read spreadsheet -> 02<cfspreadsheet action="read"03    src="Sales.xls"04    name="sObj"> 05&#

16、160; 06<!- Set cell value -> 07<cfset spreadsheetSetCellValue(sObj, 60000, 2, 2)> 08  09<!- Write spreadsheet -> 10<cfspreadsheet action="write"11    overwrite="true"12    filename="Sales.xls"13

17、    name="sObj">推薦精選  在瀏覽器中運(yùn)行。然后再次打開(kāi)Sales.xls文件??梢园l(fā)現(xiàn)第2行第2列數(shù)據(jù)已經(jīng)變成了“60000”。如圖2.圖 2前面的示例用了最簡(jiǎn)單的方式介紹了用ColdFusion編輯Excel文件的方式。為了使操作更加靈活方便,筆者再來(lái)演示一個(gè)稍微復(fù)雜的例子。首先新建一個(gè)ColdFusion Page, 與第一篇隨筆對(duì)應(yīng),取名為write.cfm. 添加下面的代碼用來(lái)新建一個(gè)cfform, 注意將form的action屬性設(shè)置為"#CGI.script_name#"

18、;. view source print?01<!- Form used to set entry infomation -> 02<h3>Set specific cell with specific value</h3> 03<cfform action="#CGI.script_name#"> 04<br> 05Region:  06<cfselect name="row"> 07    <option value=&qu

19、ot;2">Northeast</option> 08    <option value="3">East</option> 09    <option value="4">Central</option> 10    <option value="5">South</option> 11  

20、60; <option value="6">Southwest</option> 12    <option value="7">West</option> 13</cfselect> 14<br> 推薦精選15<br> 16Quarter:  17<cfselect name="col"> 18    <option value=&q

21、uot;2">Q1</option> 19    <option value="3">Q2</option> 20    <option value="4">Q3</option> 21    <option value="5">Q4</option> 22</cfselect> 23<br>

22、24<br> 25Sales: $<cfinput type="text" name="sales" required="true" validate="integer"> 26<br> 27<br> 28<cfinput type="submit" name="btnSave" value="Save"> 29<br> 30</cfform>  

23、60;  在瀏覽器中運(yùn)行一下,看到效果如圖3, 其外觀與普通html form沒(méi)有什么區(qū)別。推薦精選圖 3接下來(lái)在頁(yè)面頂部定義三個(gè)變量,分別用來(lái)表示要設(shè)置的單元格行,列,值信息。view source print?1<!- Init vars -> 2<cfparam name="FORM.row" default=""> 3<cfparam name="FORM.col" default=""> 4<cfparam name="FORM.sa

24、les" default="">最后添加前面講過(guò)的讀寫(xiě)方法,來(lái)實(shí)現(xiàn)對(duì)Excel文件的操作。view source print?01<!- Form submitted -> 02<cfif FORM.row NEQ ""03    AND FORM.col NEQ ""04    AND FORM.sales NEQ ""> 05    <!- Rea

25、d spreadsheet -> 06    <cfspreadsheet action="read"07        src="Sales.xls"08        name="sObj"> 09    <!- Set cell value -> 10 

26、   <cfset spreadsheetSetCellValue(sObj, FORM.sales, FORM.row, FORM.col)> 11    <!- Write spreadsheet -> 12    <cfspreadsheet action="write"13        overwrite="true"14

27、60;       filename="Sales.xls"15        name="sObj"> 16</cfif>這樣,就可以對(duì)特定的單元格的數(shù)據(jù)進(jìn)行編輯了。推薦精選在實(shí)際應(yīng)用中,除了對(duì)已有Excel表單進(jìn)行讀寫(xiě)操作外,我們很有可能會(huì)需要將系統(tǒng)數(shù)據(jù)導(dǎo)出到Excel文件。導(dǎo)出Excel實(shí)質(zhì)上是利用現(xiàn)有的數(shù)據(jù)新建一個(gè)Excel文件。ColdFusion9很容易實(shí)現(xiàn)這個(gè)功能。下面筆者將

28、通過(guò)小示例來(lái)演示一下。首先新建一個(gè)ColdFusion Page, create.cfm. 將下面的代碼添加進(jìn)去。view source print?01<!- Get data -> 02<cfquery name="arts" datasource="cfartgallery"> 03    SELECT *  04    FROM ART 05</cfquery> 06  07<!- Create

29、spreadsheet -> 08<cfspreadsheet action="write"09    filename="Arts.xls"10    query="arts"11    overwrite="true">此處cfquery標(biāo)簽的datasource屬性為安裝ColdFusion9時(shí)自帶的示例數(shù)據(jù)源,cfartgallery. 利用ColdFusion Buil

30、der的RDS Query Viewer可以對(duì)其中數(shù)據(jù)進(jìn)行查看,先來(lái)看一下ART表中的數(shù)據(jù),如圖1. 推薦精選圖 1從代碼中可以看出其功能是將ART表中的內(nèi)容讀入到arts查詢中,然后寫(xiě)入到一個(gè)新的Excel文件Arts.xls. overwrite=”true”保證如果Excel表單不存在則創(chuàng)建,存在則覆蓋。在瀏覽器中運(yùn)行,可以看到當(dāng)前目錄下多了一個(gè)Excel文件,效果如圖2. 圖 2推薦精選上面的示例僅僅是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)通過(guò)ColdFusion查詢寫(xiě)入到一個(gè)新的Excel表單中。這是最原始的方法,其中并沒(méi)有在意新建的Excel表單的美觀程度,也沒(méi)有我們很想要的匯總等等腳注信息,這可不是一

31、個(gè)“制作精良”的表單。其實(shí)ColdFusion提供了好多方法可以更加靈活的對(duì)要寫(xiě)入Excel的數(shù)據(jù)進(jìn)行處理,包括添加表單屬性,設(shè)置格式,設(shè)置公式等等。為了演示這些功能,新建一個(gè)ColdFusion Page, decorate.cfm. 這里將再次用第一篇隨筆中那個(gè)造出來(lái)的數(shù)據(jù),如圖3.圖 3要完成這個(gè)Demo, 我們采用下面的步驟(有些步驟并不是必須的,當(dāng)然這些也可以不是所有的步驟)。步驟1把數(shù)據(jù)讀取到一個(gè)查詢中備用。實(shí)現(xiàn)方法是將下面的代碼添加到decorate.cfm. view source print?1<!- Read as query -> 2<cfspreads

32、heet 3    action="read"4    src="Sales.xls"5    query="myQuery">步驟2利用spreadsheetNew方法新建一個(gè)表單對(duì)象:view source print?1<!- Create new spreadsheet -> 2<cfset sObj=spreadsheetNew()>步驟3為這個(gè)新建的表單添加一些屬性信息:推薦

33、精選view source print?1<!- Set sheet properties -> 2<cfset info=StructNew()> 3<cfset info.title="Sales Detail"> 4<cfset info.author="spoony"> 5<cfset ments="comments for the sales detail sheet"> 6<cfset spreadsheetAddInfo(sObj, info)>步驟

34、4為表單添加一個(gè)標(biāo)題,并進(jìn)行以下修飾以便使它能與內(nèi)容區(qū)分出來(lái):view source print?1<!- Create and format header row -> 2<cfset spreadsheetAddRow(sObj, "Sales detail: ")> 3<cfset spreadsheetFormatRow(sObj, bold="true", italic="true", fontsize="12", 1)>步驟5將步驟1中獲取的數(shù)據(jù)填入到新建的表單對(duì)象中

35、:view source print?1<!- Add data from query -> 2<cfset spreadsheetAddRows(sObj, myQuery)> 3<cfset spreadsheetFormatRow(sObj, bold="true", alignment="center", 2)>步驟6定義一些變量以便以后使用。注意公式信息同Excel中語(yǔ)法是一致的:view source print?1<!- Figure out row for formula, 2 afer data

36、 -> 2<cfset rowDataStart=2> 3<cfset rowDataEnd=myQuery.recordcount+1> 4<cfset rowTotal=rowDataEnd+2> 推薦精選5<cfset totalFormulaB="SUM(B#rowDataStart#:B#rowDataEnd#)"> 6<cfset totalFormulaC="SUM(C#rowDataStart#:C#rowDataEnd#)"> 7<cfset totalFormulaD="SUM(D#rowDataStart#:D#rowDataEnd#)"> 8<cfset totalFormulaE="SUM(E#rowDataStart#:E#rowDataEnd#)">步驟7設(shè)置匯總單元格,并應(yīng)用步驟6中的公式計(jì)算:view source print?1<!- Add total formula -> 2<cfset spreadsheetSetCellValue(sObj, &q

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論