2016-04-05 15 views
8

Apache POI tarafından oluşturulan dosyaların fit all columns on one page setting setiyle bir çığlık oluşturması gerektiği bir gereksinim var. API ile bir grup varyasyon denedim ancak şu ana kadar yapamadım. Ne yapılabileceğini gerçekten bulamıyorum.Apache POI - dosyayı "bir sayfaya tüm sütunlara sığdır" ayarı için nasıl ayarlayabilirim? Excel'de

setFitToPage(true) işlevi, yalnızca istediğim gibi değil, yalnızca yükseklik ve genişlik boyutlarını yeniden boyutlandırıyor gibi görünüyor. setFitWidth ve setFitHeight'u kullanarak diğer çeşitli yığın taşması sorularında olduğu gibi hiçbir şeyi etkilemiyor gibi görünüyor.

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

Apache POI'da uzman değilim ama belki bu size yardımcı olur https://mail-archives.apache.org/mod_mbox/poi-user/201308.mbox/%[email protected] .yahoo.com% 3E – RubioRic

+0

Bu da öyle, RubioRic. Teşekkürler, neden bunu hemen bulamadım? – superbAfterSemperPhi

cevap

13

Bu Excel bir sayfaya sığacak şekilde yükseklik hem de genişliğini değiştirmek yapar setFitToPage(true) çağrısı değil: İşte

Ben bugüne kadar ne olduğunu. Bu çağrı gereklidir, ancak farklı bir sebepten dolayı. Excel'in Sayfa Ayarları ekranında, bu yöntem çağrısı, iletişim kutusunda hangi radyo düğmesinin etkin olduğunu kontrol eder. true değeri "Sayfaya Sığdır:" için radyo düğmesini ayarlar, böylece sayfa (lar) ın genişletilmiş sayfalarını uzun sayfalara göre kontrol etmenizi sağlar. false değeri, "Yüzde Ayarla" için radyo düğmesini ayarlar, normal boyut yüzdesi.

Bu durumda, 1 sayfa genişliğinde "önemseme" sayfalarına sığdırmak istiyorsunuz. Uzun sayfalar için kullanılacak değer (setFitHeight yöntemi) burada 0'dur. radyo düğmesi seçilir ve "1 sayfası (ler): Ben bu ayarlarla bir Sheet içeren Workbook yazmak ve Excel'de açmak

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

, Sayfa Yapısı iletişim kutusu "sığdır" vardır geniş (boş) boyunda. "Baskı Önizleme" ekranında, yazdırma ayarları seçenekleri "Bir Sayfada Tüm Sütunları Sığdır" seçeneğini seçili olarak listeler.

+1

Bu benim için çalıştı, ancak sayfanın "Fit to" Ölçeklendirme seçeneğine geçmek için de 'sheet.setAutobreaks (true); –

+0

Benim için 'ps.setFitWidth ((kısa) 1);' ps.setFitHeight ((kısa) 1); 'neyin çalıştığı. – SiGe