发生情景:
最近使用到了模板导出功能,其中有两个下拉框是有关联的,一开始做完下拉之后,对自己做的并不满意,就考虑实现级联下拉的功能,通过第一个选项的值来决定下一个下拉框的选项范围;于是就有了这一篇文章,话不多说,贴代码~!
代码:
- maven引入POI的包,注意两个包的版本需一致,不然会报错。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
- 在你的Excel工具类中添加下面方法
/**
* 设置二级级联下拉框数据
* @param wb 表格对象
* @param typeName 要渲染的sheet名称
* @param hiddenSheetName 数据字典sheet名称
* @param values 级联下拉数据
* @param fatherCol 父级下拉区域
* @param sonCol 子级下拉区域
*/
public static void setSeconCascadeDropDownBox(XSSFWorkbook wb, String typeName, String hiddenSheetName, Map<String, String[]> values, Integer fatherCol, Integer sonCol) {
//获取所有sheet页个数
int sheetTotal = wb.getNumberOfSheets();
//处理下拉数据
if (values != null && values.size() != 0) {
//新建一个sheet页
XSSFSheet hiddenSheet = wb.getSheet(hiddenSheetName);
if (hiddenSheet == null) {
hiddenSheet <