Java的现实Excel的单元格之间的级联时特殊字符导致失败的情况

利用Excel的INDIRECT与SUBSTITUTE函数进行嵌套使用,将一级单元格特殊字符进行替换,再进行映射即可实现联动。6b2889c32fce493892f41b9bc93f373a.png

注意:特殊字符需要提前格式成 下划线。

本人已经在项目中实现级联,有问题可留言。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现多个单元格下拉框级联最常见的方式是使用数据验证和VLOOKUP函数。以下是一个通用的Java代码实现示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelDropdownCascadeExample { public static void main(String[] args) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 第一列下拉框数据 String[] column1Values = new String[]{"A1", "A2", "A3", "A4"}; // 第一列数据验证 DataValidationHelper validationHelper = sheet.getDataValidationHelper(); CellRangeAddressList column1RangeAddressList = new CellRangeAddressList(1, 100, 0, 0); DataValidationConstraint column1Constraint = validationHelper.createExplicitListConstraint(column1Values); DataValidation column1Validation = validationHelper.createValidation(column1Constraint, column1RangeAddressList); sheet.addValidationData(column1Validation); // 第二列下拉框数据 String[] column2ValuesA1 = new String[]{"B1", "B2", "B3"}; String[] column2ValuesA2 = new String[]{"C1", "C2", "C3"}; String[] column2ValuesA3 = new String[]{"D1", "D2", "D3"}; String[] column2ValuesA4 = new String[]{"E1", "E2", "E3"}; // 第二列数据验证 CellRangeAddressList column2RangeAddressList = new CellRangeAddressList(1, 100, 1, 1); DataValidationConstraint column2Constraint = validationHelper.createFormulaListConstraint("INDIRECT($A1&\"_values\")"); DataValidation column2Validation = validationHelper.createValidation(column2Constraint, column2RangeAddressList); sheet.addValidationData(column2Validation); // 第一列对应的下拉框数据 Name column2ValuesA1Name = workbook.createName(); column2ValuesA1Name.setNameName("A1_values"); column2ValuesA1Name.setRefersToFormula("Sheet1!$G$1:$G$3"); sheet.createRow(0).createCell(6).setCellValue(column2ValuesA1[0]); sheet.createRow(1).createCell(6).setCellValue(column2ValuesA1[1]); sheet.createRow(2).createCell(6).setCellValue(column2ValuesA1[2]); Name column2ValuesA2Name = workbook.createName(); column2ValuesA2Name.setNameName("A2_values"); column2ValuesA2Name.setRefersToFormula("Sheet1!$H$1:$H$3"); sheet.createRow(0).createCell(7).setCellValue(column2ValuesA2[0]); sheet.createRow(1).createCell(7).setCellValue(column2ValuesA2[1]); sheet.createRow(2).createCell(7).setCellValue(column2ValuesA2[2]); Name column2ValuesA3Name = workbook.createName(); column2ValuesA3Name.setNameName("A3_values"); column2ValuesA3Name.setRefersToFormula("Sheet1!$I$1:$I$3"); sheet.createRow(0).createCell(8).setCellValue(column2ValuesA3[0]); sheet.createRow(1).createCell(8).setCellValue(column2ValuesA3[1]); sheet.createRow(2).createCell(8).setCellValue(column2ValuesA3[2]); Name column2ValuesA4Name = workbook.createName(); column2ValuesA4Name.setNameName("A4_values"); column2ValuesA4Name.setRefersToFormula("Sheet1!$J$1:$J$3"); sheet.createRow(0).createCell(9).setCellValue(column2ValuesA4[0]); sheet.createRow(1).createCell(9).setCellValue(column2ValuesA4[1]); sheet.createRow(2).createCell(9).setCellValue(column2ValuesA4[2]); FileOutputStream outputStream = new FileOutputStream("example.xlsx"); workbook.write(outputStream); workbook.close(); } } ``` 在这个示例,我们使用了Apache POI库来创建一个Excel文档,并在第一列添加了一个下拉框,用于选择A1,A2,A3或A4。在第二列,我们使用了VLOOKUP函数来根据第一列的选择动态更新下拉框数据。我们还使用了命名区域来定义每个下拉框的数据范围。 请注意,这个示例的代码仅仅是一个通用的实现,真正的实现可能会因为具体的业务需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值