需要引入的包 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; 1.创建指定列 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); HSSFRow row = sheet.createRow(0); String[] header = {"序号","(必填*)参数1","参数2","(必填*)参数3","(必填*)参数4","(必填*)参数4"}; for (int i = 0; i < header.length; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(header[i]); //自适应列宽 sheet.setColumnWidth(i,header[i].getBytes().length * 256); //设置列样式,水平、垂直居中,不允许修改,超过长度则自动换行 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER); cellStyle.setLocked(true); cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); cellStyle.setWrapText(true); //设置富文本属性,这里只让【必填*】变为红色 if(header[i].indexOf("*") != -1){ HSSFFont font = workbook.createFont(); font.setColor(HSSFFont.COLOR_RED); cell.getRichStringCellValue().applyFont(1,4,font); } cell.setCellStyle(cellStyle); } 2.列表新增下拉列表 HSSFSheet sheet = workbook.getSheetAt(0); List<String> downList = Arrays.asList("下拉1","下拉2") downList.add(0, "下拉列表头新增"); String[] strings = new String[downList.size()]; downList.toArray(strings); DVConstraint constraint = DVConstraint.createExplicitListConstraint(strings); // 参数 开始行数,结束行数,开始列,结束列。表示需要哪些列、哪些行默认是下拉列表选项 CellRangeAddressList regions = new CellRangeAddressList(1, 1, 2, 2); HSSFDataValidation dataValidation = new HSSFDataValidation(regions, constraint); sheet.addValidationData(dataValidation);