- 締切済み
POIを使ってのexcel作成について
最近javaを始めたのですが、POIを使ってexcelデータも作成することになりました。 それでexcelで書式を作ってjava(POI)にて既存の書式を読み込み、読み込んだ書式を使用してデータ(明細行)を追加していこうと思っています。その際に使用するexcelの書式は印刷するページ数分定義が必要なのでしょうか? 個人的には1ページ分の書式を定義し、明細印刷時に次ページになったら 既存の書式を次ページに貼り付けての繰り返しだと思っていたのですが、どうもうまくいきません。 ご存じの方がいましたらよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kaiza00
- ベストアンサー率100% (2/2)
回答No.1
fireworks0さんの方法でうまくいくような気がします。 実際のソースなど貼り付けてもらえるとアドバイスしやすいのですが。。
お礼
kaiza00さん返信遅れて大変申し訳ありません。 以下、ソースです。 public class ListEXL { // 行番号用の定数、列番号の定数 行変数定義、列変数定義 //createEXL開始 public void createEXL(List list) throws Exception, Exception { //ファイルを読み込みます。 POIFSFileSystem filein = new POIFSFileSystem (new FileInputStream("C:\\sample.xls")); //ワークブックを読み込みます。 HSSFWorkbook wb = new HSSFWorkbook(filein); //シートを読み込みます。 HSSFSheet sheet = wb.getSheet("案2"); //フッターにページを追加 ページ追加処理 //印刷設定 印刷設定 //見出し処理 creatHead(sheet, wb, row_now1 ); int i2 = 0; int arraysize = list.size(); for (int i = 0; i < arraysize; i++) { wrtei1Info = (Wrtei1Info) list.get(i); // 明細設定 明細をセルへ追加 //次の行へ移動 i2 = i2 + 1; row_now3 += + 1; //1ページ分印刷? if(i2 >= 47){ row_now1 = row_now3 + 3; row_now3 += + 3; i2 = 0; //見出し処理 creatHead(sheet, wb, row_now1); row_now3 += + 2; } } //読み込んだexcelを別名で作成している。 出力処理 } 見出し出力メソッド }
補足
補足説明で投稿すれば良かったんですね。 お礼で投稿したら1000文字では入り切れませんでした。 上記ソースの見出し部分メソッドです。 public void creatHead(HSSFSheet sheet,HSSFWorkbook wb, int row_now1){ //帳票タイトル sheet.addMergedRegion(new Region(row_now1, (short)1, row_now1, (short)10)); //行オブジェクトの作成 HSSFRow row0 = sheet.getRow(row_now1); row0 = sheet.createRow(row_now1); //列オブジェクトの作成 HSSFCell cell00 = row0.getCell((short)1); cell00 = row0.createCell((short)1); //エンコード設定 cell00.setEncoding(HSSFCell.ENCODING_UTF_16); //帳票タイトル設定 cell00.setCellValue("excel一覧-poi版"); HSSFCellStyle style22 = wb.createCellStyle(); HSSFFont font00 = wb.createFont(); style22.setFont(font00); cell00.setCellStyle(style22); } こんな感じのソースです。 質問にも書きましたが、1ページ分のexcelのひな形を作成しており、それを1ページ分の明細印刷後に実行されるメソッドcreatHead」で「次ページにひな形貼り付け明細印刷」の繰り返しで出来ないかと思っております。どうすればひな形を2ページ移行に貼り付けられるでしょうか。よろしくお願いします。