如下图所示,需要获取第一行、第一列单元格下拉列表值:
1.添加poi所需依赖包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
2.具体实际代码
/**
* 读取excel
*
* @param filepath
*/
public static void readExcel(String filepath) {
try {
//2003读取方式 , 2007请用XSSFWorkbook
//读取默认模板Excel文件
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filepath)) ;
//获取Sheet页
HSSFSheet sheet = workbook.getSheetAt(1);
//获取该Sheet下面所有数据验证项
List<HSSFDataValidation> validations = sheet.getDataValidations();
for(HSSFDataValidation validation : validations){
CellRangeAddressList addressList = validation.getRegions();
//空值判断
if(null == addressList || addressList.getSize() == 0){
continue;
}
//获取单元格行位置
int row = addressList.getCellRangeAddress(0).getFirstRow();
//获取单元格列位置
int column = addressList.getCellRangeAddress(0).getFirstColumn();
//根据位置信息判断是不是自己想要获取的单元格位置,比如我的单元格是A1,则对应的坐标为1,1
if(row == 1 && column == 1){
DataValidationConstraint constraint = validation.getValidationConstraint();
//获取单元格数组
String[] strs = constraint.getExplicitListValues();
//输出数组
System.out.println(StringUtils.join(strs,"-"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
最终输出结果: