2024年6月21日发(作者:)
用ASP如何生成excel报表
生成报表是做系统经常遇到的事,一些企业或者单位往往要求
EXCEL格式的报表!
第一种方式 利用FSO生成文本文件。
程序代码:
Set fs = Object("stemobject")
'--假设你想让生成的EXCEL文件做如下的存放
filename = "c:"
'-创建EXCEL文件
set myfile = TextFile(filename,true)
sql,conn
if and then
else
dim strLine,responsestr
strLine=""
For each x in
strLine= strLine & & chr(9)
Next
'--将表的列名先写入EXCEL
ine strLine
Do while Not
strLine=""
for each x in
strLine= strLine & & chr(9)
next
'--将表的数据写入EXCEL
ine strLine
xt
loop
end if
Set fs=Nothing
这方法的好处是不管有多少条记录 速度上是没问题 但是有一个很
严重的缺点 就是生成的EXCEL文件的格式不能得到很好的控制 例如
单元格的格式不能改变等
第二种方法 用EXCEL组件+EXCEL模板
原理是打开一个存在的EXCEL模板文件 然后写入数据后在另存为
所要的报表文件
优点:格式能很好的控制
缺点:速度上很慢 (因为控件接口很费资源)
看了微软的说明又想到了用数组做中转的方法 只要打开一个接口
写入所有数据,于是问题得到了解决,可是新的问题出来了,100万或者更
高的记录时 数组就的空间分配就成了问题了.
工夫不负有心人 ,经过几天努力 终于完美解决
就是记录多时分批写入~~~~~~~~~
程序代码:
sub writetoarr(lines,begin_rs,begin_exl)
'======================================
========================================
'过程writetoarr(lines,begin_rs,begin_exl)写入EXCEL
'lines:要写入的记录条数
'begin_rs:从第几条记录开始
'begin_exl:要写入的EXCEL开始位置
'======================================
========================================
redim temparr(lines-1,11)
'--将表的列名存放到数组
'--将表的数据存放到数组
ii=1
For i = begin_rs To begin_rs+lines-1
j=0
' ii&"
"
For each x in
temparr(ii-1,j)=
j=j+1
Next
ii=ii+1
xt
Next
("A"&begin_exl).Resize(lines, 12).Value
= temparr
redim temparr(0,0)
"从A"&begin_exl&"开始写到
A"&begin_exl+lines&"
"
"从第"&begin_rs&"条到"&begin_rs+lines&"
条记录
"
"共写入"&lines&"行
"
"-------------------------
"
end sub
maxk=count
beginrs=1 '从第几条记录开始,一般是1
beginexl=2 '从excel的第几行开始写,一般是2
liness=200 '每次操作多少条记录,不建议超过10万
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
发布者:admin,转转请注明出处:http://www.yc00.com/news/1718942101a2753739.html
评论列表(0条)