asp生成word文件
+展开
-HTML
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
sql = "Select department,count(department) From personnel group by department" '将记录按部门分类统计
Set Cnn = Server.CreateObject("ADODB.Connection") '连接数据库
cnn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.CursorType = 3
Rs.LockType = 3
Rs.Open sql, Cnn
If Rs.EOF Then '如果没有记录就结束
Response.End
End If
%>
<html>
<%'以下显示表格标题和输出表头%>
<p align="center"><b><font size="4">公司员工统计表</font></b></p>
<div align="center">
<table id="data" border="1" width="606" height="53" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> <%'注意:此处标明表格的id为data%>
<tr>
<td width="93" height="24">
<p align="center"><font size="2">部门</font></td>
<td width="78" height="24">
<p align="center"><font size="2">合计</font></td>
<td width="413" height="24">
<p align="center"><font size="2">员工姓名</font></td>
</tr>
<%
hj=0 '设置变量,总人数合计初始值为0
'以下While循环按部门依次完成统计和报表
while (not rs.eof)
departmenttmp=rs("department") '设置临时变量,保存当前部门名称
sqlstr="select * from personnel where department='"&departmenttmp&"'" '找出当前部门的所有员工
Set conn = Server.CreateObject("ADODB.Connection") '再次连接数据库
conn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"
Set rss = Server.CreateObject("ADODB.Recordset")
rss.CursorType = 3
rss.LockType = 3
rss.Open sqlstr, conn
number=0 '设置变量,当前部门人数合计初始值为0
'以下While循环计算出当前部门人数合计
while(not rss.eof)
rss.movenext
number=number+1
wend
hj=hj+number '总人数合计为各部门人数之和
rss.movefirst
flag=0 '设置变量,flag用来判断当前部门是否首次出现,初始值为0
'以下While循环输出当前部门统计数据和员工名单
while(not rss.eof)%>
<tr>
<%if (flag=0) then%>
<%'如果flag为0,表示该部门是首次出现,表格此处就应该输出部门名称,部门员工合计人数%>
<td width="93" height="24"><p align="center"><font size=2><%=departmenttmp%></font></td>
<td width="78" height="24"><p align="center"><font size=2><%=number%></font></td>
<%else%>
<%'如果flag不为0,表示该部门不是首次出现,表格此处就应该输出空白%>
<td width="93" height="24"><p align="center"> </td>
<td width="78" height="24"><p align="center"> </td>
<%end if%>
<%'无论该部门是否首次出现,此处输出员工姓名%>
<td width="413" height="24"><p align="center"><font size=2><%=rss("name")%></font></td>
<%rss.movenext '当前部门员工记录指针rss指向下一个员工记录
flag=flag+1 'flag加1
wend%>
</tr>
<%rs.movenext '部门记录指针rs指向下一个部门记录
wend%>
<tr>
<%''表格最后一行输出总人数合计%>
<td width="93" height="24"><p align="center"><font size=2>员工合计</font></td>
<td width="78" height="24"><p align="center"><font size=2><%=hj%></font></td>
<td width="413" height="24"><p align="center"><font size=2> </font></td>
</tr>
</table>
</div>
<center><input type=button onclick="vbscript:buildDoc" value="打印"></center> <%''点击"打印"按钮,调用vbscript函数buildDoc生成本地Word文档,实现本地打印。%>
</html>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
sql = "Select department,count(department) From personnel group by department" '将记录按部门分类统计
Set Cnn = Server.CreateObject("ADODB.Connection") '连接数据库
cnn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.CursorType = 3
Rs.LockType = 3
Rs.Open sql, Cnn
If Rs.EOF Then '如果没有记录就结束
Response.End
End If
%>
<html>
<%'以下显示表格标题和输出表头%>
<p align="center"><b><font size="4">公司员工统计表</font></b></p>
<div align="center">
<table id="data" border="1" width="606" height="53" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> <%'注意:此处标明表格的id为data%>
<tr>
<td width="93" height="24">
<p align="center"><font size="2">部门</font></td>
<td width="78" height="24">
<p align="center"><font size="2">合计</font></td>
<td width="413" height="24">
<p align="center"><font size="2">员工姓名</font></td>
</tr>
<%
hj=0 '设置变量,总人数合计初始值为0
'以下While循环按部门依次完成统计和报表
while (not rs.eof)
departmenttmp=rs("department") '设置临时变量,保存当前部门名称
sqlstr="select * from personnel where department='"&departmenttmp&"'" '找出当前部门的所有员工
Set conn = Server.CreateObject("ADODB.Connection") '再次连接数据库
conn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"
Set rss = Server.CreateObject("ADODB.Recordset")
rss.CursorType = 3
rss.LockType = 3
rss.Open sqlstr, conn
number=0 '设置变量,当前部门人数合计初始值为0
'以下While循环计算出当前部门人数合计
while(not rss.eof)
rss.movenext
number=number+1
wend
hj=hj+number '总人数合计为各部门人数之和
rss.movefirst
flag=0 '设置变量,flag用来判断当前部门是否首次出现,初始值为0
'以下While循环输出当前部门统计数据和员工名单
while(not rss.eof)%>
<tr>
<%if (flag=0) then%>
<%'如果flag为0,表示该部门是首次出现,表格此处就应该输出部门名称,部门员工合计人数%>
<td width="93" height="24"><p align="center"><font size=2><%=departmenttmp%></font></td>
<td width="78" height="24"><p align="center"><font size=2><%=number%></font></td>
<%else%>
<%'如果flag不为0,表示该部门不是首次出现,表格此处就应该输出空白%>
<td width="93" height="24"><p align="center"> </td>
<td width="78" height="24"><p align="center"> </td>
<%end if%>
<%'无论该部门是否首次出现,此处输出员工姓名%>
<td width="413" height="24"><p align="center"><font size=2><%=rss("name")%></font></td>
<%rss.movenext '当前部门员工记录指针rss指向下一个员工记录
flag=flag+1 'flag加1
wend%>
</tr>
<%rs.movenext '部门记录指针rs指向下一个部门记录
wend%>
<tr>
<%''表格最后一行输出总人数合计%>
<td width="93" height="24"><p align="center"><font size=2>员工合计</font></td>
<td width="78" height="24"><p align="center"><font size=2><%=hj%></font></td>
<td width="413" height="24"><p align="center"><font size=2> </font></td>
</tr>
</table>
</div>
<center><input type=button onclick="vbscript:buildDoc" value="打印"></center> <%''点击"打印"按钮,调用vbscript函数buildDoc生成本地Word文档,实现本地打印。%>
</html>
<%'以下VBScript代码实现buildDoc函数%>
+展开
-HTML
<script language="vbscript">
Sub buildDoc
set table = document.all.data '把html文档中的表格data的结构和数据赋值给table
row = table.rows.length 'row为table的行数
column = table.rows(1).cells.length 'colnum为table的列数
'Set objWordDoc =CreateObject("Word.Document") '创建一个Word.Document的对象
Set objWordDoc=CreateObject("Word.Document.8")
'Set objWordDoc= CreateObject("Word.Application")
Dim theArray(10,10000) '定义数组变量,存放表格中的数据,10是虚拟列数,10000是虚拟行数
'以下两层for循环将html文档的表格中的纯文本数据赋值给数组
for i=0 to row-1
for j=0 to column-1
theArray(j+1,i+1) = table.rows(i).cells(j).innerTEXT
next
next
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("公司员工统计表") '显示表格标题
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") '输出标题后回车换行
Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range
'以下With代码段设置标题属性
With rngPara
.Bold = True '将标题设为粗体
.ParagraphFormat.Alignment = 1 '将标题居中
.Font.Name = "Arial" '设定标题字体
.Font.Size = 12 '设定标题字体大小
End With
Set rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).Range
Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)
'以下for循环输出表头
for i = 1 to column
objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAfter theArray(i,1)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.ParagraphFormat.alignment=1
next
'以下两层for循环输出表格实际内容
For i =1 to column
For j = 2 to row
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAfter theArray(i,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.ParagraphFormat.alignment=1
Next
Next
objWordDoc.Application.ActiveDocument.SaveAs
End Sub
</script>
</BODY>
</HTML>
Sub buildDoc
set table = document.all.data '把html文档中的表格data的结构和数据赋值给table
row = table.rows.length 'row为table的行数
column = table.rows(1).cells.length 'colnum为table的列数
'Set objWordDoc =CreateObject("Word.Document") '创建一个Word.Document的对象
Set objWordDoc=CreateObject("Word.Document.8")
'Set objWordDoc= CreateObject("Word.Application")
Dim theArray(10,10000) '定义数组变量,存放表格中的数据,10是虚拟列数,10000是虚拟行数
'以下两层for循环将html文档的表格中的纯文本数据赋值给数组
for i=0 to row-1
for j=0 to column-1
theArray(j+1,i+1) = table.rows(i).cells(j).innerTEXT
next
next
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("公司员工统计表") '显示表格标题
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") '输出标题后回车换行
Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range
'以下With代码段设置标题属性
With rngPara
.Bold = True '将标题设为粗体
.ParagraphFormat.Alignment = 1 '将标题居中
.Font.Name = "Arial" '设定标题字体
.Font.Size = 12 '设定标题字体大小
End With
Set rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).Range
Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)
'以下for循环输出表头
for i = 1 to column
objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAfter theArray(i,1)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.ParagraphFormat.alignment=1
next
'以下两层for循环输出表格实际内容
For i =1 to column
For j = 2 to row
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAfter theArray(i,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.ParagraphFormat.alignment=1
Next
Next
objWordDoc.Application.ActiveDocument.SaveAs
End Sub
</script>
</BODY>
</HTML>
数据库TABLE,导入你自己的数据库就可以了
+展开
-SQL
CREATE TABLE [personnel] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[department] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[department] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
加支付宝好友偷能量挖...