JavaのApache POIでエクセルを操作するサンプルです。
(確認環境:Java 8,Eclipse4.8,Apache POI 4.1.2)
目次
サンプル | 1.Apache POI |
2.Apache POIの取得方法 | |
3.エクセルに値を書き込む | |
4.エクセルの値を読み込む | |
5.エラーメッセージ |
1.Apache POI
- Javaでマイクロソフトのドキュメントを操作できるAPIです。
- 以下は、Apache POIのリンクです。
https://poi.apache.org/ - 以下は、Apache POI 4.1.xのJavadocsです。
https://poi.apache.org/apidocs/4.1/
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の実行で取得するjarです。依存関係で必要なものがダウンロードされています。
手順は、以下を参照願います。
Eclipse Mavenでjarを取得(Java)
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 テキストファイルの読み書き(Filesクラス)
Java ファイルの存在/移動/コピー/削除(Filesクラス)