欢迎来到皮皮网网首页

【fluid主题源码】【安卓评论源码】【食堂刷卡软件源码】asp源码 Excel

来源:信托源码 时间:2024-11-24 22:32:33

1.ASP中,要将学生成绩表ACCESS数据库倒出EXCEL,请问完整代码怎么写?
2.请高手帮忙!!!用ASP如何生成excel报表 本人原意贡献所有积分谢谢!fluid主题源码!!安卓评论源码

asp源码 Excel

ASP中,要将学生成绩表ACCESS数据库倒出EXCEL,请问完整代码怎么写?

       我试过一个简单的方法是可行的,先用循环把数据库的数据输出到一个table里,然后在表格后面加这句代码%response.ContentType ="application/vnd.ms-excel"%,运行时就会出现文件下载对话框了,下载下来的文件就是xls文件,文件里的数据就是表格里的数据。

       举个实例:

       table border="1" cellspacing="0" cellpadding="0"

        tr

        td1/td

        td2/td

        td3/td

        /tr

        tr

        td4/td

        td5/td

        td6/td

        /tr

        tr

        td7/td

        td8/td

        td9/td

        /tr

       /table

       %response.ContentType ="application/vnd.ms-excel"%

       把上面的食堂刷卡软件源码代码保存为ASP文件,运行一下,你就会看到效果了。

