高分求教:怎么样用ASP创建和修改服务器上的WORD文件

ghlfllz 2003-12-23 04:59:34
请问各位怎么样用ASP在服务器端创建WORD文件?
怎么样用ASP修改服务器端的WORD文件?

请给出具体的源代码!

分不够可以再加,我可以承诺本问题解决后上限分数是1000分
如果分不够,我会在问题解决后我会另外开贴给分的。

谢谢各位。
...全文
78 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghlfllz 2003-12-27
  • 打赏
  • 举报
回复
得了,这么久没人回答,我结贴吧
靠天靠地不如靠自已
我慢慢琢磨吧
也谢谢各位的参与
yonghengdizhen 2003-12-25
  • 打赏
  • 举报
回复
如果只是创建,而不是我所理解的客户端和服务端文件同步更新的情形,那么上面有很多答案已经符合要求
ghlfllz 2003-12-25
  • 打赏
  • 举报
回复
TO: yonghengdizhen(等季节一过,繁花就凋落) 能够说具体一点吗,比如DEMO的源代码
我只要服务器端创建一个Word文件的就可以了
谢谢
holywars 2003-12-25
  • 打赏
  • 举报
回复
gz
yonghengdizhen 2003-12-25
  • 打赏
  • 举报
回复
当然,在客户端能调用xmlhttp的情况下,从word vba中用xmlhttp和服务器进行通信可能更简单,而且更接近Web Sevices的风格
yonghengdizhen 2003-12-25
  • 打赏
  • 举报
回复
在客户端安全设置允许的情况下,用word VBA调用Winet API功能,并为VBA和服务端脚本制订相应的处理约定(或者说协议),然后通过VBA发起的http请求实现固定位置的文档内容修改,相应的修改由ASP脚本在收到客户端vba所发起的修改请求后在服务端调用Word.Application进行,(所以,只能以模板方式操作,针对书签对象进行更新)
sq0421 2003-12-25
  • 打赏
  • 举报
回复
creatdoc.asp
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 3.2 Final//EN">
<HEAD>
<TITLE>精彩春风之创建Word文件</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="30;URL='orderForm.asp'">
</HEAD>
<%
dotLocation="'servernamedirectory heTemplate.dot'"
intRowCount = Request.Form("rowCount")
' 初始化行计数
%>
<BODY Language="VBScript" onLoad="creatdoc document.theForm,
<%=dotLocation%>,intRowCount>
<FORM NAME="theForm">
----------------------------------------------------------------------------------------------------------------
在Body标记中对onLoad调用,调用creatdoc VB脚本子程序,向它传递3个参数:页面中表单的内容(所有的隐含域)、Word模板文件的位置、从输入表单中收到的行数.读所有的输入表单域,然后当页面装载后调用creatdoc子程序
<%
itemCount = 0
' 设置域计数器为0
For Each Item in Request.Form
' 总计表格域
itemCount = itemCount + 1
' 使用For..Next 循环
%>
<INPUT TYPE="hidden" NAME="<%=Item%>" VALUE="<%=Request(Item)%>">
<% Next %>
<INPUT TYPE="hidden" NAME="numbRows" VALUE="<%=intRowCount%>">
<INPUT TYPE="hidden" NAME="fieldCount" VALUE="<%=itemCount%>">
</FORM>
</BODY>
</HTML>
----------------------------------------------------------------------------------------------------------------  
开始创建一个Word 文件对象. 在Internet Explorer 4以上版本中,要将浏览器的安全性设置为Low或 Custom
<%
Set objWordDoc = CreateObject("Word.Document")
ObjWordDoc.Application.Documents.Add theTemplate, False
ObjWordDoc.Application.Visible=True
%>
----------------------------------------------------------------------------------------------------------------调整数组的维数使它与网页表单所包含的行数相同.将Y轴设为4个常量,这是输出文件中所需要的栏数,X轴包含从表单中接收的行数
<% Redim Preserve theArray(4,intTableRows) %>
----------------------------------------------------------------------------------------------------------------开始检查所有的表单行.在所有输入的网页表单域中循环,收集每个表单域名及其相应的值.逐个检查并将其放入相应的数列元素内.在此,我们使用了不确定编码的CASE选择
<%
For intCount = 0 to frmData.fieldCount.value
strOkay = "Y"
strSearch = frmData.elements(intCount).name
' 装入表单域名
strValue = frmData.elements(intCount).value
' 装入表单域值
strPosition = Instr(1,strSearch,"_")
intStringLen=strPosition-1
If intStrLen > 0 Then
strLeft = Left(strSearch,intStringLen)
strRight = Right(strSearch,(Len(strSearch)-Len(strLeft)-1))
Select Case strLeft
' Select Case命令决定表单域属于哪一列
Case "SKU" intArrayY=0
Case "description" intArrayY=1
Case "price" intArrayY=2
Case "quantity" intArrayY=3
End Select
IntArrayX = strRight
If strOkay <> "N" Then
TheArray(intArrayY, intArrayX) = strValue
End If
End If
Next
%>
----------------------------------------------------------------------------------------------------------------  开始创建文件
<%
Set rngCurrent = objWordDoc.Application.ActiveDocument.Content
' 对于激活的文件,用变量rngCurrent设置Word文件对象RANGE,这是为了防止用户打开另一个文件
Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add
rngCurrent,intNumrows,4)
' 通过指定表格的位置( rngCurrent)以及行、列的数目来确定其大小
%>
----------------------------------------------------------------------------------------------------------------  
向往表格里装入数据.
<%
For j = 1 to intTableRows
' 首先指到第一行row(tabRow=1), 逐行循环.在每行结尾处插入回车[Chr(10)],以产生行间空行,使行计数器增加
ObjWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Borders.Enable=False

objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(1).Range.InsertAfter
theArray(1,j)

objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(2).Range.InsertAfter
theArray(2,j)

objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(3).Range.InsertAfter
FormatCurrency(theArray(3,j))
' 用FormatCurrency 输出美圆值以保证使用$符号、逗号、小数点的位置
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(4).Range.InsertAfter
theArray(4,j)

objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(4).Range.InsertAfter
Chr(10)

objWordDoc.Applicatoin.ActiveDocument.Tables(1).Rows(tabRow).Cells(3).
Range.ParagraphFormat.alignment=2
' 在ParagraphFormat. alignment=2处设置栏数来实现美圆数量的正确调整

tabRow = tabRow + 1

Next
%>
----------------------------------------------------------------------------------------------------------------
指定模板位置,结束子程序
<%
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.
InsertAfter("Thank you for shopping at Acme Co., and please come again!")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.InsertAfter(" ")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.InsertAfter(" ")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.InsertAfter("Regards,")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.InsertAfter(" ")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.
InsertAfter("Daryl B. Morticum")
objWordDoc.Application.ActiveDocument.Paragraph.Add.Range.
InsertAfter("Sales Associate")
End Sub
%>
chhwang 2003-12-25
  • 打赏
  • 举报
回复
或者看一下这个文档,, http://chhwang.533.net/createdoc.doc
chhwang 2003-12-25
  • 打赏
  • 举报
回复
这里有个把网页中的表格转换成WORD文档的程序,看看对你有没帮助:
<Table id="myData" border=1 align=center>
<Tr align=center>
<Td>表格转换</Td>
<Td>表格转换</Td>
<Td>表格转换</Td>
<Td>表格转换</Td>
</Tr>
<Tr align=center>
<Td>表格转换</Td>
<Td>表格转换</Td>
<Td align=right>表格转换</Td>
<Td>表格转换</Td>
</Tr>
<Tr align=center>
<Td>表格转换</Td>
<Td>表格转换</Td>
<Td align=right>表格转换</Td>
<Td>表格转换</Td>
</Tr>
<Tr align=center>
<Td>表格转换</Td>
<Td>表格转换</Td>
<Td align=right>表格转换</Td>
<Td>表格转换</Td>
</Tr>
</Table>
<center><input type=button onclick="vbscript:buildDoc '',4" value="转换成Word文档"><script language="vbscript">
Sub buildDoc(theTemplate,intTableRows)
Dim Table1
set Table1 = document.all.myData
row = Table1.rows.length
Set objWordDoc = CreateObject("Word.Document")
ObjWordDoc.Application.Visible=True
Dim theArray(4,4)
'Redim Preserve theArray(4,row)
colnum = Table1.rows(1).cells.length
for i=0 to row-1
for j=0 to colnum-1
theArray(j+1,i+1) = Table1.rows(i).cells(j).innerHTML
next
next

intNumrows = 4

objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("转换后的表格")
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("")
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("")

Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range
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,intNumrows,4)

for i = 1 to colnum
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
tabRow = 2

For j = 2 to intNumrows
'ObjWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Borders.Enable=False
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(1).Range.InsertAfter theArray(1,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(1).Range.ParagraphFormat.alignment=1
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(2).Range.InsertAfter theArray(2,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(2).Range.ParagraphFormat.alignment=1
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(3).Range.InsertAfter FormatCurrency(theArray(3,j))
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(3).Range.ParagraphFormat.alignment=2
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(4).Range.InsertAfter theArray(4,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(4).Range.InsertAfter Chr(10)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(tabRow).Cells(4).Range.ParagraphFormat.alignment=1
tabRow = tabRow + 1
Next

objWordDoc.Application.ActiveDocument.SaveAs "tempSample.doc", 0,False,"",True,"",False,False,False, False,False
objWordDoc.Application.printout()


End Sub
</script>
ghlfllz 2003-12-25
  • 打赏
  • 举报
回复
哪位哥们能提供一个可运行的DEMO程序啊
谢谢
ghlfllz 2003-12-25
  • 打赏
  • 举报
回复
但是以上的源程序没有一个是可以直接运行的
各位能不能提供一个可运行的DEMO啊
谢谢
wdclub 2003-12-25
  • 打赏
  • 举报
回复
我也想知道
9441 2003-12-24
  • 打赏
  • 举报
回复
可以在服务器上创建WORD对象
<%
Set appWord = CreateObject("Word.Application")

Set wdWord = appWord.Documents.Open("aaa.doc",0)
%>

具体WORD对象的方法请看WORD的VBA帮助
jim.ma 2003-12-24
  • 打赏
  • 举报
回复
GZ 顶~
zykj_2000 2003-12-24
  • 打赏
  • 举报
回复
如果是word的话由于其文档的特殊格式,所以用FSO很难
我想通过写一个activex 调用word的功能应可以实现
ghlfllz 2003-12-24
  • 打赏
  • 举报
回复
难到这个看上去还有路可循的问题
可以难倒CSDN上的众多高手吗
那也太令我失望了

28,391

社区成员

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

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