ก่อนถามคำถาม:
เมื่อไม่นานมานี้ ด้วยเหตุผลบางประการ ฉันจึงออกจากที่นี่ได้สักพัก ในระหว่างนี้ ฉันได้รับอีเมลที่ BLOG ไม่ตอบกลับโดยอัตโนมัติ ฉันพบว่ายังมีคนติดตามฉันและให้ความสนใจกับบทความ I จำนวนมาก เขียนไว้เมื่อก่อน คิดแล้วยังทนไม่ได้ที่จะออกจาก BLOGJAVA ทนไม่ได้ที่จะอยู่ที่นี่ เพื่อนๆ มาคุยกันเถอะ... ไม่เป็นไร
วันนี้ฉันกำลังเขียนบทความแบบนี้ ฉันพิมพ์ word report เมื่อไม่กี่วันที่ผ่านมา เมื่อลูกค้าขอให้ฉันเชื่อมต่อหลายตารางเข้าด้วยกันเมื่อพิมพ์รายงาน ส่วนหัวของแต่ละตารางจะยังคงแสดงอยู่หากจำเป็นต้องเปลี่ยนหน้า
ข้อกำหนดหลังนั้นค่อนข้างง่ายต่อการใช้งาน Word มีการทำสำเนาแถวส่วนหัวในตัวซึ่งสามารถรับรู้ว่า "ส่วนหัวของแต่ละตารางยังสามารถแสดงได้เมื่อเปลี่ยนหน้า" ฟังก์ชันนี้มีหลักฐาน: แถวที่ซ้ำกันจะต้องมีแถวแรก แถวของตาราง ซึ่งก็เป็นหนึ่งในความต้องการของลูกค้าของฉันด้วย
อย่างไรก็ตาม เมื่อเชื่อมต่อหลายตารางเข้าด้วยกัน ไม่ว่าตารางบนและล่างจะอยู่ใกล้แค่ไหนเมื่อพิมพ์ จะมีการแสดงเส้นสองเส้นที่ชิดกันมาก ซึ่งไม่ตรงตามความต้องการของลูกค้าและไม่สวยงาม
ต่อมาผมนึกถึงวิธีนี้ โดยลบบรรทัดล่างออกจากแถวสุดท้ายของตารางก่อนหน้า เพื่อให้มีบรรทัดเดียวระหว่างตารางบนและล่าง แม้จะยังมีจุดสั้นอยู่ตรงกลางเล็กน้อย แต่ลูกค้ากลับเป็นเช่นนั้น พอใจกับมันมาก
มีข้อบกพร่องในการทำเช่นนี้: หากตาราง A มีเพียงหนึ่งหน้าและหน้าถัดไปเป็นอีกตารางหนึ่ง แสดงว่าแถวสุดท้ายของตาราง A ไม่อยู่ที่นั่น เมื่อพิมพ์ ตารางจะหายไปในแถวล่าง และมันไม่ใช่โต๊ะ
วิธีแก้ไข: ขั้นแรกให้ใช้คำว่ามาโครเพื่อดูวิธีวาดบรรทัดล่างสุดของตารางและกำหนดหน้าที่เคอร์เซอร์อยู่ เมื่อพิมพ์ด้วย javascript ให้พิจารณาว่าแถวสุดท้ายของตารางหนึ่งและแถวแรกของตารางถัดไปอยู่หรือไม่ ในหน้าเดียวกัน หากไม่อยู่ในหน้าเดียว ตารางก่อนหน้าจะถูกเพิ่มไว้ใต้บรรทัด
วิธีการตัดสินมีดังนี้:
หน้าฟังก์ชัน (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);
ถ้า (หน้า 1> หน้า)
myDoc.Tables(table1).Borders.OutsideLineStyle=1;
-
ในที่สุดลูกค้าที่ลำบากมากก็ยิ้มได้หลังจากอ่านรายงานที่พิมพ์ออกมา ท้ายที่สุดแล้ว ความพยายามหลายวันก็ไม่สูญเปล่า