Java Hutool应用:自动生成带下拉选择的Excel导入模板应用
·
Hutool官方使用文档:
https://hutool.cn/docs/#/
http://hutool官方使用文档
一、pom依赖
<!-- hutool Java工具包类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.41</version>
</dependency>
二、上代码
控制层controller
/**
* 下载导入模版
*
* @param response
* @throws IOException
*/
@GetMapping("/downloadTemplate")
public void downloadTemplate(HttpServletResponse response) throws IOException {
自己的Service.downloadTemplate(response);
}
服务层service
/**
* 下载导入模版
*
* @param response
* @throws IOException
*/
void downloadTemplate(HttpServletResponse response) throws IOException;
服务实现层serviceImpl
/**
* 下载导入模版
*
* @param response
* @throws IOException
*/
@Override
public void downloadTemplate(HttpServletResponse response) throws IOException {
//自己的业务逻辑获取数据库的下拉或者自定义数据下拉【以下仅供参考】
// 标题下拉:获取数据库数据,作为数据
String[] titleList =自己的mapper.getSelfDataList();
// 是否必填下拉: 自定义数据,作为下拉数据
String[] requiredList = {"是", "否"};
// 设置响应头
String fileName = "template.xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 创建Excel写入器
ExcelWriter writer = ExcelUtil.getWriter();
// 设置列宽,下标从0开始,20宽度
for (int i = 0; i < 6; i++) {
writer.setColumnWidth(i, 20);
}
// 写入表头
writer.writeHeadRow(Arrays.asList("标题", "是否必填","列名3" ));
// 使用Hutool的数据验证工具
DataValidationHelper dvHelper = writer.getSheet().getDataValidationHelper();
// 第一个下拉:标题下拉数据列表
DataValidationConstraint constraint1 = dvHelper.createExplicitListConstraint(titleList);
CellRangeAddressList cellRange1 = new CellRangeAddressList(1, 10000, 0, 0);
DataValidation dataValidation1 = dvHelper.createValidation(constraint1, cellRange1);
// 显示下拉箭头
dataValidation1.setSuppressDropDownArrow(false);
// 显示提示框
dataValidation1.setShowPromptBox(true);
// 设置为INFO级别允许输入
dataValidation1.setErrorStyle(DataValidation.ErrorStyle.INFO);
// 创建提示框
dataValidation1.createPromptBox("提示", "请选择或输入标题");
// 不显示错误提示框
dataValidation1.setShowErrorBox(false);
writer.getSheet().addValidationData(dataValidation1);
// 修正:是否必填下拉
DataValidationConstraint constraint2 = dvHelper.createExplicitListConstraint(requiredList);
CellRangeAddressList cellRange2 = new CellRangeAddressList(1, 10000, 1, 1);
DataValidation dataValidation2 = dvHelper.createValidation(constraint2, cellRange2);
// 显示下拉箭头
dataValidation2.setSuppressDropDownArrow(false);
// 显示提示框
dataValidation2.setShowPromptBox(true);
dataValidation2.createPromptBox("提示", "请选择必填选项");
dataValidation2.createErrorBox("错误", "请输入有效的必填选项");
// 显示错误提示框
dataValidation2.setShowErrorBox(true);
// 设置为INFO级别允许输入
dataValidation2.setErrorStyle(DataValidation.ErrorStyle.INFO);
writer.getSheet().addValidationData(dataValidation2);
writer.flush(response.getOutputStream());
writer.close();
}
三、测试下载


整列都会有这个提示
更多推荐


所有评论(0)