この記事はこれの続きです
概要
まず ApachePOIを導入するところから 始まります。
そして、 最小限のコード で 最低限のxlsxファイル がダウンロードできるところまで作ります。
build.gradle
コピペ用
implementation 'org.apache.poi:poi:5.2.5'
implementation 'org.apache.poi:poi-ooxml:5.2.5'
build.gradleを変更したら下記を忘れないように注意。
Controllerクラス
DemoController.java
package com.example.demo;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
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.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
@Controller
public class DemoController {
@GetMapping("/")
public void getIndex(HttpServletResponse response) throws IOException {
//---------------------------------------------------------------------------------------------
//エクセルファイル生成。
Workbook workbook_ = new XSSFWorkbook();
Sheet sheet_ = workbook_.createSheet("ふーたお");
//createRow()に渡すのはインデックス。
//1行目なら0、2行目なら1。
Row row_ = sheet_.createRow(1);
//2行目のB列、つまりB2セルに値がセットされる。
Cell cell_ = row_.createCell(CellReference.convertColStringToIndex("B"));
cell_.setCellValue("私とお茶しない?");
//---------------------------------------------------------------------------------------------
//ダウンロード。
//ファイル名に2バイト文字を使えるように一工夫。
response.addHeader(
"Content-Disposition",
"attachment; filename*=UTF-8''" + URLEncoder.encode("胡桃.xlsx", StandardCharsets.UTF_8.name()));
ServletOutputStream stream_ = response.getOutputStream();
workbook_.write(stream_);
stream_.close();
workbook_.close();
//---------------------------------------------------------------------------------------------
//responseをいじっているので、『return "/index";』みたいなことをしても、ページ移動しません。
//ページ移動せずダウンロードだけ発生することになるので、この関数の戻り値はvoid。
//最小限のサンプルコードなのでtry catchは無しです。
}
}
実行結果
ブラウザーでhttp://localhost:8080にアクセスすると、下記のようなxlsxがダウンロードされます。
この記事の続き
参考サイトさん
バージョン
Microsoft Windows [Version 10.0.19045.4239]
JAVA 17.0.8.1
Spring Boot v3.1.10
ApachePOI 5.2.5