当前位置: 首页 > 图文教程 > 网络编程 > 编程10000问 > 如何创建Word文件?

编程10000问
如何编制一个产生随机密码的函数?
如何利用当前时间生成随机函数?
如何做一个密码“生成器”?
如何做一个随机密码产生器?
如何将产生的密码记录并发送给用户并通过点击链接激活?
如何取回已忘记的密码?
如何让用户也能修改密码?
如何在线更改密码?
如何计算出当前日期属于定义时间段内的第几星期?
如何验证日期输入是否正确?
如何制作一个倒计时的程序?
如何制作一个Web日程安排表?
如何在网站中插播广告?
如何拒绝同一张表单被多次提交?
不用Global.asa也能实现统计在线人数吗?
如何防范利用刷新来“作弊”的计数器?
如何防止计数器刷新计数?
如何让计数器只对新进用户计数?
如何实时获知多少人在线?
如何最准确地统计在线用户数?

编程10000问 中的 如何创建Word文件?


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 21 ::
收藏到网摘: n/a

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

------------------------------------------------------------------------------------------------------------------------------------