2016-04-05 240 views
8

Apache POIで生成されたファイルにfit all columns on one page settingの値を設定する必要があります。私はAPIを使ってさまざまなバリエーションを試しましたが、今まで私はそれを行うことができませんでした。それができたら本当に見つけられません。Apache POI - Excelで「1ページにすべての列を合わせる」設定をするにはどうすればいいですか?

setFitToPage(true)のように、高さと幅の両方をサイズ変更するような感じがします。私はさまざまな他のスタックオーバーフローの質問で見つけるようなsetFitWidthsetFitHeightを使用して何も影響を与えていないようです。ここで

は、私がこれまで持っているものです。

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の専門家ではありませんが、これはおそらくあなたに役立ちますhttps://mail-archives.apache.org/mod_mbox/poi-user/201308.mbox/%[email protected] .yahoo.com%3E – RubioRic

+0

それもRubioRicです。ありがとう、なぜ私はそれをすぐに見つけられませんでしたか? – superbAfterSemperPhi

答えて

13

それはExcelが1ページに収まるように高さと幅の両方のサイズを変更しますsetFitToPage(true)への呼び出しではありません。この呼び出しは必要ですが、別の理由があります。 Excelのページ設定画面では、このメソッド呼び出しによって、ダイアログボックスでアクティブなラジオボタンが制御されます。値trueは、 "Fit to:"のラジオボタンを設定し、ページの縦のボックスでページを幅広く制御できるようにします。値falseは、「調整先:」のラジオボタンを通常の割合で設定します。

この場合、「ドントケア」ページの高さで1ページ幅に収まるようにします。高さのページ(setFitHeightメソッド)に使用する値は0です。

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

私はこれらの設定でSheetを含むWorkbookを書き出し、と私はExcelでそれを開き、[ページ設定]ダイアログボックスが「に合わせる:」持って選択したラジオボタン、および「1ページ(複数可) (空白の)背の高い幅で表示されます。 「印刷プレビュー」画面では、印刷設定オプションに「1ページにすべての列を合わせる」と表示されます。

+1

これは私にとってはうまくいったが、シートに "Fit to" Scalingオプションに切り替えるために 'sheet.setAutobreaks(true);'を追加しなければならなかった。 –

+0

私にとって 'ps.setFitWidth((short)1);' 'ps.setFitHeight((short)1);'何がうまくいったのですか? – SiGe

関連する問題