请高手帮忙!手机访客系统 源码!!用ASP如何生成excel报表 本人原意贡献所有积分谢谢!宁浩源码社区!!

       生成报表是做系统经常遇到的事,一些企业或者单位往往要求EXCEL格式的报表!

       第一种方式

        程序代码

       Set fs = server.CreateObject("scripting.filesystemobject")

       '--假设你想让生成的EXCEL文件做如下的存放

       filename = "c:\online.xls"

       '-创建EXCEL文件

       set myfile = fs.CreateTextFile(filename,true)

       rs.Open sql,conn

       if rs.EOF and rs.BOF then

       else

       dim strLine,responsestr

       strLine=""

       For each x in rs.fields

       strLine= strLine & x.name & chr(9)

       Next

       '--将表的列名先写入EXCEL

       myfile.writeline strLine

       Do while Not rs.EOF

       strLine=""

       for each x in rs.Fields

       strLine= strLine & x.value & chr(9)

       next

       '--将表的数据写入EXCEL

       myfile.writeline strLine

       rs.MoveNext

       loop

       end if

       Set fs=Nothing

       这方法的好处是不管有多少条记录 速度上是没问题 但是有一个很严重的缺点 就是生成的EXCEL文件的格式不能得到很好的控制 例如 单元格的格式不能改变等

       第二种方法 用EXCEL组件+EXCEL模板

       原理是打开一个存在的EXCEL模板文件 然后写入数据后在另存为所要的报表文件

       优点:格式能很好的控制

       缺点:速度上很慢 (因为控件接口很费资源)

       看了微软的说明又想到了用数组做中转的方法 只要打开一个接口写入所有数据,于是问题得到了解决,可是新的问题出来了,万或者更高的记录时 数组就的空间分配就成了问题了.

       工夫不负有心人 ,经过几天努力 终于完美解决

       就是记录多时分批写入~~~~~~~~~

        程序代码

       sub writetoarr(lines,begin_rs,begin_exl)

       '==============================================================================

       '过程writetoarr(lines,begin_rs,begin_exl)写入EXCEL

       'lines:要写入的记录条数

       'begin_rs:从第几条记录开始

       'begin_exl:要写入的EXCEL开始位置

       '==============================================================================

       redim temparr(lines-1,)

       '--将表的列名存放到数组

       '--将表的数据存放到数组

       ii=1

       For i = begin_rs To begin_rs+lines-1

        j=0

        'response.write ii&"<br>"

        For each x in rs.fields

        temparr(ii-1,j)=x.value

        j=j+1

        Next

        ii=ii+1

       rs.movenext

       Next

       objExcelSheet.Range("A"&begin_exl).Resize(lines, ).Value = temparr

       redim temparr(0,0)

       response.write "从A"&begin_exl&"开始写到A"&begin_exl+lines&"<br>"

       response.write "从第"&begin_rs&"条到"&begin_rs+lines&"条记录<br>"

       response.write "共写入"&lines&"行<br>"

       response.write "-------------------------<br>"

       end sub

       maxk=rs.recordcount

       beginrs=1 '从第几条记录开始,一般是1

       beginexl=2 '从excel的第几行开始写,一般是2

       liness= '每次操作多少条记录,不建议超过万

       do while maxk>0

        if maxk>liness then

        call writetoarr(liness,beginrs,beginexl)

        beginrs=beginrs+liness

        beginexl=beginexl+liness

        maxk=maxk-liness

        else

        call writetoarr(maxk,beginrs,beginexl)

        exit do

        end if

       loop

       Set fs = server.CreateObject("scripting.filesystemobject")

       '--假设你想让生成的EXCEL文件做如下的存放

       filename = "c:\online.xls"

       '-创建EXCEL文件

       set myfile = fs.CreateTextFile(filename,true)

       rs.Open sql,conn

       if rs.EOF and rs.BOF then

       else

       dim strLine,responsestr

       strLine=""

       For each x in rs.fields

       strLine= strLine & x.name & chr(9)

       Next

       '--将表的列名先写入EXCEL

       myfile.writeline strLine

       Do while Not rs.EOF

       strLine=""

       for each x in rs.Fields

       strLine= strLine & x.value & chr(9)

       next

       '--将表的数据写入EXCEL

       myfile.writeline strLine

       rs.MoveNext

       loop

       end if

       Set fs=Nothing

       这方法的好处是不管有多少条记录 速度上是没问题 但是有一个很严重的缺点 就是生成的EXCEL文件的格式不能得到很好的控制 例如 单元格的格式不能改变等

       第二种方法 用EXCEL组件+EXCEL模板

       原理是打开一个存在的EXCEL模板文件 然后写入数据后在另存为所要的报表文件

       优点:格式能很好的控制

       缺点:速度上很慢 (因为控件接口很费资源)

       看了微软的说明又想到了用数组做中转的方法 只要打开一个接口写入所有数据,于是问题得到了解决,可是新的问题出来了,万或者更高的记录时 数组就的空间分配就成了问题了.

       工夫不负有心人 ,经过几天努力 终于完美解决

       就是记录多时分批写入~~~~~~~~~

        程序代码

       sub writetoarr(lines,begin_rs,begin_exl)

       '==============================================================================

       '过程writetoarr(lines,begin_rs,begin_exl)写入EXCEL

       'lines:要写入的记录条数

       'begin_rs:从第几条记录开始

       'begin_exl:要写入的EXCEL开始位置

       '==============================================================================

       redim temparr(lines-1,)

       '--将表的列名存放到数组

       '--将表的数据存放到数组

       ii=1

       For i = begin_rs To begin_rs+lines-1

        j=0

        'response.write ii&"<br>"

        For each x in rs.fields

        temparr(ii-1,j)=x.value

        j=j+1

        Next

        ii=ii+1

       rs.movenext

       Next

       objExcelSheet.Range("A"&begin_exl).Resize(lines, ).Value = temparr

       redim temparr(0,0)

       response.write "从A"&begin_exl&"开始写到A"&begin_exl+lines&"<br>"

       response.write "从第"&begin_rs&"条到"&begin_rs+lines&"条记录<br>"

       response.write "共写入"&lines&"行<br>"

       response.write "-------------------------<br>"

       end sub

       maxk=rs.recordcount

       beginrs=1 '从第几条记录开始,一般是1

       beginexl=2 '从excel的第几行开始写,一般是2

       liness= '每次操作多少条记录,不建议超过万

       do while maxk>0

        if maxk>liness then

        call writetoarr(liness,beginrs,beginexl)

        beginrs=beginrs+liness

        beginexl=beginexl+liness

        maxk=maxk-liness

        else

        call writetoarr(maxk,beginrs,beginexl)

        exit do

        end if

       loop