excel解析

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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值