简介:Hutool是一款十分好用的开发工具集,里面包含了大部分日常开发常用的工具,使用简单方便,可以大大提升日常开发效率,十分推荐大家使用。这里简单总结一下基于Hutool的Excel使用。
一、Hutool依赖
<!-- Excel导出、导入-->
<dependency>
<groupId></groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
二、导出Excel文件
1、controller接口
@GetMapping("/export/template")
@ApiOperation(value = "导出成员批量导入Excel模板")
public void exportTemplate(HttpServletResponse response){
(response);
}
2、Service类导出方法
//基于ExcelUtil工具生成新的Excel
//基于ExcelUtil工具,直接创建Excel文件
public void exportTemplate(HttpServletResponse response) {
try {
//创建xlsx格式的
ExcelWriter writer = (true);
//数据处理。。。。。
("application/-excel;charset=utf-8");
//是弹出下载对话框的文件名,不能为中文,中文请自行编码
("Content-Disposition","attachment;filename=");
ServletOutputStream out = ();
(out);
();
(out);
}catch (Exception e){
throw new BusinessException("导出Excel文件失败");
}
}
//基于ExcelUtil工具,根据已有的Excel生成新的Excel
//基于ExcelUtil工具,根据已有的Excel生成新的Excel
public void exportTemplate(HttpServletResponse response) {
try {
//1、获取Excel读对象(从流中)
ExcelReader reader = (());
//2、获取Excel工作簿
Workbook workbook = ();
//数据处理。。。。
("application/-excel;charset=utf-8");
//是弹出下载对话框的文件名,不能为中文,中文请自行编码
("Content- Disposition","attachment;filename=import_teacher.xls");
ServletOutputStream out = ();
(out);
();
();
();
}catch (Exception e){
throw new BusinessException("导出Excel文件失败");
}
}
三、给Excel单元格设置下拉框
1、生成菜单列表,创建一个隐藏的sheet,并设置填充下拉框的位置及参数信息
//拼接下拉框班级列表选项
List<String> options = ();
("第一项 xxx");
("第二项 xxx");
//设置下拉框
if ((options)) {
//设置隐藏域
String link = creatHiddenSheet(workbook, options);
//填充下拉框列表
creatHiddenBox(sheet, link, 3, 1000, 1, 1);
}
2、 创建隐藏sheet方法
private String creatHiddenSheet(Workbook workbook, List<String> options) {
final String sheetName = "sheet2";
Sheet sheet = (sheetName);
for (int i = 0; i < (); i++) {
String option = (i);
Row row = (i);
Cell cell = (0);
(option);
}
//设置隐藏
((sheetName), true);
//返回隐藏地址
return "=" + sheetName + "!$A$1:$A$" + (() + 1);
}
3、创建下拉框列表
/**
* 创建Excel下拉框(字符255以上,下拉框链接隐藏域)
*
* @param sheet
* @param link 下拉框选项链接地址
* @param firstRow 起始行
* @param lastRow 结束行
* @param firstCol 起始列
* @param lastCol 结束列
*/
private void creatHiddenBox(Sheet sheet, String link, int firstRow, int lastRow, int firstCol, int lastCol) {
CellRangeAddressList cas = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
//创建下拉数据列
DataValidationHelper helper = ();
//设置下拉框选项链接地址
DataValidationConstraint constraint = (link);
DataValidation dataValidation = (constraint, cas);
//将下拉数据放入下拉框
(dataValidation);
}