シートのコピーは、Excelドキュメントを処理する際によく使用される機能です。この機能を使用すると、関連付けられたシートを同じブックに簡単に配置でき、後で資料を探すのに便利です。この記事では、Free Spire.XLS for Javaを使用してJavaで異なるワークブック間のワークシートをコピーできます。
Spire.XLS.Jarのインストール
方法1:
mavenを使用している場合は、次のコードをプロジェクトのpom.xmlファイルに追加することで、JARファイルをアプリケーションにインポートできます。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
方法2:
mavenを使用していない場合は、このリンクからFree Spire.XLS for Javaをダウンロードできます。ダウンロードが完了したら、ダウンロードパッケージを解凍します。次にIDEAで新しいプロジェクトを作成し、「File」、「Project Structure」、「Modules」、「Dependencies」を順にクリックし、右側の緑の「+」の下の最初のオプション「JARs or Directories」をクリックして、前に解凍したファイルを見つけ、その中のlibフォルダの下にあるSpire.XLS.jarファイルをプロジェクトにインポートします。
異なるワークブック間のワークシートをコピーする
詳細な手順は次のとおりです。
- Workbookインスタンスを作成し、Workbook.loadFromFile()メソッドを使用してソースドキュメントをロードします。
- Workbook.getWorksheets()メソッドを使用して、指定したワークシートを取得します。
- 別のWorkbookインスタンスを作成し、Workbook.loadFromFile()メソッドを使用してターゲットドキュメントをロードします。
- Worksheet.addCopy()メソッドを使用して、選択したワークシートのコピーをターゲットドキュメントに追加します。
- Worksheet.copyTheme()メソッドを使用して、ソースドキュメントのトピックをターゲットドキュメントにコピーします。
- Workbook.saveToFile()メソッドを使用して、ターゲットドキュメントを保存します。
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class CopySheetBetweenWorkbooks {
public static void main(String[] args) {
//Workbookインスタンスを作成して、ソースドキュメントをロードする
Workbook srcWorkbook = new Workbook();
srcWorkbook.loadFromFile("source.xlsx");
//指定したワークシートを取得する
Worksheet originalSheet = srcWorkbook.getWorksheets().get(0);
//別のWorkbookインスタンスを作成して、ターゲットドキュメントをロードする
Workbook destWorkbook = new Workbook();
destWorkbook.loadFromFile("destination.xlsx");
//選択したワークシートのコピーをターゲットドキュメントに追加する
Worksheet newSheet = destWorkbook.getWorksheets().addCopy(originalSheet);
newSheet.setName(originalSheet.getName());
//ソースドキュメントのトピックをターゲットドキュメントにコピーする
destWorkbook.copyTheme(srcWorkbook);
//ターゲットドキュメントを保存する
destWorkbook.saveToFile("CopySheetBetweenWorkbooks.xlsx");
}
}