技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

Eclipse + Maven で Apache POI を用いてExcelファイルを出力する環境の構築(HelloWorldまで)

Apache POI を用いることで、javaExcelファイルを出力するプログラムを作成することができるようになります。
今回は、環境設定を行い、HelloWorldを試す所まで記事にしました。
ライブラリを落としてきたりパスの設定をするのに手間がかかるので、今回は Eclipse + Maven で設定を行っています。
 
Mavenプロジェクトの作成】
1.Eclipseを立ち上げ、ファイル > 新規 > Mavenプロジェクト を選択。
f:id:akira2kun:20200606164825j:plain

2.「シンプルなプロジェクトの作成」「デフォルト・ワークスペース・ロケーションの使用」にチェックを入れて次に進む。
f:id:akira2kun:20200606164301j:plain

3.グループIdに任意の名前(プロジェクトを一意に識別する名前)、アーティファクトIdにプロジェクト名を入力し、完了を押下する。
f:id:akira2kun:20200606164328j:plain

4.作成されたプロジェクトについて、JREシステム・ライブラリー > プロパティー を選択。
f:id:akira2kun:20200606164355j:plain

5.適切な実行環境を設定(今回は「JavaSE-1.8」を選択)
f:id:akira2kun:20200606164422j:plain

 
【ライブラリのインストール・設定】
1.作成されたプロジェクトに存在するpom.xmlを開き、下記のように入力する。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hoge</groupId>
  <artifactId>ProjectName</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>4.1.2</version>
    </dependency>
  </dependencies>
</project>
 
※dependenciesタグを自分で追記する。
dependencyタグ内の記述については、自分で調べる場合はMVNrepositoryで調べる。ライブラリ名で検索すると、dependencyタグの記述する内容が記載されているページにたどり着く。
 
2.pom.xmlを保存すると、dependencyタグに記載されたライブラリが自動的にインストール・設定される。
 
Excelファイルを出力】
1.src/main/java 直下で右クリックし、新規 > クラス を選択。その後、クラス名(今回は「POITestMain」)を入力し、クラスを生成する。
2.下記のようにソースを記述する。
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class POITestMain {

    public static void main(String[ ] args) {

        FileOutputStream fos = null;
        XSSFWorkbook workbook = null;

        try {

            // ワークブック→シート→行→セルの生成
            workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet();
            XSSFRow row = sheet.createRow(0);
            XSSFCell cell = row.createCell(0);

            // セルの書式の生成
            XSSFCellStyle cellStyle = workbook.createCellStyle();
            XSSFFont font = workbook.createFont();
            font.setFontName("MS ゴシック");
            cellStyle.setFont(font);
            cell.setCellStyle(cellStyle);

            // セルに書き込み
            cell.setCellValue("Hello World!");

            // ファイル書き込み
            fos = new FileOutputStream("C:\\tmp\\test.xlsx");
            workbook.write(fos);

        } catch(Exception e) {
            e.printStackTrace();
        } finally {
             try {
                 if (fos != null) {
                     fos.close();
                 }
                 if (workbook != null) {
                     workbook.close();
                 }
             } catch(Exception e) {
                 e.printStackTrace();
             }
        }
    }
}
 
3.クラスを実行すると、ソース内で記述したパスに下記のような内容のファイルが生成される。
f:id:akira2kun:20200606164538j:plain

※実行時にjava.lang.NoClassDefFoundErrorが出る可能性があります(私の環境では出ました)。その場合は、Eclipseを一度落とし、C:\Users\ユーザ名\.m2 にある repository フォルダを削除し、もう一度Eclipseを立ち上げ、プロジェクトで右クリック > 実行 > Maven Clean を実施し、pom.xmlをもう一度保存し直したりしてみて下さい。良く起こる事象のようで、「Maven NoClassDefFoundError」でWebで検索すると色々情報が出てきます。