Excel文件解析-springboot
做javaweb项目,有时候会有excel文件的导入导出,做了简单的列数据读取
首先需要添加依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
主要使用HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook,这三个类都是Wrokbook的子类,
HSSFWorkbook用于2007以前的版本,后缀名为.xls,一个shee的上限是65536行,超过了会报错。
XSSFWorkbook用于2007及其以后的版本,后缀名为.xlsx.
SXSSFWorkbook写入大量数据到excel.
下面是读取指定列的方法
public class ExcelUtil {
public static List<String> getExcelColumnById(String filePath,int columnId){
List<String> list = new ArrayList();
try {
try {
InputStream in = new FileInputStream(fulPath);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(in);
//默认一个sheet
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
for (int r=0;r<xssfSheet.getPhysicalNumberOfRows();r++) {
XSSFRow xssfRow = xssfSheet.getRow(r);
if(xssfRow == null){
continue;
}
int xssFCell = xssfRow.getLastCellNum();
if(columnId > xssFCell || columnId < 1){
log.error("查询列号没有数据,解析异常 col:" + xssFCell);
break;
}
XSSFCell xssfCell= xssfRow.getCell(columnId-1);
if(xssfCell == null){
continue;
}
String cellStr = xssfCell.getStringCellValue();
if(cellStr!=null && !cellStr.isEmpty()){
list.add(cellStr);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return list;
}