asp如何创建Word 文件?

来源:asp之家 时间:2009-11-14 20:47:00 

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

标签:word,文件,asp
0
投稿

猜你喜欢

  • js 返回 utf-8 字符编码是多少个字节, 函数 fUtf8BoundCheck

    2010-07-31 18:59:00
  • 交互设计实用指南系列(9)—一次点击

    2010-02-08 12:42:00
  • 记录下两个正则表达式的使用

    2009-11-30 12:56:00
  • 间歇向上无缝翻滚代码

    2008-05-05 12:30:00
  • jquery弹出层背景变暗 Lee dialog

    2008-08-18 13:11:00
  • ORACLE客户端连接服务器的注意事项

    2007-08-17 09:57:00
  • INPUT的对齐问题

    2008-05-24 08:32:00
  • 大家一起来折磨浏览器吧!(好玩的东东)

    2010-02-07 12:40:00
  • asp之自动闭合HTML/ubb标签函数+简单注释

    2008-09-29 12:21:00
  • MYSQL启用日志和查看日志

    2010-12-03 16:24:00
  • 获取星期几的名称

    2012-01-29 18:16:31
  • 把JS与CSS写在同一个文件里

    2007-12-16 15:29:00
  • 关于生成目录树结构的类

    2007-09-13 12:19:00
  • Web开发的改良

    2009-06-25 14:34:00
  • asp获取客户端的MAC地址

    2007-08-17 10:58:00
  • 分析Silverlight Button控件布局

    2009-02-17 13:13:00
  • MySQL Dump/Restore

    2010-10-14 13:49:00
  • OL IE Bug

    2009-09-09 16:25:00
  • 通过分析SQL语句的执行计划优化SQL

    2011-10-24 20:03:20
  • Javascript特效--划过放大的列表

    2008-03-21 12:18:00
  • asp之家 网络编程 m.aspxhome.com