本文首發(fā)于我的Blog:http://nice90.blogone.net http://www.blogcn.com/user2/nice90/main.asp?id=1657409 buildDoc函數(shù)在網(wǎng)絡(luò)上很出名了,這個(gè)函數(shù)是將web頁(yè)面中某個(gè)Table的內(nèi)容全部導(dǎo)入到Word文檔中進(jìn)行分頁(yè)打印。但是有一個(gè)缺陷是原來(lái)的buildDoc程序生成的Table在打印的時(shí)候不會(huì)打印出來(lái)Table的Border。于是我將該程序進(jìn)行了修改,使得打印的時(shí)候能夠打印出來(lái)黑色的Border。主要是在程序中加入了下面兩句: 以下內(nèi)容為程序代碼:
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"> 產(chǎn)品名稱</ 產(chǎn)品描述</ 產(chǎn)品單價(jià)</ 產(chǎn)品等級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品一</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品二</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> <Tr align=center bgcolor="#ffffff"> 產(chǎn)品三</ This is a test</ <Td align=right>300.50</ 一級(jí)</ </Tr> </Tabld> <input type=button onclick="vbscript:buildDoc 80" value="build"> </BODY> </HTML> <script language="vbscript"> '************************************************************************************************** '使用方法: ' a.使用的時(shí)候必須將IE的安全級(jí)別設(shè)置為最低,然后才能夠在Client端CreateObject一個(gè)ActiveX對(duì)象 ' b.必須對(duì)需要打印的表格設(shè)置ID="myData" '函數(shù)名稱:buildDoc '輸入?yún)?shù):表格的行數(shù),整形 '缺 陷:對(duì)于不規(guī)則的表格,例如有在某一行有colspan="2",使用該程序在識(shí)別的時(shí)候只能夠認(rèn)為是一列 '************************************************************************************************** Sub buildDoc(intTableRows) Dim Table1 set Table1 = document.all.myData row = Table1.rows.length Set objWordDoc = CreateObject("Word.Document") ObjWordDoc.Application.Visible = True '這里需要設(shè)置數(shù)組的大小,最好不要小于表格的行和列數(shù) 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("") '輸出標(biāo)題后回車換行 'objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range '設(shè)置標(biāo)題的屬性 With rngPara .Bold = True .ParagraphFormat.Alignment = 1 '對(duì)上面的"表格的Title"對(duì)齊方式:1表示居中對(duì)齊,2表示右對(duì)齊 .Font.Name = "Arial" .Font.Size = 16 End With Set rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).Range '下面這行的"4"必須和下面的第二次循環(huán)中的theArray()中的列數(shù)4相同 Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,intNumrows,4) 'objWordDoc.Application.ActiveDocument.Tables(1).Borders.InsideLineStyle = wdLineStyleNone '增加兩行用來(lái)描黑Word表格里面的Border,在打印的時(shí)候才會(huì)出現(xiàn)邊框。 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>
參考資料: a.http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5AB0B.asp b.http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5AC00.asp c.http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D4/S5A856.asp
|