咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 503|回复: 0

[ColdFusion] 用Coldfusion生成 OFFICE 文件的代码

[复制链接]
  • TA的每日心情
    无聊
    2019-6-2 14:11
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-7-1 10:19:35 | 显示全部楼层 |阅读模式
    这几天在经典、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文件夹....要不然会出错.  

    原文地址:https://www.jb51.net/article/8446.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 17:20

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表