「Apache POI」ライブラリを教えてもらいました
全然知らなかったんですが、JavaでExcelファイルを操作できるらしいです。
副業で開発のお手伝いしているシステムにExcelファイルでデータ入出力する機能を実装する必要があって、「Apache POI」というライブラリを教えてもらいました。
ちなみに Apache POI はExcelだけでなく、WordやPowerPointなどのMicrosoft Office製品も操作できるライブラリだそうです。
聞くところによると、そこそこクセがあるライブラリらしいってことなので、実際に業務で使ってみる前に自分で試してみようと思います。
その前に開発環境を作ります
以前、Docker上でSpring Bootを入れてVSCodeで開発する環境を作りました。
VSCodeとDockerでSpring Boot + PostgreSQL開発環境を作る(1) | Sales8開発者日記
この記事を書いたのはもう3年くらい前なので、今回は改めて環境作りからやってみようと思います。
ちなみに docker バージョンはこんな感じです。
docker -V
> Docker version 20.10.24, build 297e128
今回はDockerfileもなしで、DockerHubからイメージを直接コンテナにすることにしました。
コンテナイメージは OpenJdk の バージョン17です。
openjdk – Official Image | Docker Hub
任意のフォルダでこのコマンドを実行します。
docker run -itd --name poi_sample -v $PWD\src:/usr/src openjdk:17
このコマンドを実行するフォルダには「src」フォルダをあらかじめ用意しておきます。
ソースコードをホストとマウントして、コンテナを停止してもソースコードを参照できるようにするためです。
なので、コンテナから直接gitのようなバージョン管理システムにアクセスしたり、ホストとあえてマウントする必要がないのであれば不要ですね。
その場合のコマンドはこんな感じです。
docker run -itd --name poi_sample openjdk:17
コンテナが無事にできたら、VSCodeのRemote Development拡張から接続します。
Remote Development – Visual Studio Marketplace
コンテナに接続できたら、次は下記のVSCode拡張を“コンテナ内に”インストールします。
- Extension Pack for Java – Visual Studio Marketplace
- Spring Boot Extension Pack – Visual Studio Marketplace
- Lombok Annotations Support for VS Code – Visual Studio Marketplace
これで準備完了です。
Spring Initializrでプロジェクト作成
Spring Boot Extension Pack – Visual Studio Marketplace にはSpring Bootのプロジェクトを簡単に生成できるSpring Initializr
というものがついていて、とっても便利です。
まず、Remote Development拡張でコンテナに接続しているVSCode上で開発用のディレクトリを開きます。
私の場合は “docker run” した時にホストとマウントしておいた「/usr/src」ディレクトリを使うことにしました。
ちなみに「Open folder」のショートカットキーは [Ctrl + K → Ctrl + O」です。
開発用ディレクトリが開いたら、次にVSCodeのショートカットキー「Ctrl + Shift + P」でコマンドパレットを開きます。
コマンドパレットに「>Spring Initializr」と入力し、表示された候補の中からSpring Initializr: Create a Gradle Project...
というのを選択します。
お好みでSpring Initializr: Create a Maven Project...
を選んでもいいです。
あとは順に下記の通りに入力します。
Specify Spring Boot version. | 3.0.6 | ※ |
Spedify project language | Java | |
Group Id | biz.systemcraft | 任意のグループID |
Artifact Id | demo | 任意のアーティファクトID |
Specify packaging type. | Jar | |
Specify Java version | 17 | |
Dependencies | ・Spring Boot DevTools ・Lombok ・Spring Web ・Thymeleaf | |
Directory | /usr/src/ |
※Spring Bootバージョン3.0.6はOpenJDKのバージョン17以上が必要です。
これで「/usr/src/demo」にSpring Bootプロジェクトのひな型が作成されています。
再びショートカットキー「Ctrl + K → Ctrol + O」でOpen folder
を開いて作成された「/usr/src/demo」へ移動します。
indexページを実装
demoディレクトリ配下に下記のようにファイルを追加します。
- controllers/IndexController.java
- resources/templates/index.html
それぞれのファイルの内容は下記のとおりです。
package biz.systemcraft.demo.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class IndexController {
@RequestMapping({ "/", "/index" })
public ModelAndView get(ModelAndView mav) {
mav.setViewName("index");
return mav;
}
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<title>Demoアプリケーション</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
ファイルが作成できたら、VSCodeのDebugビューから実行してみましょう。
「https://localhost:8080」にアクセスしてページが表示されたらOKなんですが・・・
あら?・・・エラーになってしまいました。
とりあえず、VSCodeを一度閉じて開きなおしてから再度実行してみます。
今度はうまくいきました。
プロジェクトを作った直後はThymeleafがtamplatesフォルダにアクセスできないことがあるらしいです。
そんな時はVSCodeを開きなおすと何故かうまくいくことが多いです。
続きは次回
ということで、まずはSpring Bootの開発環境をDocker上に作ることができました。
- Docker Hub から OpenJDK のイメージを pull & buildして
- VSCode の Remote Development 拡張でコンテナに接続
- VSCode の Spring Boot 拡張 を導入して
Spring Initializr
でプロジェクト作成
基本的にこの3ステップだけで環境ができてしまうので、非常にお手軽です。
Thymeleafがエラーになってページが表示されなくなったところだけ、わからなくて時間を取られてしまいましたけど。
結局よくわからないままVSCodeで開きなおすだけで解決してしまいましたが、それがわかるまでに時間がかかってしまいました。
ということで、今回はひとまずここまでにしたいと思います。
次回はいよいよPOIを導入して、ExcelをJavaで操作するところをやってみようと思います。
POIのクセつよポイントはどのあたりなのか、そのあたりを見ていければいいかなと考えています。
気になる方は是非チェックしてみてください。
コメント