快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

关于BUILDDOC函数的一点改进,增强分页打印效果

buildDoc函数在网络上很出名了,这个函数是将web页面中某个Table的内容全部导入到Word文档中进行分页打印。但是有一个缺陷是原来的buildDoc程序生成的Table在打印的时候不会打印出来Table的Border。于是我将该程序进行了修改,使得打印的时候能够打印出来黑色的Border。主要是在程序中加入了下面两句:
以下内容为程序代码:

objWordDoc.Application.ActiveDocument.Tables(1).Borders.InsideLineStyle = True
objWordDoc.Application.ActiveDocument.Tables(1).Borders.OutsideLineStyle = True


完整的程序如下:toWord.htm

<html>
<head>
<title>Build Document by Script</TITLE>
</HEAD>
<body>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5AB0B.asp
<br>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5AC00.asp
<br>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5A856.asp
<br>
<Table id="myData" border="0" cellpadding="5" cellspacing="1" bgcolor="#000000">
<Tr align=center bgcolor="#ffffff">
<Td>产品名称</Td>
<Td>产品描述</Td>
<Td>产品单价</Td>
<Td>产品等级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品一</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品二</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
<Tr align=center bgcolor="#ffffff">
<Td>产品三</Td>
<Td>This is a test</Td>
<Td align=right>300.50</Td>
<Td>一级</Td>
</Tr>
</Tabld>
<input type=button onclick="vbscript:buildDoc 80" value="build">
</BODY>
</HTML>
<script language="vbscript">
\\\'**************************************************************************************************
\\\'使用方式:
\\\' a.使用的时候必须将IE的安全级别设置为最低,然后才能够在Client端CreateObject一个ActiveX对象
\\\' b.必须对需要打印的表格设置ID="myData"
\\\'函数名称:buildDoc
\\\'输入参数:表格的行数,整形
\\\'缺 陷:对于不规则的表格,例如有在某一行有colspan="2",使用该程序在识别的时候只能够认为是一列
\\\'**************************************************************************************************
Sub buildDoc(intTableRows)
Dim Table1
set Table1 = document.all.myData
row = Table1.rows.length
Set objWordDoc = CreateObject("Word.Document")
ObjWordDoc.Application.Visible = True
\\\'这里需要设置数组的大小,最好不要小于表格的行和列数
Dim theArray(80,80)

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 = 80
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("表格的Title")
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 \\\'对上面的"表格的Title"对齐方法:1表示居中对齐,2表示右对齐
.Font.Name = "Arial"
.Font.Size = 16
End With
Set rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).Range
\\\'下面这行的"4"必须和下面的第二次循环中的theArray()中的列数4一样
Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,intNumrows,4)
\\\'objWordDoc.Application.ActiveDocument.Tables(1).Borders.InsideLineStyle = wdLineStyleNone
\\\'增加两行用来描黑Word表格里面的Border,在打印的时候才会出现边框。
objWordDoc.Application.ActiveDocument.Tables(1).Borders.InsideLineStyle = True
objWordDoc.Application.ActiveDocument.Tables(1).Borders.OutsideLineStyle = True
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=True
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.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>
返回类别: 教程
上一教程: 提高ASP页面的执行效率
下一教程: 使用 XML 模板

您可以阅读与"关于BUILDDOC函数的一点改进,增强分页打印效果"相关的教程:
· 关于INDEX SERVER+ASP建立查询引擎的一点心得
· 关于DROPDOWNLIST绑定数据的一点熟悉
· 关于RECORDSET 持久性的一点点研究
· ASP中SPLIT 函数的一例
· FLASH和ASP分页的一点心得
    微笑服务 优质保证 索取样品