ASP生成word文档问题

ASP中怎么能把网页上输出的结果输出到word文档上?我的指导老师给了我以下东西,我不知道怎么用,希望高手解答,我是个新手,我需要说的详细点,如果有知道的我一定高分答谢,... ASP中怎么能把网页上输出的结果输出到word文档上?我的指导老师给了我以下东西,我不知道怎么用,希望高手解答,我是个新手,我需要说的详细点,如果有知道的我一定高分答谢,有知道的可以在这里留下QQ或者联系方式,谢谢各位高手了

以下是老师给我的(转换后的代码太长了,粘帖不了):
我的解决办法,用Word XP(其他版本还没有试过)制作表格,将做好的Word表格转换为HTML文档,在用ASP控制转换后HTML文档。

页眉、页角的解决办法,在转换带Word页眉、页角的DOC文档后会在转换的HTML文件附加一个文件夹,内有页眉、页角文件及图片,只要在HTML文件的相应位置改变其路径为服务器路径即可。用户打开并ASP生成的Word文件后,Word会自动提示将这些文件保存。

看下面的Word转换后的HTML文,我用ASP加以简单控制:
我的意思是说把整个网页页面上显示出来的东西自动保存到word文档,刚刚有人给了我一段代码:<%
counten = "需要写入的内容"
set fobj=server.Createobject("scripting.filesystemobject")
set texta=fobj.CreatetextFile(server.mappath("测试.doc"),true)
texta.writeline(counten)
%>

你这个不行啊,我还是不会用

相对路径的设置:server.mappath("测试.doc") 及文件名字
使用FSO 就可以做到,你把以上代码复制到一个 ASP 文件中运行一下
就可以看到结果了!

不过用以上的代码只能把编辑好的文字保存出来,要想把网页上的内容都保存下来从逻辑上想不同怎么用啊,希望高手指点(我做的是出卷系统,随机出一套卷子,我想把这套卷子自动导出到word文档)
展开
 我来答
I_am_teacher
推荐于2016-05-16 · 超过18用户采纳过TA的回答
知道答主
回答量:61
采纳率:100%
帮助的人:37.7万
展开全部
看过网上很多创建word文件的办法,大都会要求客户段浏览器设置安全性,有很大的局限性。

经过本人摸索,找到一条目前本人认为最简易的办法,不敢独享,请朋友们点评。哗唤仔

1 利用word生成相应的word文件,如固定格式的表格等,然后用“另存为”功能存成htm格式。

2 使用记事本等打开,可看见html源码。

3 将代码开始处的以下内容:
<html 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 11">
<meta name=Originator content="Microsoft Word 11">

改为基本html代码:

<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">

4 在页面最开始处添加以下语句:
<% Response.ContentType = "application/msword"
response.AddHeader "content-disposition", "inline; filename=测试.doc"

' 此处可添加变量处理等语句,如打开数据库获取记录集等。
'
%>

5 在html代码中找到表格中相应位置填入asp变量或数据库字段值。如以下代码链森代表一个单元格:
<td width=114 valign=top style='width:85.2pt;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'>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
</td>
可修改为:
<td width=114 valign=top style='width:85.2pt;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'>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p> <%=trim(.fields("奖金").value)%>
</td>

注意<%...%>中的内容即是要输出的变量或字段值,(废话,ASP人都知道)

6 保存,扩展名由htm改为asp即可。

运行看看,浏览器自动弹出下载对话框,文件名为“测试.doc”,也可直接打开!

此法最大的优点在于乱汪多么复杂的word格式表格也能轻松搞定。

缺点是html代码稍有点复杂,表格位置不好找。其实在做word文件时在单元格里输入特殊字符,然后在htm代码中查找该字符就可轻松定位。
博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
百度网友a1eccaac2
2008-06-06 · TA获得超过182个赞
知道答主
回答量:241
采纳率:20%
帮助的人:82.3万
展开全部
生成WORD不太可能,生成TXT还差不多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友856c3dd
2008-05-29 · TA获得超过2222个赞
知道大有可为答主
回答量:3168
采纳率:0%
帮助的人:2523万
展开全部
我也提供一段代码你:

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft FrontPage 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函数%>

<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>

数据库TABLE,导入你自己的数据库就可以了
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式