用Coldfusion生成OFFICE文件的代码
这几天在经典、5D碰到很多人在问,如何用CF生成EXCEL文件,昨天夜晚就写了一个示范程序放上来供大家参考。
我建议大家先自己慢慢体会,程序本身并不复杂,如果看不懂的再来问,最好不要看都没看就来发问...
好的,我就用我CCF论坛的数据库来做是实验,目的是在线打开EXCEL文件和在线生成EXCEL文件。文件内容就是CCF论坛所有版块的名称和编号。我顺便做了个生成WORD文件的.代码就改了一处.大家仔细看看.
在线打开OFFICE文件必须你系统安装了OFFICE。记住这点,要不然就会提示下载。
!---Application.cfm文件代码---
CFAPPLICATION NAME="CfToOffice"
sessionmanagement="Yes"
CFSET request.DSN="CCF" !---数据库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 编号 /b /td td align="center" b 名称 /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打开 /a br br
a href="doc.cfm" target="_blank" 以WEB方式用word打开 /a br br
a href="file.cfm" target="_blank" 生成EXCEL文件并下载 /a br br br
CopyRight(C)wait hunanet.com
/center
/body
/html
!-----这个文件是用来在线以EXCEL文件形式打开的代码----
!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
!--------增加一个生成WORD示范....注意,就只改动了一处.---------
!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
!---大家关心的来了,接下来我们做重要部分了----
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
cfsetting enablecfoutputonly="Yes" !-- 删除空白,提高性能 --
cfparam name="filebody" default=""
cfset tabchar=chr(9) !-- 设置TAB变量 --
cfset newline=chr(13) chr(10) !-- 设置换行变量 --
cfset filepath=expandpath("file/") !-- 把相对路径换成绝对路径 --
cfset writepath="#filepath##session.cfid#.xls" !-- 绝对路径加上文件名 --
!-- 查询数据 --
cfquery name="getboard" datasource="#request.dsn#"
select boardID,boardNAME from board
order by boardID
/cfquery
!-- 把所有信息设为一个变量filebody --
cfloop query="getboard"
cfoutput
cfset filebody=filebody "#boardID##tabchar##boardname#" newline
/cfoutput
/cfloop
!-- 把filebody写入文件 --
cffile action="WRITE" file="#writepath#" output="#filebody#" addnewline="No"
cfoutput 你所需要的信息已经生成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
值得注意的,我把存放动态生成的XLS文件存放在一个叫FILE的文件夹.你运行这代码时必须先建立一个FILE文件夹....要不然会出错.
用Coldfusion生成OFFICE文件的代码