以下のような処理を検討しています。
フォーマット.xlsには、タイトル行の雛型(背景色などを定義済)をを作成しておきます。
そのフォーマット.xlsをpoiを利用し読み込み、
■タイトル行
・明細
・明細
・明細
■タイトル行
・明細
・明細
の要領でタイトル行を何度もコピーし、新しいエクセルを出力したいと考えています。
HSSFSheet#shiftRowsは完全なる移動のようですので、
何度もタイトル行を使う場合には不都合がでてしまいます。
単純な行コピーなのでできそうな感じもするのですが、
ご存じな方いらっしゃいましたら、
ご教授いただけますようお願いいたします。
No.1ベストアンサー
- 回答日時:
コピーのようなメソッドは用意されていないんですね。
ちょっと面倒ですが、行の内容を取得して、その中のセルの値およびスタイルをコピーするという方法でしたらどうでしょうか。
// テンプレートの読み込み
POIFSFileSystem fs = new POIFSFileSystem(
new FileInputStream(new File("src.xls")));
HSSFWorkbook book = new HSSFWorkbook(fs);
HSSFSheet sheet = book.getSheetAt(0);
// タイトル行(1行目)の取得
HSSFRow titleRow = sheet.getRow(0);
// タイトル行を別の行(ここでは2行目)へコピーします。
HSSFRow row = sheet.createRow(1);
// セルをコピーします。
int length = titleRow.getLastCellNum();
for (int i=0; i<length; i++) {
HSSFCell titleCell = titleRow.getCell((short)i);
HSSFCell cell = row.createCell((short)i);
if (titleCell != null) {
// 値を取得
switch (titleCell.getCellType()) {
case HSSFCell.CELL_TYPE_BLANK :
break;
case HSSFCell.CELL_TYPE_BOOLEAN :
cell.setCellValue(titleCell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR :
cell.setCellValue(titleCell.getErrorCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA :
cell.setCellValue(titleCell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC :
cell.setCellValue(titleCell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING :
cell.setCellValue(titleCell.getStringCellValue());
break;
default :
}
// スタイルを取得
cell.setCellStyle(titleCell.getCellStyle());
}
}
// 保存
FileOutputStream fos = new FileOutputStream(new File("dest.xls"));
book.write(fos);
fos.close();
※例外処理は抜いています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- 財務・会計・経理 銀行振込み明細書が領収書の代わりになる?! 9 2023/07/10 10:00
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Google+ Googleのドキュメントの使い方を教えて貰いたいです。 書いたものを共有して格納場所に入れて 毎日 2 2022/05/02 10:55
- その他(OS) Win10から11へ 設定をすべて移動する方法。アプリも、メールアカウントも。しかも無料で。 3 2022/06/02 18:16
- その他(お金・保険・資産運用) 学校の授業料を払う際、振替払込請求書兼受領証を提出しなければならないのですが、ATMて払ってしまいご 2 2022/12/07 00:01
- 会社・職場 昼間の質問と同じなのですが、今日仕事休みで給料明細取りに某ドラッグストアに行ったのですが、パソコンか 2 2023/02/01 21:38
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++言語で、構造体のコピーは可...
-
Access VBAから使用したExcelプ...
-
単体で実行できるEXEを作る。BCB
-
エクセルVBA 実行時エラー'...
-
マウントしたディスクにcpで、...
-
arduino unoからデータを読み出...
-
一行おきに貼り付ける 可能でし...
-
Ctrl + Cなど複数の入力キー...
-
JP1の質問です。
-
パスワードのコピー&ペースト...
-
Activesheet.Pasteで困っています
-
Subversionで作業一段落の作業...
-
文字列の切り出し
-
DataTableに入っているデータを...
-
ブラウザからコピペすると文字...
-
複数のExcelファイルにある同名...
-
FTPのgetとputの使いわけ。
-
iCloud for Windowsをアンイン...
-
CSVファイルの特定行の削除
-
ファイルが移動してもリンクの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++言語で、構造体のコピーは可...
-
Access VBAから使用したExcelプ...
-
マウントしたディスクにcpで、...
-
一行おきに貼り付ける 可能でし...
-
Activesheet.Pasteで困っています
-
Listviewに表示された文字のコ...
-
エクセルVBA 実行時エラー'...
-
DataTableに入っているデータを...
-
Eclipseのコード入力時の、行コ...
-
Ctrl + Cなど複数の入力キー...
-
文字列の切り出し
-
arduino unoからデータを読み出...
-
バッチで当日日付で作成される...
-
jakarta poiを使用し、EXCELの...
-
シートに張り付けたボタンがシ...
-
【UWSC】WEBページ内コピーした...
-
Eclipseでコピーするとき行数な...
-
エクセルのマクロについて教え...
-
Excelでコピーしたセル(テキス...
-
OutlookVBAでコピーした文字を...
おすすめ情報