Excel では、行、列、セルをコピーすることは基本的な操作であり、ワークシート内や複数のワークシート間でデータを効率的に複製することができます。Java を使用してプログラムで行、列、セルをコピーする方法を理解することで、大量のデータを扱う場合や繰り返し作業を自動化する場合に、データ操作が大幅に効率化されます。本記事では、Spire.XLS for Java を使用して、書式を含めて Excel の行、列、セルをコピーする方法を解説します。
Spire.XLS for Java をインストールします
まず、Spire.XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>14.12.0</version>
</dependency>
</dependencies>
Java で Excel の行を書式付きでコピーする
Spire.XLS for Java の Worksheet.copyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用すると、同一ワークシート内または異なるワークシート間で行を複製することができます。このメソッドの CopyRangeOptions パラメーターを使用することで、コピーする項目(フラグ、条件付き書式、データ検証、数式値のみなど)を細かく制御できます。
以下の手順に従って、異なるワークシート間で書式付きで行をコピーする方法を説明します。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、ソースとコピー先のワークシートを取得します。
- Worksheet.getRows()[index] メソッドを使用して、コピーする行を取得します。
- Worksheet.copyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用して、ソースワークシートの行をコピー先ワークシートにコピーします。
- ソース行のセルの列幅をコピー先行の対応するセルにコピーします。
- Workbook.saveToFile() メソッドを使用して、ワークブックをファイルに保存します。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyRows {
public static void main(String[] args) {
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// Excelファイルを読み込む
workbook.loadFromFile("Sample.xlsx");
// ソースワークシートを取得
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 目的のワークシートを取得
Worksheet sheet2 = workbook.getWorksheets().get(1);
// コピーしたい行を取得
CellRange row = sheet1.getRows()[0];
// ソースワークシートの行を目的のワークシートの最初の行にコピー
sheet1.copyRow(row, sheet2, 1, EnumSet.of(CopyRangeOptions.All));
int columns = sheet1.getColumns().length;
// ソース行のセルの列幅を目的行の対応するセルにコピー
for (int i = 0; i < columns; i++) {
double columnWidth = row.getColumns()[i].getColumnWidth();
sheet2.getRows()[0].getColumns()[i].setColumnWidth(columnWidth);
}
// ワークブックをファイルに保存
workbook.saveToFile("output/Excelの行をコピー.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
Java で Excel の列を書式付きでコピーする
列を書式付きでコピーする場合、Worksheet.copyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用します。以下に詳細な手順を示します。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、ソースとコピー先のワークシートを取得します。
- Worksheet.getColumns()[index] メソッドを使用して、コピーする列を取得します。
- Worksheet.copyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用して、ソースワークシートの列をコピー先ワークシートにコピーします。
- ソース列のセルの行高さをコピー先列の対応するセルにコピーします。
- Workbook.saveToFile() メソッドを使用して、ワークブックをファイルに保存します。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyColumns {
public static void main(String[] args) {
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// Excelファイルを読み込む
workbook.loadFromFile("Sample.xlsx");
// ソースワークシートを取得
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 目的のワークシートを取得
Worksheet sheet2 = workbook.getWorksheets().get(1);
// コピーしたい列を取得
CellRange column = sheet1.getColumns()[0];
// ソースワークシートの列を目的のワークシートの最初の列にコピー
sheet1.copyColumn(column, sheet2, 1, EnumSet.of(CopyRangeOptions.All));
int rows = column.getRows().length;
// ソース列のセルの行の高さを目的列の対応するセルにコピー
for (int i = 0; i < rows; i++) {
double rowHeight = column.getRows()[i].getRowHeight();
sheet2.getColumns()[0].getRows()[i].setRowHeight(rowHeight);
}
// ワークブックをファイルに保存
workbook.saveToFile("output/Excelの列をコピー.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
Java で Excel のセルを書式付きでコピーする
Spire.XLS for Java では、CellRange.copy(CellRange destRange, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用して、セル範囲を書式付きでコピーすることも可能です。以下に手順を示します。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、ソースとコピー先のワークシートを取得します。
- Worksheet.getCellRange() メソッドを使用して、ソースセル範囲とコピー先セル範囲を取得します。
- CellRange.copy(CellRange destRange, EnumSet<CopyRangeOptions> copyOptions) メソッドを使用して、ソースワークシートのセル範囲をコピー先ワークシートのセル範囲にコピーします。
- ソースセル範囲の行高さと列幅をコピー先セル範囲にコピーします。
- Workbook.saveToFile() メソッドを使用して、ワークブックをファイルに保存します。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyCells {
public static void main(String[] args) {
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// Excelファイルをロード
workbook.loadFromFile("Sample.xlsx");
// ソースワークシートを取得
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 宛先ワークシートを取得
Worksheet sheet2 = workbook.getWorksheets().get(1);
// ソースセル範囲を取得
CellRange range1 = sheet1.getCellRange("A1:D5");
// 宛先セル範囲を取得
CellRange range2 = sheet2.getCellRange("A1:D5");
// ソースワークシートのセル範囲を宛先ワークシートのセル範囲にコピー
range1.copy(range2, EnumSet.of(CopyRangeOptions.All));
// ソースセル範囲の行の高さと列の幅を宛先セル範囲にコピー
for (int i = 0; i < range1.getRows().length; i++) {
CellRange row = range1.getRows()[i];
for (int j = 0; j < row.getColumns().length; j++) {
CellRange column = row.getColumns()[j];
range2.getRows()[i].getColumns()[j].setColumnWidth(column.getColumnWidth());
range2.getRows()[i].setRowHeight(row.getRowHeight());
}
}
// ワークブックをファイルに保存
workbook.saveToFile("output/Excelのセル範囲をコピー.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。