Excel引入多选下拉支持下拉项

1. 因平台在EXCEL模版中只对单选下拉字段支持下拉项,多选下拉不支持,因此需要自行写代码支持。效果图如下:

2. 实现逻辑:在【引出数据(按引入模版)】操作时处理导出的EXCEL文件,对多选下拉字段进行下拉项处理。
3. 代码逻辑:
3.1先读出多选下拉项的内容,因EXCEL的下拉只能单选,如多选下拉的项有 A,B,C三个项,则下拉项有【A】【B】【C】【A,B】【A,C】【B,C】【A,B,C】这七种情况。
3.2 将上述这7个值输出到EXCEL的指定位置(不影响模版的情况选可输出到比较靠后的列种)。如输出到AY3-AY9七个单元格中。
3.3 找到多选下拉字段的位置,使用公式将该列转换为多选下拉项。
//--读取下拉项的值,(下拉项的值写在Sheet1的AY3-AY9位置)
createFormulaListConstraint("INDIRECT("\"Sheet1!$AY$3:$AY$9\"")");
//--多选下拉字段在第3列,需要对第5-100行做下拉项,则代码如下:
CellRangeAddressList(5, 100,3,3);
4,完整代码如下:
public void afterExportFile(ExportFileEvent e) {
File file = e.getFile();
if(file != null) {
try(FileInputStream fis = new FileInputStream(file)) {
XSSFWorkbook workBook = new XSSFWorkbook(fis);
XSSFSheet sheet = workBook.getSheetAt(0);
XSSFRow rowx1 = sheet.getRow(2);
XSSFCell cell2 = rowx1.getCell(50);
if(cell2==null) {
cell2=rowx1.createCell(50);
}
//--把下拉项的内容写到第50列的3-5行中
String res0 ="A";
String res1 ="B";
String res2 ="A,B";
cell2.setCellValue(res0);
rowx1 = sheet.getRow(3);
cell2 = rowx1.getCell(50);
if(cell2==null) {
cell2=rowx1.createCell(50);
}
cell2.setCellValue(res1);
rowx1 = sheet.getRow(4);
cell2 = rowx1.getCell(50);
if(cell2==null) {
cell2=rowx1.createCell(50);
}
cell2.setCellValue(res2);
//找到多选下拉字段的位置(多选下拉字段标识为scope)
int cellindex = 0;
int rowindex = 0;
for (int i = 1; i < 20; i++) {
for (int j = 1; j < 4; j++) {
XSSFRow row = sheet.getRow(j);
XSSFCell cell = row.getCell(i);
if (cell != null) {
String val = cell.getStringCellValue();
Excel引入多选下拉支持下拉项
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



