求ASP的EXCEL报表输出~!~!急急~!

zeng_job 2010-05-13 10:05:31
表1和表2是数据库的基本表,表3需要生成的EXCEL报表~!



根据表1和表2怎样得到表三样式的报表,谢谢各位阿~!~!
...全文
117 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shan1119 2010-05-13
  • 打赏
  • 举报
回复
sql:

create table tbl1 (code varchar(10),name varchar(10),tel varchar(11), address varchar(15),primary key(code));
create table tbl2 (code varchar(10),pname varchar(15),account number,primary key(code,pname));

insert into tbl1 values('021SS001Q','a','13612345678','.........201');
insert into tbl1 values('021SS002X','b','13712345678','.........301');
insert into tbl1 values('021SS003S','c','13812345678','.........502');
insert into tbl1 values('021SS004H','d','13912345678','.........203');
insert into tbl1 values('021SS005B','e','13512345678','.........704');

insert into tbl2 values('021SS001Q','NOKIA-N97mini',2);
insert into tbl2 values('021SS001Q','NOKIA-E71',10);
insert into tbl2 values('021SS002X','NOKIA-N70',1);
insert into tbl2 values('021SS003S','HTC-G2',5);
insert into tbl2 values('021SS003S','HTC-G3',5);
insert into tbl2 values('021SS004H','IPHONE-16G',3);
insert into tbl2 values('021SS005B','HTC-G3',10);
insert into tbl2 values('021SS005B','HTC-HD',5);
insert into tbl2 values('021SS005B','NOKIA-5800',20);

--drop table tbl1;
--drop table tbl2;

html:

<%@ Language=VBScript %>
<p>show</p>
<%
dim rs
dim sql

sql="select a.code,a.name,a.tel,a.address,b.pname,b.account from tbl1 a, tbl2 b where a.code=b.code"
rs.open sql,conn
%>
<script>
var data=[];
<% while not rs.eof%>
if(!data['<%=rs("code")%>']){
data['<%=rs("code")%>']=[];
data['<%=rs("code")%>']["name"]='<%=rs("name")%>';
data['<%=rs("code")%>']["tel"]='<%=rs("tel")%>';
data['<%=rs("code")%>']["address"]='<%=rs("address")%>';
data['<%=rs("code")%>']["p"]+='<%=rs("pname")%>'+"("+'<%=rs("account")%>'+")";
}else{
data['<%=rs("code")%>']["p"]+=";"+'<%=rs("pname")%>'+"("+'<%=rs("account")%>'+")";
}
<% rs.movenext
wend%>
var tbl=document.createElement("table");
for(var i in data){
var row=tbl.insertRow();
var cell=row.insertCell();cell.innerHTML=i;
cell=row.insertCell();cell.innerHTML=data[i]["name"];
cell=row.insertCell();cell.innerHTML=data[i]["tel"];
cell=row.insertCell();cell.innerHTML=data[i]["address"];
cell=row.insertCell();cell.innerHTML=data[i]["p"];
}
tbl.border=1;
document.body.appendChild(tbl);
</script>
zeng_job 2010-05-13
  • 打赏
  • 举报
回复
怎么和订单号对应呢?一批订单,每个订单有N个产品,每个产品有M个量,资质愚钝也可能我没有表述清楚,数据库里面只有这2个表。这个是订单表
这个是订单详细表。



niehuihui 2010-05-13
  • 打赏
  • 举报
回复
后面不是有数据吗~~~

Response.Write(Rs("商品名称")&"("Rs("数量")")")
zeng_job 2010-05-13
  • 打赏
  • 举报
回复
你好,现在关键是表3的红色字段部分我不知道怎么做,谢谢
homel 2010-05-13
  • 打赏
  • 举报
回复
1。首先从数据库中取出记录
表三中的数据分别是从表一和表而终提取的,其关联条件是订单号
2.将数据导入excel
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
nowfilename=replace(replace(replace(now,":","")," ",""),"/","")
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "content-disposition", "inline; filename = 表三.xls"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Untitled Document</title>
</head>
<body>
<%
sql="select a.*,b.* from a,b where a.订单号=b.订单号"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
%>
<table width="89%" border="1" cellpadding="3" >
<tr>
<th colspan="12" style="font-size:10pt;" align="center"><%=startdate%>至<%=enddate%>库存明细表记录</th>
</tr>
<tr>
<th width="7%" style="font-size:9pt;">序号</th>
<th width="12%" style="font-size:9pt;">料号</th>
<th width="12%" style="font-size:9pt;">品名</th>
<th width="12%" style="font-size:9pt;">产品名称</th>
<th width="5%" style="font-size:9pt;">单位</th>
<th width="11%" style="font-size:9pt;">交易日期</th>
<th width="9%" style="font-size:9pt;">opening</th>
<th width="7%" style="font-size:9pt;">in</th>
<th width="15%" style="font-size:9pt;">in_return</th>
<th width="6%" style="font-size:9pt;">out</th>
<th width="16%" style="font-size:9pt;">out_return</th>
<th width="12%" style="font-size:9pt;">balance</th>
</tr>
<%i=0
do while not rs.eof
i=i+1%>
<tr>
<td style="font-size:9pt;"><%=i%></td>
<td style="font-size:9pt;"><%=rs("id_talk_code")%></td>
<td style="font-size:9pt;"><%if rs("prod_descr_cn")<>"" then%><%=rs("prod_descr_cn")%><%else%><%=rs("prod_descr_en")%><%end if%></td>
<td style="font-size:9pt;"><%=rs("prod_name_cn")%></td>
<td style="font-size:9pt;"> </td>
<td style="font-size:9pt;"><%=rs("create_date")%></td>
<td style="font-size:9pt;"><%=rs("opening")%></td>
<td style="font-size:9pt;"><%=rs("in")%></td>
<td style="font-size:9pt;"><%=rs("in_retrun")%></td>
<td style="font-size:9pt;"><%=rs("out")%></td>
<td style="font-size:9pt;"><%=rs("out_return")%></td>
<td style="font-size:9pt;"><%=rs("balance")%></td>
</tr>
<%rs.movenext
loop
rs.close
set rs=nothing%>
</table>

