Java Apache POIでエクセルを操作するサンプル

JavaのApache POIでエクセルを操作するサンプルです。

確認環境
・Eclipse4.8
・Java 8
・Apache POI 4.1.2

目次

サンプル 1.Apache POI
  2.Apache POIの取得方法
  3.エクセルに値を書き込む
  4.エクセルの値を読み込む
  5.エラーメッセージ

1.Apache POI

2.Apache POIの取得方法

1.Mavenで取得する場合

pom.xmlの<dependencies>の間に以下のコードを追加します。

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

Mavenで取得する手順は、以下を参照願います。
Eclipse Mavenでjarを取得(Java)

以下は上記mavenの実行で取得するjarです。依存関係で必要なものがダウンロードされています。

3.エクセルに値を書き込む

Javaのpoiでエクセルに値を書き込むサンプルです。

package test1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test1 {
	public static void main(String[] args) {
        String dir = "D:\\test1";
        String file1 = "\\book1.xlsx";
	    XSSFWorkbook wkbk1;
		    
		try {
			wkbk1 = new XSSFWorkbook(new FileInputStream(dir + file1));
		    XSSFSheet sheet1 = wkbk1.getSheet("sheet1");
		    XSSFRow row1 = sheet1.createRow(1);
		    XSSFCell cell1 = row1.createCell(1);
		    cell1.setCellValue("ばなな");
		    FileOutputStream out1 = new FileOutputStream(dir + file1);
		    wkbk1.write(out1);
		    
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

19~21行目は、エクセルの書き込むセルを特定しています。
22行目は、セルに値をセットします。
24行目は、エクセルに文字列"ばなな"を出力しています。

実行結果です。

4.エクセルの値を読み込む

Javaのpoiでエクセルの値を読み込むサンプルです。

package test1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test1 {
	public static void main(String[] args) {
        String dir = "D:\\test1";
        String file1 = "\\book1.xlsx";
	    XSSFWorkbook wkbk1;
	    
		try {
			wkbk1 = new XSSFWorkbook(new FileInputStream(dir + file1));
		    XSSFSheet sheet1 = wkbk1.getSheet("sheet1");
		    XSSFRow row1 = sheet1.getRow(1);
		    XSSFCell cell1 = row1.getCell(1);
		    System.out.println(cell1);
		    
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

17行目は、ファイルを指定しています。
18行目は、シートのsheet1を指定しています。
19行目は、2行目を指定しています。値の0は1行目です。
20行目は、2列目を指定しています。値の0は1列目です。
21行目は、コンソールに文字列の"ばなな"が出力されます。

実行結果です。

5.エラーメッセージ

エラー1

Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException

xmlbeans-.jarがビルドパスに追加されていないと発生します。

エラー2

Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap

commons-collections4がビルドパスに追加されていないと発生します。バージョンも確認します。

エラー3

Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.archivers.zip.ZipFile

commons-compressがビルドパスに追加されていないと発生します。

関連の記事

Java テキストファイルの読み書き(NIO.2のFiles)
Java ファイルの存在/移動/コピー/削除(NIO.2のFiles)

△上に戻る