2016-04-05 10 views
8

Tôi có yêu cầu trong đó các tệp được tạo bởi Apache POI cần tạo một fie với tập hợp fit all columns on one page setting. Tôi đã thử một loạt các biến thể với API nhưng cho đến nay tôi đã không thể làm điều đó. Tôi cũng không thực sự tìm được nếu nó có thể được thực hiện.Apache POI - làm cách nào để đặt tệp cho cài đặt "phù hợp với tất cả các cột trên một trang" trong Excel

Có vẻ như chức năng setFitToPage(true) thay đổi kích thước cả chiều cao và chiều rộng không chỉ chiều rộng như tôi muốn. Sử dụng setFitWidthsetFitHeight như tôi thấy trong các câu hỏi tràn ngăn xếp khác nhau dường như không ảnh hưởng đến bất kỳ điều gì.

Dưới đây là những gì tôi có cho đến nay:

public void setPrintSettings(Sheet sheet) { 

    sheet.setFitToPage(true); //this will resize both height and width to fit 
    sheet.getPrintSetup().setLandscape(true); 

    sheet.getPrintSetup().setFitWidth((short) 1); 
    sheet.getPrintSetup().setFitHeight((short) 1); 

} 
+0

Tôi không có chuyên gia về Apache POI nhưng có thể điều này sẽ giúp bạn https://mail-archives.apache.org/mod_mbox/poi-user/201308.mbox/%[email protected] .yahoo.com% 3E – RubioRic

+0

Cũng vậy, RubioRic. Cảm ơn, tại sao tôi không tìm thấy điều đó ngay lập tức? – superbAfterSemperPhi

Trả lời

13

Đây không phải là lời kêu gọi setFitToPage(true) mà làm cho Excel thay đổi kích thước cả chiều cao và chiều rộng để phù hợp với một trang. Cuộc gọi này là cần thiết, nhưng vì một lý do khác. Trong màn hình Thiết lập trang của Excel, cuộc gọi phương thức này kiểm soát nút radio nào đang hoạt động trong hộp thoại. Giá trị true đặt nút radio cho "Vừa với:", cho phép bạn kiểm soát (các) trang theo chiều cao của trang. Giá trị false đặt nút radio cho "Điều chỉnh thành:", phần trăm kích thước bình thường.

Trong trường hợp này, bạn muốn vừa với chiều rộng 1 trang bằng chiều cao "không quan tâm". Giá trị sử dụng cho các trang cao (phương thức setFitHeight) là 0 tại đây.

sheet.setFitToPage(true); 
PrintSetup ps = sheet.getPrintSetup(); 
ps.setFitWidth((short) 1); 
ps.setFitHeight((short) 0); 

Khi tôi viết ra một Workbook chứa một Sheet với các thiết lập này, và tôi mở nó trong Excel, hộp thoại Page Setup có "Fit to:" nút radio được chọn, và "1 trang (s) rộng bởi (trống) cao ". Trong màn hình "Xem trước bản in", tùy chọn cài đặt in liệt kê "Vừa với tất cả các cột trên một trang" như được chọn.

+1

Điều này làm việc cho tôi nhưng tôi cũng phải thêm 'sheet.setAutobreaks (true);' cho trang tính để chuyển sang tùy chọn "Vừa với". –

+0

Đối với tôi 'ps.setFitWidth ((viết tắt) 1);' 'ps.setFitHeight ((viết tắt) 1);' những gì đã làm việc. – SiGe

Các vấn đề liên quan