NEWSZW_HZH_BEGIN-->
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
%>
------------------------------------------------------------------------------------------------------------------------------------
NEWSZW_HZH_END-->
查看更多关于如何创建Word文件?_编程10000问_的详细内容...