2017-03-15 26 views
0

Excel用のApache POI APIファイル操作があります。 ExcelファイルはJasper Reportから生成されます。ジャスパーレポートから生成されたExcelは問題ありません。ジャスパー・レポートがサポートしていないものがいくつかあります。印刷ページ設定の追加 - ヘッダーとフッターのようなもの。私はExcelの各ページで境界線の余白を無視しています。しかし、ヘッダーとフッターを追加すると、余白を付けて印刷されます。 MS Excelのページ設定ページにチェックボックスがあることを確認しました。ここでApache POI Excel:ページ設定ページ余白に合わせて

​​

Align with page marginsチェックボックスは、ヘッダーとフッターの余白を制御します。このチェックボックスをオンにすると、Excelページと同じマージンになります。

質問:このチェックボックスフィールドは、Apache POIからどのように制御できますか?

答えて

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;にする必要はありません。

+0

機能強化を提案してください/このために素晴らしいXSSFヘッダー/フッターラッパーを使用してプルリクエストを開いてください。 :) – Gagravarr

+0

私は何かが間違っていると思います。 'Sheet.getHeader()'はHeaderFooterを返しません。ここにjavadocのリンクがあります。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html#getHeader() –

+0

'HeaderFooter'である' Header'を返します。このビットの 'XSSFHeaderFooter'にキャストするには' HeaderFooter'が必要です。それを試しても失敗しましたか?何が起こった。 – jmarkmurphy

関連する問題