java poi导出带有下拉框的模板

java poi导出带有下拉框的模板

  1. 实体类

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;

  1. 控制器
/**
     * 导出模板
     *
     * @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);

    }

  1. 效果图
    在这里插入图片描述

说明:ExcelQuestions是需要导出的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值