Apache POI Excel: การตั้งค่าหน้าจัดแนวตามระยะขอบหน้า

ฉันมี Apache POI API สำหรับการจัดการไฟล์ Excel ไฟล์ Excel ถูกสร้างขึ้นจาก Jasper Report Excel ที่สร้างจาก Jasper Report นั้นใช้ได้ สิ่งที่ฉันต้องการคือบางสิ่งเพิ่มเติมที่ Jasper Report ไม่รองรับ เช่นเดียวกับการเพิ่มการตั้งค่าหน้าการพิมพ์ - ส่วนหัวและส่วนท้าย ฉันละเว้นระยะขอบของหน้า Excel แต่ละหน้า แต่เมื่อฉันเพิ่มส่วนหัวและส่วนท้าย พวกมันจะถูกพิมพ์โดยมีระยะขอบอยู่บ้าง จากนั้นสังเกตว่ามีช่องทำเครื่องหมายที่หน้าการตั้งค่าหน้ากระดาษใน MS Excel

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่ Align with page margins ช่องทำเครื่องหมายควบคุมระยะขอบบนส่วนหัวและส่วนท้าย หากเลือกช่องทำเครื่องหมายนี้ จะมีระยะขอบเท่ากับหน้า Excel

คำถาม: ฉันจะควบคุมฟิลด์ช่องทำเครื่องหมายนี้จาก Apache POI ได้อย่างไร


person Parth Bhagat    schedule 15.03.2017    source แหล่งที่มา


คำตอบ (1)


ฟีเจอร์นี้ยังไม่ปรากฏให้เห็น แต่ในรูปแบบไฟล์ XSSF คุณสามารถทำได้โดยใช้ CT Classes ฉันจะเริ่มต้นที่นี่:

Sheet sh = wb.createSheet();
HeaderFooter header = sh.getHeader();
XSSFHeaderFooter xhd = (XSSFHeaderFooter) header;
CTHeaderFooter ctHd = xhd.getHeaderFooter();
ctHd.setAlignWithMargins(true);

ใช้งานได้กับไฟล์ XLSX เท่านั้น ฉันไม่รู้วิธีดำเนินการกับไฟล์ XLS หมายเหตุ ฉันเริ่มต้นด้วยสมุดงาน แผ่นงาน และส่วนหัวทั่วไป แต่จากนั้นก็ส่งมันไปที่ส่วนหัว XSSF เพื่อไปที่คลาส CT พื้นฐาน คุณสามารถเขียนแอปพลิเคชันทั้งหมดด้วยคลาส XSSF และคุณไม่จำเป็นต้อง XSSFHeaderFooter xhd = (XSSFHeaderFooter) header;

person jmarkmurphy    schedule 15.03.2017
comment
โปรดแนะนำการปรับปรุงคุณสมบัติ / เปิดคำขอดึงด้วย wrapper ส่วนหัว/ส่วนท้าย XSSF ที่ดีสำหรับสิ่งนี้! :) - person Gagravarr; 16.03.2017
comment
ฉันคิดว่ามีบางอย่างผิดปกติ Sheet.getHeader() ไม่ส่งคืน HeaderFooter นี่คือลิงค์ javadoc poi.apache.org/apidocs/ org/apache/poi/xssf/usermodel/ - person Parth Bhagat; 17.03.2017
comment
มันจะคืนค่า Header ซึ่งเป็น HeaderFooter ฉันต้องการ HeaderFooter เพื่อส่งไปที่ XSSFHeaderFooter สำหรับบิตนี้ คุณลองแล้วล้มเหลวใช่ไหม? เกิดอะไรขึ้น. - person jmarkmurphy; 17.03.2017