</body>
</html>


上面只是一个事例,具体的你更改一下...
gingerkang 2010-05-13
  • 打赏
  • 举报
回复
如果只把表1生成excel报表,你是怎么生成的?
zeng_job 2010-05-13
  • 打赏
  • 举报
回复
非常感谢,homel,toury两位~!
homel 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 homel 的回复:]
引用 9 楼 zeng_job 的回复:
我引用homel的代码:

VBScript code
<%
nowfilename=replace(replace(replace(now,":","")," ",""),"/","")
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Res……
[/Quote]
图里=toury
homel 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zeng_job 的回复:]
我引用homel的代码:

VBScript code
<%
nowfilename=replace(replace(replace(now,":","")," ",""),"/","")
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader ……
[/Quote]
lz,在图里的页面上加入一个href<a href="list_excel.asp">导入到Excel</a>
list_excel.asp的内容跟图里的应该是一样的,不过要加上上面那段代码...
zeng_job 2010-05-13
  • 打赏
  • 举报
回复
我引用homel的代码:
<%  
nowfilename=replace(replace(replace(now,":","")," ",""),"/","")
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "content-disposition", "inline; filename = 表三.xls"
%>

不起作用哦,是什么原因。第一个问题已经解决,非常谢谢toury~!
toury 2010-05-13
  • 打赏
  • 举报
回复
导入EXCEL的部分,你用homel的代码
toury 2010-05-13
  • 打赏
  • 举报
回复

<!--#include file="conn.asp"-->
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>TEST</title>
<link rel="stylesheet" type="text/css" href="../CSS/css.css">
<style>
.header{font-family :"宋体"; color:#FFFFFF;background:#5A94AC;height:19px;}
.render{font-family :"宋体"; color:#480000;height:17px;}
</style>
</head>
<body>
<%
set rs=server.CreateObject("adodb.recordset")
sql="SELECT DISTINCT 订单表.订单号, 订单表.订货人姓名, 订单表.电话, 订单表.地址 FROM 订单表"
rs.open sql,conn,1,1

with Response
.Write("<table border=1 bordercolor='#CCCCCC' cellpadding=0 cellspacing=0 width='100%' style='border-collapse: collapse' id='tblData'>")
.Write("<tr align='center' class=header>")
for i=0 to rs.fields.count-1
.Write("<td><nobr>"&rs.fields(i).name&"</nobr></td>")
next
.Write("<td><nobr>商品信息</nobr></td>")
.Write("</tr>")
if rs.eof or rs.bof then
Response.Write "</table><table><tr><td><h2><font color='#FF0000'>无记录;</font></h2></td></tr></table>"
release rs
release conn
Response.End
end if

for i=0 to rs.RecordCount-1
.write "<tr bgcolor='"&trBgColor&"' class=render>"
for j=0 to rs.fields.count-1
.write "<td><nobr>"&rs.Fields(j)&"</nobr></td>"
next
'组合商品信息字串
sql="SELECT 商品名称 & '(' & 数量 & ')' AS 商品信息 FROM 订单表 INNER JOIN 订单详细表 ON 订单表.订单号 = 订单详细表.订单号 WHERE 订货人姓名='"&rs("订货人姓名")&"'"
set rst=conn.execute(sql)
s=""
do while not rst.eof
if s="" then s=rst(0) else s=s&","&rst(0)
rst.movenext
loop
release rst
if len(s)=0 then s=" "
.Write "<td><nobr>"&s&"</nobr></td>"
.write "</tr>"
rs.movenext
if rs.eof then exit for
next
end with
release rs
release conn

sub release(o)
if not isobject(o) then exit sub
if o.state<>0 then o.close
set o=nothing
end sub
%>
</body></html>

数据表结构:
订单表:
autoID 订单号 订货人姓名 电话 地址
1250 021SH001Q 张三 1111111 AAAAAAAAA
1251 021SH002X 李四 2222222 BBBBBBBB
1252 021SH003S 王五 3333333 CCCCCCCC
1253 021SH004H 马六 4444444 DDDDDDDD
1254 021SH005B 田七 5555555 EEEEEEEE
1255 021SH007Q 张三 1111111 AAAAAAAAA
1256 021SH008S 王五 3333333 CCCCCCCC

订单详细表:
autoID 订单号 商品名称 数量
5358 021SH001Q NOKIA-1 2
5359 021SH001Q NOKIA-2 10
5360 021SH002X NOKIA-3 1
5361 021SH003S HTC-G2 5
5362 021SH003S HTC-G3 5
5363 021SH004H PHONE-16G 3
5364 021SH005B HTC-G3 10
5365 021SH005B HTC-HD 5
5366 021SH005B NOKIA-5800 20

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