java poi导出带有下拉框的模板
- 实体类
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ExcelQuestions implements Serializable {
private static final long serialVersionUID=1L;
/**
* 试题类型1:单选2:多选3:判断4:简答
*/
@Excel(name = "类型",orderNum = "0",replace = {"单选_1","多选_2","判断_3","问答_4"},width = 25, isImportField = "true_st")
private Integer questionType;
/**
* 课程名称
*/
@Excel(name = "课程名称",width = 30,isImportField = "true_st")
private String courseName;
/**
* 试题
*/
@Excel(name = "问题",width = 40,isImportField = "true_st")
private String questions;
/**
* 试题分值
*/
@Excel(name = "分值",width = 20,isImportField = "true_st")
private Integer questionScore;
/**
* 试题正确答案
*/
@Excel(name = "正确答案",width = 40,isImportField = "true_st")
private String trueAnswer;
/**
* 选项a
*/
@Excel(name = "选项A",width = 40,isImportField = "true_st")
private String optiona;
/**
* 选项b
*/
@Excel(name = "选项B",width = 40,isImportField = "true_st")
private String optionb;
/**
* 选项c
*/
@Excel(name = "选项C",width = 40,isImportField = "true_st")
private String optionc;
/**d
* 选项
*/
@Excel(name = "选项D",width = 40,isImportField = "true_st")
private String optiond;
- 控制器
/**
* 导出模板
*
* @return
*/
@PostMapping("/download")
public ResponseInfo download(HttpServletResponse response){
ExportParams exportParams = new ExportParams();
exportParams.setSheetName("题库模板");
response.setContentType("application/x-download;charset=UTF-8");
response.addHeader("Content-disposition", "filename=demo.xls");
List<ExcelQuestions> list = new ArrayList<>();
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, ExcelQuestions.class, list);
//这里是自己加的 带下拉框的代码
selectList(workbook, 0, 0, new String[]{"单选","多选","判断","问答"});
OutputStream fos = null;
try {
fos = response.getOutputStream();
workbook.write(fos);
} catch (IOException e) {
e.printStackTrace();
return new ResponseInfo(false);
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* firstRow 開始行號 根据此项目,默认为2(下标0开始)
* lastRow 根据此项目,默认为最大65535
* firstCol 区域中第一个单元格的列号 (下标0开始)
* lastCol 区域中最后一个单元格的列号
* strings 下拉内容
* */
public static void selectList(Workbook workbook,int firstCol,int lastCol,String[] strings ){
Sheet sheet = workbook.getSheetAt(0);
// 生成下拉列表
// 只对(x,x)单元格有效
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 65535, firstCol, lastCol);
// 生成下拉框内容
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(strings);
HSSFDataValidation dataValidation = new HSSFDataValidation(cellRangeAddressList, dvConstraint);
// 对sheet页生效
sheet.addValidationData(dataValidation);
}
- 效果图
说明:ExcelQuestions是需要导出的属性