在网上,利用asp生成word文档的方法实在不少,最常见到的方法就是利用word生成.dot的文档,再用asp向.dot文档中传递宏,这种方法虽好,但实现起来非常复杂,而且不能循环生成表格。
在实际应用中,我总结出来一种新的生成word文件的方法,生成的word文件有页眉、页角,现拿出一例与大家探讨。
实现:
我的解决办法,用word xp(其他版本还没有试过)制作表格,将做好的word表格转换为html文档,在用asp控制转换后html文档。
页眉、页角的解决办法,在转换带word页眉、页角的doc文档后会在转换的html文件附加一个文件夹,内有页眉、页角文件及图片,只要在html文件的相应位置改变其路径为服务器路径即可。用户打开并asp生成的word文件后,word会自动提示将这些文件保存。
看下面的word转换后的html文,我用asp加以简单控制:
<% response.contenttype = "application/msword" %>
<!– #include file="inc/conn_open.asp"–>
<!– #include file="inc/transition.asp"–>
<!– #include file="inc/check_character.asp"–>
<!– #include file="inc/errormsg.asp"–>
<!– #include file="inc/check_privilege.asp"–>
<!– #include file="inc/check_logout.asp"–>
<!– #include file="inc/system_log_action.asp"–>
<%response.buffer=false
response.expires=0
call check_logout()
call check_state()
call privilege(6)
call log_action("访问","销售编号打印","打印临时销售编号"&request("temp_id"),1)%>
%>
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/tr/rec-html40";>
<head>
<meta http-equiv=content-type content="text/html; charset=gb2312">
<meta name=progid content=word.document>
<meta name=generator content="microsoft word 10">
<meta name=originator content="microsoft word 10">
<link rel=file-list href="create_doc/filelist.xml">
<link rel=edit-time-data href="create_doc/editdata.mso">
<link rel=ole-object-data href="create_doc/oledata.mso">
<!–[if gte mso 9]><xml>
<o:documentproperties>
<o:author>administrator</o:author>
<o:lastauthor>administrator</o:lastauthor>
<o:revision>34</o:revision>
<o:totaltime>26</o:totaltime>
<o:lastprinted>2002-11-06t05:54:00z</o:lastprinted>
<o:created>2002-11-06t04:56:00z</o:created>
<o:lastsaved>2002-11-06t05:55:00z</o:lastsaved>
<o:pages>1</o:pages>
<o:words>98</o:words>
<o:characters>562</o:characters>
<o:company>shine</o:company>
<o:lines>4</o:lines>
<o:paragraphs>1</o:paragraphs>
<o:characterswithspaces>659</o:characterswithspaces>
<o:version>10.2625</o:version>
</o:documentproperties>
</xml><![endif]–><!–[if gte mso 9]><xml>
<w:worddocument>
<w:view>print</w:view>
<w:spellingstate>clean</w:spellingstate>
<w:grammarstate>clean</w:grammarstate>
<w:compatibility>
<w:usefelayout/>
</w:compatibility>
<w:browserlevel>microsoftinternetexplorer4</w:browserlevel>
</w:worddocument>
</xml><![endif]–>
<style>
<!–
/* font definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:simsun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* style definitions */
p.msonormal, li.msonormal, div.msonormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
p.msoheader, li.msoheader, div.msoheader
{margin:0cm;
margin-bottom:.0001pt;
text-align:center;
mso-pagination:widow-orphan;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
border:none;
mso-border-bottom-alt:solid windowtext .75pt;
padding:0cm;
mso-padding-alt:0cm 0cm 1.0pt 0cm;
font-size:9.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
p.msofooter, li.msofooter, div.msofooter
{margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
span.grame
{mso-style-name:"";
mso-gram-e:yes;}
@page section1
{size:595.3pt 841.9pt;
margin:44.95pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
***********************************************************************
页眉页角的位置
***********************************************************************
<%docpath="http://";&request.servervariables("remote_host")&"/bacmda/create_doc/"%>
mso-header:url("<%=docpath%>header.htm") h1;
mso-footer:url("<%=docpath%>header.htm") f1;
mso-paper-source:0;}
div.section1
{page:section1;}
–>
</style>
<!–[if gte mso 10]>
<style>
/* style definitions */
table.msonormaltable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"times new roman";
mso-fareast-font-family:"times new roman";}
table.msotablegrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"times new roman";}
</style>
<![endif]–><!–[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="5122"/>
</xml><![endif]–><!–[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]–>
</head>
<body lang=zh-cn style=tab-interval:21.0pt>
<div class=section1>
<%set rs=server.createobject("adodb.recordset")
sql="select * from t_temp where temp_id="&request("temp_id")
rs.open sql,cstr(conn),1,1
searchdate=rs("createtime")
rs.close
sql="select * from t_tempreadnews where r_temp_id="&request("temp_id")&" order by tempreadnews_id desc"
rs.open sql,cstr(conn),1,1%>
<p class=msonormal><b style=mso-bidi-font-weight:normal><span lang=en-us
style=font-size:10.5pt><o:p> </o:p></span></b></p>
<p class=msonormal align=center style=text-align:center;line-height:175%><b><span
style=font-size:16.0pt;mso-bidi-font-size:12.0pt;line-height:175%>阅报栏媒体查询单</span></b><b><span
lang=en-us style=font-size:9.0pt;line-height:175%><o:p></o:p></span></b></p>
<p class=msonormal align=center style=text-align:center;line-height:175%><b><span
lang=en-us style=font-size:9.0pt;line-height:175%><o:p> </o:p></span></b></p>
<p class=msonormal style=line-height:150%><b><span style=font-size:10.5pt>查询编号:<u><span lang=en-us><span
style=mso-spacerun:yes> </span><span
style=mso-spacerun:yes><%=request("temp_id")%> </span><span
style=mso-spacerun:yes> </span></span></u><span
lang=en-us><span style=mso-spacerun:yes> </span>查询日期:<u>
<span style=mso-spacerun:yes;font-size:10.5pt> </span><span
style=mso-spacerun:yes><%=searchdate%> </span></u>_<o:p></o:p></span></span></b></p>
<table class=msotablegrid border=1 cellspacing=0 cellpadding=0
style=border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext>
<tr style=mso-yfti-irow:0;height:17.25pt>
<td width=71 style=width:53.25pt;border:solid windowtext 1.0pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>日报编号<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
<td width=56 style=width:42.15pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>区域<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
<td width=72 style=width:54.0pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>路段名<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
<td width=36 style=width:27.0pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span lang=en-us style=font-size:9.0pt>l/r<o:p></o:p></span></b></p>
</td>
<td width=48 style=width:36.0pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>形式<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
<td width=48 style=width:36.0pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>级别<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
<td width=189 style=width:141.7pt;border:solid windowtext 1.0pt;border-left:
none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.25pt>
<p class=msonormal align=center style=text-align:center><b
style=mso-bidi-font-weight:normal><span style=font-size:9.0pt>详细位置<span
lang=en-us><o:p></o:p></span></span></b></p>
</td>
</tr>
<%set rs1=server.createobject("adodb.recordset")
do while not rs.eof
sql1="select * from t_readnews where readnews_id="&rs("r_readnews_id")
rs1.open sql1,cstr(conn),1,1%>
<tr style=mso-yfti-irow:1;mso-yfti-lastrow:yes;height:15.0pt>
<td width=71 style=width:53.25pt;border:solid windowtext 1.0pt;border-top:
none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span lang=en-us
style=font-size:9.0pt><%=rs1("dailynumber")%>071<o:p></o:p></span></p>
</td>
<td width=56 style=width:42.15pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span
style=font-size:9.0pt><%=area(rs1("area"))%><span lang=en-us><o:p></o:p></span></span></p>
</td>
<td width=72 style=width:54.0pt;border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;mso-border-top-alt:
solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span
style=font-size:9.0pt><%=rs1("roadname")%><span lang=en-us><o:p></o:p></span></span></p>
</td>
<td width=36 style=width:27.0pt;border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;mso-border-top-alt:
solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span lang=en-us
style=font-size:9.0pt><%=leftright1(rs1("leftright"))%><o:p></o:p></span></p>
</td>
<td width=48 style=width:36.0pt;border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;mso-border-top-alt:
solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span lang=en-us
style=font-size:9.0pt><%=rs1("form")%><o:p></o:p></span></p>
</td>
<td width=48 style=width:36.0pt;border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;mso-border-top-alt:
solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span lang=en-us
style=font-size:9.0pt><%=rs1("placelevel")%><o:p></o:p></span></p>
</td>
<td width=189 style=width:141.7pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt>
<p class=msonormal align=center style=text-align:center><span class=grame><span
style=font-size:9.0pt><%=rs1("paddress")%></span></span></p>
</td>
</tr>
<%rs1.close
rs.movenext
loop
rs.close
sql="select * from t_temp where temp_id="&request("temp_id")
rs.open sql,cstr(conn),1,1
user_id=rs("r_user_id")
rs.close
sql="select * from t_user where user_id="&user_id
rs.open sql,cstr(conn),1,1
username=rs("truename")
rs.close
set rs=nothing
set rs1=nothing%>
</table>
<p></p>
<p class=msonormal align=right style=text-align:right;><b><span
style=font-size:9.0pt>销售人</span></b><span style=font-size:9.0pt>:<span
lang=en-us><%=username%> <b>制表时间</b>:<%=now%></span></span><span lang=en-us> </span><span
lang=en-us style=font-size:9.0pt><o:p></o:p></span></p>
</div>
</body>
</html>
