本記事は、Javaを用いてExcelファイルを合成する方法について説明します。
事前準備
1. jarファイルのインポート
必要な.jarファイルは以下になります。
①Aspose.Cells for Java
バージョン一覧からバージョンを選択し、「aspose-cells-xx.x.jar」ファイルをダウンロードしてください。
必要なjarファイルを用意したら、パスを通してください。Eclipseを利用したパスの通し方はこちらのサイトに記載しています。

プログラムの例
1. Excelファイルの合成
import com.aspose.cells.FileFormatType;
import com.aspose.cells.Workbook;
public class Sample1 {
public static void main(String[] args) throws Exception{
//ファイルの読み込み
Workbook sourceWorkbook = new Workbook("c:\\Users/sourceExcell.xlsx");
Workbook targetWorkbook = new Workbook("c:\\Users/targetExcell.xlsx");
//ファイルの合成
targetWorkbook.combine(sourceWorkbook);
//ファイルの保存
targetWorkbook.save("c:\\Users/targetExcell.xlsx", FileFormatType.XLSX);
System.out.println("完了");
}
}
本プログラムでは、「sourceWorkbook」と「targetWorkbook」を合成し、その結果を「targetWorkbook」に保存しています。
targetWorkbook.combine(sourceWorkbook);combineメソッドを利用して2つのワークブック「sourceWorkbook」と「targetWorkbook」を合成します。
targetWorkbook.save("c:\\Users/targetExcell.xlsx", FileFormatType.XLSX);本記事はxlsxファイルの合成をしていますが、他にもxls等のExcellファイルの合成も可能です。
合成するファイルの種類を変更する際は「FileFormatType」を合成するファイルの拡張子やバージョンに合わせて変更してください。
シートの合成について補足すると、ファイルを保存したタイミングで「Aspose.Cells for JavaAPI」ライセンスの設定をしていないと「Evaluation Warning」シートが追加されることに注意してください。
2. 別のワークブックへシートをコピー
import com.aspose.cells.Workbook;
public class Sample2 {
public static void main(String[] args) throws Exception {
Workbook sourceWorkbook = new Workbook("c:\\Users/sourceExcell.xlsx");
Workbook targetWorkbook = new Workbook("c:\\Users/targetExcell.xlsx");
//シートの数をカウント
int sourceSheetCount = sourceWorkbook.getWorksheets().getCount();
int targetSheetCount = sourceWorkbook.getWorksheets().getCount();
for(int i = 0; i < sourceSheetCount; i++) {
//コピー先のシートを作成
targetWorkbook.getWorksheets().add("新しいシート" + (targetSheetCount + i));
//別のワークブックにシートをコピー
targetWorkbook.getWorksheets().get(targetSheetCount + i).copy(sourceWorkbook.getWorksheets().get(i));
}
//ファイルの保存
targetWorkbook.save("c:\\Users/targetExcell.xlsx", FileFormatType.XLSX);
System.out.println("完了");
}
}
本プログラムは、「targetWorkbook」に新しいシートを作成して、そこに「sourceWorkbook」のシートをコピー&ペーストしています。
ここでは、「新しいシート+(現在のシートの数+1)」を新しいシートとして追加しています。
copyメソッドを使用して、シートをコピーします。
「targetSheetCount + i」がコピー先のシートの番号、「sourceWorkbook.getWorksheets().get(i)」コピー元のシート番号になります。
本プログラムもワークブックを合成した場合と同じく、ファイルを保存したタイミングで「Aspose.Cells for JavaAPI」ライセンスの設定をしていないと「Evaluation Warning」シートが追加されることに注意してください。
感想
エクセル操作で一番有名なライブラリ「POI」で別のワークブックに合成やコピーしたシートをペーストできないか調査しましたが、そういった機能はないらしいです。
力業でセルの内容をコピーして別のワークブックに貼り付けるやり方もありますが、プログラム作成に膨大な時間が必要になりそうだったので、今回はAspose.Cells for Javaを使用しました。
使用した感触は悪くありませんでしたが、一つ問題なことは、ファイル保存時に「Evaluation Warning」シートが追加される点です。
ライセンスを取得すればという声が聞こえますが、ライセンスは有料になります。
このあたりの問題が解決すれば、Aspose.Cells for JavaはPOI以上に使用できるライブラリなのではないかと思いました。
SmartBee

作業項目や現場情報の一括管理を可能にするクラウドサービスです。
SmartBeeを導入すれば、管理業務の負担が減るばかりでなく、点検現場の状況をリアルタイムで把握でき、ミスやコスト削減につながります。