这几天在经典、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 hun.net.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文件夹....要不然会出错.
相关讨论:
http://www.blueidea.com/bbs/newsdetail.asp?id=791903
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器