【Java】Excelのデータを取り込む方法(Apache POIを使用)
Javaを使用してExcelのデータを取り込む方法です。
Apache POIをインポート
Mavenプロジェクトの場合は、pom.xmlに以下を追記
※poi-ooxmlは2007年以降のExcelを読み込むために必要
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.3.0</version>
</dependency>
Gradleプロジェクトの場合は、build.gradleに以下を追記
// https://mvnrepository.com/artifact/org.apache.poi/poi
implementation group: 'org.apache.poi', name: 'poi', version: '5.3.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.3.0'
実装
1.以下のパスにエクセルを作成
C:\tmp\取り込み.xlsx
中身は適当に以下
2.以下のようにコードを記載
package jp.example;
import java.io.File;
import java.io.IOException;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ImportExcel {
public static void main(String[] args) {
Workbook workbook = null;
try {
// 指定したパスのExcelファイル読み込み
workbook = WorkbookFactory.create(new File("C:\\tmp\\取り込み.xlsx"));
// 取得するシートを指定
// 左から数えて何番目のシートか(0始まり)
Sheet sheet = workbook.getSheetAt(0);
// 直接シート名を指定する場合
//Sheet sheet = workbook.getSheet("Sheet1");
// 最終行を取得
int lastRowNum = sheet.getLastRowNum();
// 何行目から取り込みを開始するかを指定(0がエクセルの1行目)
// 今回は1行目はヘッダーなので取り込まない
int startRowNum = 1;
// 開始行から最終行まで処理
for (int currentRow = startRowNum; currentRow <= lastRowNum; currentRow++) {
// 行を取得
Row row = sheet.getRow(currentRow);
if (row == null) {
continue;
}
// 1列を取得(0がエクセルの1列目)
Cell cell1 = row.getCell(0);
// 列の値を取得(Excelが数値型の列であれば、getNumericCellValueで取得)
// double型で取得されるので、小数点以下が不要な場合はintに変換して切り捨て
// エクセルの型と取得する関数が違うとExceptionが発生するので注意
int cell1Value = (int) cell1.getNumericCellValue();
// 2列を取得(0がエクセルの1列目)
Cell cell2 = row.getCell(1);
// 列の値を取得(Excelが数値型の列であれば、getNumericCellValueで取得
String cell2Value = cell2.getStringCellValue();
// コンソールに出力
System.out.println(currentRow + 1 + "行目→1列目:" + cell1Value + "、2列目:" + cell2Value);
}
} catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (workbook != null) {
// Excelを閉じる
workbook.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
実行
以下のようにエクセルの内容がコンソールに出力
2行目→1列目:100、2列目:お菓子
3行目→1列目:300、2列目:リンゴ
ディスカッション
コメント一覧
まだ、コメントがありません