質問の前に:
少し前に、諸事情によりしばらくここを離れていましたが、その間にBLOGから自動返信されなかったメールが届きましたが、まだ多くの方が私をフォローし、私の記事に注目してくださっていることが分かりました。前に書いたけど、今でもここにいるのが耐えられない、BLOGJAVA を離れるのが耐えられない、ここにいるのが耐えられない、友達よ、話しましょう... あなたがそうかどうかはわかりません。大丈夫です。
今日はこのような記事を書いています。数日前に Word のレポートを印刷したところ、レポートを印刷するときに複数のテーブルを結合するように要求されましたが、ページの変更が必要な場合でも各テーブルのヘッダーが表示されます。
後者の要件は実装が比較的簡単です。Word にはヘッダー行の複製が組み込まれており、「ページを変更しても各テーブルのヘッダーを表示できる」という前提があります。つまり、繰り返される行には最初の行が含まれている必要があります。テーブルの行。これも私のクライアントの要件の 1 つです。
しかし、複数のテーブルを連結した場合、どんなに上下のテーブルを近づけて印刷しても、非常に近い2本の線が表示されてしまい、お客様のご要望に沿わず、美しくありません。
その後、上のテーブルの最後の行から下の行を削除して、上のテーブルと下のテーブルの間が 1 行だけになるようにする方法を考えました。まだ真ん中に少し短い場所がありました。とても満足しています。
これにはバグがあります。テーブル A が 1 ページで、次のページが別のテーブルである場合、印刷時にテーブル A の最後の行が表示されず、非常に見苦しいです。そしてそれはテーブルではありません。
解決策: まず Word マクロを使用して、表の最後の行を描画する方法を確認し、JavaScript で印刷するときにカーソルが置かれているページを特定します。ある表の最後の行と次の表の最初の行が一致しているかどうかを確認します。同じページ内にない場合は、その行の下に前の表が追加されます。
判定方法は以下の通りです。
関数 ページ (テーブル 1,行 1,テーブル 2,行 2){
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(ページ1>ページ)
myDoc.Tables(table1).Borders.OutsideLineStyle=1;
}
接客が大変だったお客様も、印刷されたレポートを読んでようやく笑顔になりました。結局のところ、数日間の努力は無駄ではありませんでした。