| | |
| | | |
| | | import com.alibaba.excel.metadata.Head; |
| | | import com.alibaba.excel.metadata.data.WriteCellData; |
| | | import com.alibaba.excel.write.handler.AbstractCellWriteHandler; |
| | | import com.alibaba.excel.write.handler.CellWriteHandler; |
| | | import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; |
| | | import com.alibaba.excel.write.metadata.holder.WriteTableHolder; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.ss.util.CellRangeAddress; |
| | | import org.apache.poi.ss.util.CellRangeAddressList; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | */ |
| | | public class SelectExcel implements CellWriteHandler { |
| | | |
| | | private String[] questionTypeList = {"单选", "多选", "判断"}; |
| | | private String[] subjectTypeList = {"a","b"}; |
| | | /** |
| | | * 题目类型 |
| | | */ |
| | | private String[] questionTypeList = {"单选题", "多选题", "判断题"}; |
| | | /** |
| | | * 课目 |
| | | */ |
| | | private List<String> subjectNameList; |
| | | /** |
| | | * 选项下拉数据 |
| | | */ |
| | | private String[] optionList = {"A","B","C","D","E","F","G","H"}; |
| | | |
| | | public SelectExcel(List subjectNameList) { |
| | | this.subjectNameList = subjectNameList; |
| | | } |
| | | |
| | | @Override |
| | | public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { |
| | |
| | | Sheet sheet = writeSheetHolder.getSheet(); |
| | | |
| | | |
| | | // 获取数据校验helper |
| | | // 获取数据校验helper,excel的下拉就是通过数据校验设置 |
| | | DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); |
| | | |
| | | // 设置题目下拉范围,第一列,500行内 |
| | | CellRangeAddressList questionTypeRange = new CellRangeAddressList(0, 500, 0, 0); |
| | | // 设置题目下拉范围,第一列,1500行内 |
| | | CellRangeAddressList questionTypeRange = new CellRangeAddressList(1, 1500, 0, 0); |
| | | // 添加题目下拉 |
| | | DataValidationConstraint questionConstraint = dataValidationHelper.createExplicitListConstraint(questionTypeList); |
| | | DataValidation questionValidation = dataValidationHelper.createValidation(questionConstraint, questionTypeRange); |
| | | sheet.addValidationData(questionValidation); |
| | | |
| | | |
| | | // 设置课目下拉范围,第2列,500行内 |
| | | CellRangeAddressList subjectTypeRange = new CellRangeAddressList(0, 500, 1, 1); |
| | | // 设置课目下拉范围,第2列,1500行内 |
| | | CellRangeAddressList subjectTypeRange = new CellRangeAddressList(1, 1500, 1, 1); |
| | | // 添加课目下拉 |
| | | DataValidationConstraint subjectConstraint = dataValidationHelper.createExplicitListConstraint(subjectTypeList); |
| | | DataValidationConstraint subjectConstraint = dataValidationHelper.createExplicitListConstraint(subjectNameList.toArray((new String[0]))); |
| | | DataValidation subjectValidation = dataValidationHelper.createValidation(subjectConstraint, subjectTypeRange); |
| | | sheet.addValidationData(subjectValidation); |
| | | |
| | | // // 设置选项下拉范围,第4列,1500行内 |
| | | // CellRangeAddressList optionRange = new CellRangeAddressList(2, 1500, 3, 3); |
| | | // // 添加选项下拉 |
| | | // DataValidationConstraint optionConstraint = dataValidationHelper.createExplicitListConstraint(optionList); |
| | | // DataValidation optionValidation = dataValidationHelper.createValidation(optionConstraint, optionRange); |
| | | // sheet.addValidationData(optionValidation); |
| | | |
| | | // 设置选项下拉范围,第4列,1500行内 |
| | | CellRangeAddressList answerRange = new CellRangeAddressList(2, 1500, 5, 5); |
| | | // 添加选项下拉 |
| | | DataValidationConstraint answerConstraint = dataValidationHelper.createExplicitListConstraint(optionList); |
| | | DataValidation answerValidation = dataValidationHelper.createValidation(answerConstraint, answerRange); |
| | | sheet.addValidationData(answerValidation); |
| | | |
| | | } |
| | | } |