題前:
前段時間因為某些原因,短暫離開這裡,期間收到不好BLOG自動回覆的郵件,發現仍有許多人在關注我,關注我之前寫的文章,自己想想還是捨不得這裡,捨不得BLOGJAVA,捨不得這裡的朋友,交口.....不知道你們還好吧。
今天我寫的是這樣的一篇文章,前幾天列印word報表,客戶要求列印報告的時候將多個表格連在一起,每個表的頭要求換頁依舊能顯示。
後面一個要求比較容易實現,word中自帶了一個標題行重複,就可以實現“每個表的頭要求換頁依舊能顯示”,這個功能有一個前提:重複的行必須帶表格的第一行,這也正好是我客戶的要求之一。
但是多個表格連在一起的時候,列印的時候上下表格如何怎麼接近,都會顯示出兩條非常接近的線,不滿足客戶的要求,而且還不美觀。
後來我就想到這樣的方法,將前一個表的最後一行的下線去掉,這樣上下表格之間只有一條線,雖然中間還是有一點點短的地方,客戶看了非常滿意。
這樣做有個BUG:如果表A剛好一頁,下一頁是另一張表,那表A的最後一行沒有,列印的時候表格少了下行,實在難看,也不是表格。
解決的部分:先透過word的巨集看了一下怎麼畫表格的下線,判斷遊標所在的頁,javascript列印的時候判斷一個表格的最後一行和下一個表格的第一行是不是在一頁上,如果不在一頁上,那前一個表格就增加下線。
判斷的這個方法如下:
function Page (table1,row1,table2,row2){
myDoc.Tables(table1).Rows(row1).Select();
var page=wordApp.Selection.Information(3) ;
myDoc.Tables(table2).Rows(row2).Select();
var page1=wordApp.Selection.Information(3) ;
if(page1>page)
myDoc.Tables(table1).Borders.OutsideLineStyle=1;
}
非常難伺候的客戶大爺,看了印刷後的報表,終於笑了,不容易啊,幾天的努力總算沒有白費。