题前:
前段时间由于某些原因,短暂离开这里,期间收到不好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;
}
非常难伺候的客户大爷,看了打印后的报表,终于笑了,不容易啊,几天的努力总算没有白费。