学習元: http://www.afterturn.cn/doc/easypoi.html
オープンソースアドレス: https://gitee.com/lemur/easypoi
https://gitee.com/lemur/easypoi-spring-boot-starter
Mavenプロジェクトに依存関係を追加
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.4.0</version>
</dependency>
View Codeエクスポート対象のデータエンティティにアノテーションを追加
/**
* 氏名
*/
@Excel(name="氏名")
private String fullName;
/**
* 生年月日
*/
@Excel(name="生年月日",format="yyyy-MM-dd",databaseFormat="yyyyMMddHHmmss")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDate;
/**
* 性別(1:男性 2:女性)
*/
@Excel(name="性別",replace= {"男性_1","女性_2"},suffix="性")
private Integer gender;
/**
* メールアドレス
*/
@Excel(name="メールアドレス")
private String emailAddress;
/**
* 電話番号
*/
@Excel(name="電話番号")
private String phoneNumber;
@GetMapping("/exportExcel")
public void downloadExcelFile(ModelMap model, HttpServletRequest request,
HttpServletResponse response) {
//Office Excelのバージョンを考慮する必要があります。2007では百万データをエクスポート可能;2003は6万までで、それを超えると空白になります。大量データの場合は、sheet分割または条件分割を推奨
List<Customer> customerData = customerService.getExcelData(null);//データベースからデータをクエリ
//List<Customer> customerData = new ArrayList<>();
//new ExportParams(String title,String sheet,String suffix);それぞれ表題、シート名、ファイルタイプ
ExportParams exportConfig = new ExportParams("顧客情報","顧客リスト",ExcelType.XSSF);
exportConfig.setFreezeCol(8);//固定列(分割線/列数に関わらず、左右スクロールバーをドラッグしても常に表示される列)
exportConfig.setStyle(ExcelExportStylerColorImpl.class);//スタイル設定、カスタム実装IExcelDataHandler<T>
model.put(NormalExcelConstants.DATA_LIST, customerData);//データ
model.put(NormalExcelConstants.CLASS, Customer.class);//タイプ
model.put(NormalExcelConstants.PARAMS, exportConfig);//Excelパラメータ
model.put(NormalExcelConstants.FILE_NAME, "顧客情報");
PoiBaseView.render(model, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);//戻り値なしでダウンロード
}