| | |
| | | import com.alibaba.excel.write.handler.SheetWriteHandler; |
| | | import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; |
| | | import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; |
| | | import java.util.Map; |
| | | import lombok.Data; |
| | | import org.apache.poi.ss.usermodel.DataValidation; |
| | | import org.apache.poi.ss.usermodel.DataValidationConstraint; |
| | |
| | | import org.apache.poi.ss.util.CellRangeAddressList; |
| | | import org.apache.poi.xssf.usermodel.XSSFDataValidation; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | public class SelectedSheetWriteHandler implements SheetWriteHandler { |
| | | private Map<Integer, String[]> selectedMap; |
| | | |
| | | public SelectedSheetWriteHandler(Map<Integer, String[]> selectedMap) { |
| | | private Map<Integer, String[]> selectedMap; |
| | | private int rows; |
| | | |
| | | public SelectedSheetWriteHandler(Map<Integer, String[]> selectedMap, int rows) { |
| | | this.selectedMap = selectedMap; |
| | | this.rows = rows; |
| | | } |
| | | |
| | | @Override |
| | | public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { |
| | | public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, |
| | | WriteSheetHolder writeSheetHolder) { |
| | | //获取sheet页 |
| | | Sheet sheet = writeSheetHolder.getSheet(); |
| | | int firstRow = writeSheetHolder.getHead().get(0).size() + 1; |
| | | int lastRow = writeSheetHolder.getHead().get(0).size() + rows; |
| | | ///开始设置下拉框 |
| | | DataValidationHelper helper = sheet.getDataValidationHelper(); |
| | | for (Map.Entry<Integer, String[]> entry : selectedMap.entrySet()) { |
| | | /***起始行、终止行、起始列、终止列**/ |
| | | CellRangeAddressList addressList = new CellRangeAddressList(firstRow, firstRow, entry.getKey(), entry.getKey()); |
| | | CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, |
| | | entry.getKey(), entry.getKey()); |
| | | /***设置下拉框数据**/ |
| | | DataValidationConstraint constraint = helper.createExplicitListConstraint(entry.getValue()); |
| | | DataValidationConstraint constraint = helper.createExplicitListConstraint( |
| | | entry.getValue()); |
| | | DataValidation dataValidation = helper.createValidation(constraint, addressList); |
| | | /***处理Excel兼容性问题**/ |
| | | if (dataValidation instanceof XSSFDataValidation) { |