easyExcel读取excel文件特定单元格

有时候,我们需要读取excel文件的某个单元格,比如标题,日期等,这要怎么实现呢?

代码

    public void importExcelReadRow(String path) {
        //读取第一行第一列
        EasyExcelCellListener easyExcelCellListener = new EasyExcelCellListener(1, 1);
        EasyExcel.read(path, easyExcelCellListener)
                //headRowNumber(0)表头所在行要写0,不写的话默认第一行是表头
                .headRowNumber(0)
                .sheet()
                .doReadSync();
        String cellValue = easyExcelCellListener.getCellValue();
        System.out.println(cellValue);
    }

监听器

public class EasyExcelCellListener extends AnalysisEventListener<Map<Integer,String>> {
 
    private String cellValue;
    private int targetRow;
    private int targetColumn;
 
    private boolean isCellRead = false;
 
    public EasyExcelCellListener(int targetRow, int targetColumn) {
        this.targetRow = targetRow;
        this.targetColumn = targetColumn;
    }
 
    @Override
    //invoke方法的参数类型跟随实现的ReadListener的类型
    public void invoke(Map<Integer,String> map, AnalysisContext analysisContext) {
        if(isCellRead){
            return;
        }
        int currentRow = analysisContext.readRowHolder().getRowIndex()+1;
        if(currentRow == targetRow ){
            cellValue = map.get(targetColumn-1);
            isCellRead = true;
        }
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
 
    }
 
    public String getCellValue() {
        return cellValue;
    }
 
 
}
headRowNumber(0)是指定表头所在行,不写的话默认第一行是表头.

实际应用中,如果excel文件的表头是多级表头,第一行是标题,第二行是日期,第三行是表头,需要指定headRowNumber(3),因为表头所在行是第三行.但是第二行和第一行就会直接略过.所以需要重新再读一遍,并指定headRowNumber(0).

如果第一行是表头,想要读取第一行或第一行之后的单元格,就可以在这个监听器中加入存储数据的实现,这样就只需要读一遍文件即可.可以参考我的读取excel的博客.

 git仓库:导入导出: 导入导出的实例

更多导出场景:多场景easyExcel导出excel文件(一)-CSDN博客

读取excel场景:多场景easyExcel读取excel文件(二)-CSDN博客

根据模板填充excel:多场景easyExcel根据模板填充excel文件(三)-CSDN博客

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值