用Coldfusion生成 OFFICE 文件的代碼
更新時(shí)間:2007年03月15日 00:00:00 作者:
這幾天在經(jīng)典、5D碰到很多人在問(wèn),如何用CF生成EXCEL文件,昨天夜晚就寫(xiě)了一個(gè)示范程序放上來(lái)供大家參考。
我建議大家先自己慢慢體會(huì),程序本身并不復(fù)雜,如果看不懂的再來(lái)問(wèn),最好不要看都沒(méi)看就來(lái)發(fā)問(wèn)...
好的,我就用我CCF論壇的數(shù)據(jù)庫(kù)來(lái)做是實(shí)驗(yàn),目的是在線(xiàn)打開(kāi)EXCEL文件和在線(xiàn)生成EXCEL文件。文件內(nèi)容就是CCF論壇所有版塊的名稱(chēng)和編號(hào)。我順便做了個(gè)生成WORD文件的.代碼就改了一處.大家仔細(xì)看看.
在線(xiàn)打開(kāi)OFFICE文件必須你系統(tǒng)安裝了OFFICE。記住這點(diǎn),要不然就會(huì)提示下載。
<!---Application.cfm文件代碼--->
<CFAPPLICATION NAME="CfToOffice"
sessionmanagement="Yes">
<CFSET request.DSN="CCF"><!---數(shù)據(jù)庫(kù)DSN--->
<!------index.cfm文件代碼------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfquery name="viewlist" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<html>
<head>
<title>CCForum欄目一覽</title>
</head>
<body>
<center><h3>CCForum欄目一覽</h3></center><br><br>
<table border="1" align="center">
<tr><td align="center"><b>編號(hào)</b></td><td align="center"><b>名稱(chēng)</b></td></tr>
<cfoutput query="viewlist">
<tr><td align="center">#boardID#</td><td align="left">#boardname#</td></tr>
</cfoutput>
</table>
<p>
<center>
<a href="web.cfm" target="_blank">以WEB方式用EXCEL打開(kāi)</a><br><br>
<a href="doc.cfm" target="_blank">以WEB方式用word打開(kāi)</a><br><br>
<a href="file.cfm" target="_blank">生成EXCEL文件并下載</a><br><br><br>
CopyRight(C)wait hunanet.com
</center>
</body>
</html>
<!-----這個(gè)文件是用來(lái)在線(xiàn)以EXCEL文件形式打開(kāi)的代碼---->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes">
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<cfcontent type="application/msexcel">
<cfheader name="Content-Disposition" value="filename=board.xls">
<cfset tabchar=chr(9)>
<cfset newline=chr(13)&chr(10)>
<cfloop query="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<!--------增加一個(gè)生成WORD示范....注意,就只改動(dòng)了一處.--------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes">
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<cfcontent type="application/msword">
<cfheader name="Content-Disposition" value="filename=board.doc">
<cfset tabchar=chr(9)>
<cfset newline=chr(13)&chr(10)>
<cfloop query="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<!---大家關(guān)心的來(lái)了,接下來(lái)我們做重要部分了---->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes"><!-- 刪除空白,提高性能 -->
<cfparam name="filebody" default="">
<cfset tabchar=chr(9)><!-- 設(shè)置TAB變量 -->
<cfset newline=chr(13)&chr(10)><!-- 設(shè)置換行變量 -->
<cfset filepath=expandpath("file/")><!-- 把相對(duì)路徑換成絕對(duì)路徑 -->
<cfset writepath="#filepath##session.cfid#.xls"><!-- 絕對(duì)路徑加上文件名 -->
<!-- 查詢(xún)數(shù)據(jù) -->
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<!-- 把所有信息設(shè)為一個(gè)變量filebody -->
<cfloop query="getboard">
<cfoutput>
<cfset filebody=filebody & "#boardID##tabchar##boardname#" & newline>
</cfoutput>
</cfloop>
<!-- 把filebody寫(xiě)入文件 -->
<cffile action="WRITE" file="#writepath#" output="#filebody#" addnewline="No">
<cfoutput>你所需要的信息已經(jīng)生成EXCEL格式文件,
文件地址是:<br>
<a href="file/#session.cfid#.xls">http<cfif CGI.HTTPS neq 'off'>s</cfif>
://#CGI.HTTP_HOST#/CF/Excel/file/#session.cfid#.xls</a>
</cfoutput>
值得注意的,我把存放動(dòng)態(tài)生成的XLS文件存放在一個(gè)叫FILE的文件夾.你運(yùn)行這代碼時(shí)必須先建立一個(gè)FILE文件夾....要不然會(huì)出錯(cuò).
我建議大家先自己慢慢體會(huì),程序本身并不復(fù)雜,如果看不懂的再來(lái)問(wèn),最好不要看都沒(méi)看就來(lái)發(fā)問(wèn)...
好的,我就用我CCF論壇的數(shù)據(jù)庫(kù)來(lái)做是實(shí)驗(yàn),目的是在線(xiàn)打開(kāi)EXCEL文件和在線(xiàn)生成EXCEL文件。文件內(nèi)容就是CCF論壇所有版塊的名稱(chēng)和編號(hào)。我順便做了個(gè)生成WORD文件的.代碼就改了一處.大家仔細(xì)看看.
在線(xiàn)打開(kāi)OFFICE文件必須你系統(tǒng)安裝了OFFICE。記住這點(diǎn),要不然就會(huì)提示下載。
<!---Application.cfm文件代碼--->
<CFAPPLICATION NAME="CfToOffice"
sessionmanagement="Yes">
<CFSET request.DSN="CCF"><!---數(shù)據(jù)庫(kù)DSN--->
<!------index.cfm文件代碼------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfquery name="viewlist" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<html>
<head>
<title>CCForum欄目一覽</title>
</head>
<body>
<center><h3>CCForum欄目一覽</h3></center><br><br>
<table border="1" align="center">
<tr><td align="center"><b>編號(hào)</b></td><td align="center"><b>名稱(chēng)</b></td></tr>
<cfoutput query="viewlist">
<tr><td align="center">#boardID#</td><td align="left">#boardname#</td></tr>
</cfoutput>
</table>
<p>
<center>
<a href="web.cfm" target="_blank">以WEB方式用EXCEL打開(kāi)</a><br><br>
<a href="doc.cfm" target="_blank">以WEB方式用word打開(kāi)</a><br><br>
<a href="file.cfm" target="_blank">生成EXCEL文件并下載</a><br><br><br>
CopyRight(C)wait hunanet.com
</center>
</body>
</html>
<!-----這個(gè)文件是用來(lái)在線(xiàn)以EXCEL文件形式打開(kāi)的代碼---->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes">
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<cfcontent type="application/msexcel">
<cfheader name="Content-Disposition" value="filename=board.xls">
<cfset tabchar=chr(9)>
<cfset newline=chr(13)&chr(10)>
<cfloop query="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<!--------增加一個(gè)生成WORD示范....注意,就只改動(dòng)了一處.--------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes">
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<cfcontent type="application/msword">
<cfheader name="Content-Disposition" value="filename=board.doc">
<cfset tabchar=chr(9)>
<cfset newline=chr(13)&chr(10)>
<cfloop query="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<!---大家關(guān)心的來(lái)了,接下來(lái)我們做重要部分了---->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<cfsetting enablecfoutputonly="Yes"><!-- 刪除空白,提高性能 -->
<cfparam name="filebody" default="">
<cfset tabchar=chr(9)><!-- 設(shè)置TAB變量 -->
<cfset newline=chr(13)&chr(10)><!-- 設(shè)置換行變量 -->
<cfset filepath=expandpath("file/")><!-- 把相對(duì)路徑換成絕對(duì)路徑 -->
<cfset writepath="#filepath##session.cfid#.xls"><!-- 絕對(duì)路徑加上文件名 -->
<!-- 查詢(xún)數(shù)據(jù) -->
<cfquery name="getboard" datasource="#request.dsn#">
select boardID,boardNAME from board
order by boardID
</cfquery>
<!-- 把所有信息設(shè)為一個(gè)變量filebody -->
<cfloop query="getboard">
<cfoutput>
<cfset filebody=filebody & "#boardID##tabchar##boardname#" & newline>
</cfoutput>
</cfloop>
<!-- 把filebody寫(xiě)入文件 -->
<cffile action="WRITE" file="#writepath#" output="#filebody#" addnewline="No">
<cfoutput>你所需要的信息已經(jīng)生成EXCEL格式文件,
文件地址是:<br>
<a href="file/#session.cfid#.xls">http<cfif CGI.HTTPS neq 'off'>s</cfif>
://#CGI.HTTP_HOST#/CF/Excel/file/#session.cfid#.xls</a>
</cfoutput>
值得注意的,我把存放動(dòng)態(tài)生成的XLS文件存放在一個(gè)叫FILE的文件夾.你運(yùn)行這代碼時(shí)必須先建立一個(gè)FILE文件夾....要不然會(huì)出錯(cuò).
相關(guān)文章
Coldfusion MX PageList 菜鳥(niǎo)版教程
Coldfusion MX PageList 菜鳥(niǎo)版教程...2007-03-03收藏的ColdFusionMX應(yīng)用技巧及問(wèn)題集
收藏的ColdFusionMX應(yīng)用技巧及問(wèn)題集...2007-03-03ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)
ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)...2007-03-03ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程
ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程...2007-03-03