这几天在经典、5D碰到很多人在问,如何用CF生成EXCEL文件,昨天夜晚就写了一个示范程序放上来供大家参考。
我建议大家先自己慢慢体会,程序本身并不复杂,如果看不懂的再来问,最好不要看都没看就来发问...
好的,我就用我CCF论坛的数据库来做是实验,目的是在线打开EXCEL文件和在线生成EXCEL文件。文件内容就是CCF论坛所有版块的名称和编号。我顺便做了个生成WORD文件的.代码就改了一处.大家仔细看看.
在线打开OFFICE文件必须你系统安装了OFFICE。记住这点,要不然就会提示下载。
<->
<CFAPPLICATIONNAME="CfToOffice"
sessionmanagement="Yes">
<CFSETrequest.DSN="CCF"><->
<--index.cfm文件代码------->
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<cfqueryname="viewlist"datasource="#request.dsn#">
selectboardID,boardNAMEfromboard
orderbyboardID
</cfquery>
<html>
<head>
<title>CCForum栏目一览</title>
</head>
<body>
<center><h3>CCForum栏目一览</h3></center><br><br>
<tableborder="1"align="center">
<tr><tdalign="center"><b>编号</b></td><tdalign="center"><b>名称</b></td></tr>
<cfoutputquery="viewlist">
<tr><tdalign="center">#boardID#</td><tdalign="left">#boardname#</td></tr>
</cfoutput>
</table>
<p>
<center>
<ahref="web.cfm"target="_blank">以WEB方式用EXCEL打开</a><br><br>
<ahref="doc.cfm"target="_blank">以WEB方式用word打开</a><br><br>
<ahref="file.cfm"target="_blank">生成EXCEL文件并下载</a><br><br><br>
CopyRight(C)waithunanet.com
</center>
</body>
</html>
<-这个文件是用来在线以EXCEL文件形式打开的代码---->
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<cfsettingenablecfoutputonly="Yes">
<cfqueryname="getboard"datasource="#request.dsn#">
selectboardID,boardNAMEfromboard
orderbyboardID
</cfquery>
<cfcontenttype="application/msexcel">
<cfheadername="Content-Disposition"value="filename=board.xls">
<cfsettabchar=chr(9)>
<cfsetnewline=chr(13)&chr(10)>
<cfloopquery="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<----增加一个生成WORD示范....注意,就只改动了一处.--------->
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<cfsettingenablecfoutputonly="Yes">
<cfqueryname="getboard"datasource="#request.dsn#">
selectboardID,boardNAMEfromboard
orderbyboardID
</cfquery>
<cfcontenttype="application/msword">
<cfheadername="Content-Disposition"value="filename=board.doc">
<cfsettabchar=chr(9)>
<cfsetnewline=chr(13)&chr(10)>
<cfloopquery="getboard">
<cfoutput>#boardID##tabchar##boardname##newline#</cfoutput>
</cfloop>
<-->
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<cfsettingenablecfoutputonly="Yes"><>
<cfparamname="filebody"default="">
<cfsettabchar=chr(9)><>
<cfsetnewline=chr(13)&chr(10)><>
<cfsetfilepath=expandpath("file/")><>
<cfsetwritepath="#filepath##session.cfid#.xls"><>
<>
<cfqueryname="getboard"datasource="#request.dsn#">
selectboardID,boardNAMEfromboard
orderbyboardID
</cfquery>
<>
<cfloopquery="getboard">
<cfoutput>
<cfsetfilebody=filebody&"#boardID##tabchar##boardname#"&newline>
</cfoutput>
</cfloop>
<>
<cffileaction="WRITE"file="#writepath#"output="#filebody#"addnewline="No">
<cfoutput>你所需要的信息已经生成EXCEL格式文件,
文件地址是:<br>
<ahref="file/#session.cfid#.xls">http<cfifCGI.HTTPSneq'off'>s</cfif>
://#CGI.HTTP_HOST#/CF/Excel/file/#session.cfid#.xls</a>
</cfoutput>
值得注意的,我把存放动态生成的XLS文件存放在一个叫FILE的文件夹.你运行这代码时必须先建立一个FILE文件夹....要不然会出错.