读取Excel的某一列

这篇博客介绍了如何使用Java的Apache POI库读取Excel文件的特定列,并进行数据比较。代码示例展示了如何获取工作簿、工作表,遍历行和列,以及如何存储和比较不同列的数据。作者还提出了疑问,即是否可以直接获取sheet页的某一列,暗示了可能存在的优化空间。
摘要由CSDN通过智能技术生成
/**
     * 读取excel表格中特定的列
     *
     * @param file  文件
     * @param index 第index列(0开始)
     * @throws Exception
     */
    public static void readColumn(File file, int index) throws Exception {
        InputStream inputStream = new FileInputStream(file.getAbsoluteFile());
        Workbook workbook = WorkbookFactory.create(inputStream);
        Sheet sheet = workbook.getSheetAt(2);
        // 定义一个map用于存放excel列的序号和field.
        Map<String, Integer> cellMap = new HashMap<String, Integer>();
        // 所有行
        int num = sheet.getPhysicalNumberOfRows();
        List col1 = new ArrayList<String>();
        List col2 = new ArrayList<String>();
        for (int i = 1; i < num; i++) {

             for (int j = sheet.getRow(i).getFirstCellNum(); j < sheet.getRow(i).getLastCellNum(); j += 5) {
                 if (j<5){
                     short lastCellNum = sheet.getRow(i).getLastCellNum();
                     Row header = sheet.getRow(i);
                     Cell cell = header.getCell(j);
                     cell.getStringCellValue();
                     System.out.println(cell.getStringCellValue());
                     col1.add(cell.getStringCellValue().trim());
                 }else {
                     short lastCellNum = sheet.getRow(i).getLastCellNum();
                     Row header = sheet.getRow(i);
                     Cell cell = header.getCell(j);
                     cell.getStringCellValue();
                     System.out.println(cell.getStringCellValue());
                     col2.add(cell.getStringCellValue().trim());
                 }

             }

        }
        List col3 = new ArrayList<String>();
        for (int i =0; i< col1.size(); i++){
            if (!col2.contains(col1.get(i))){
                col3.add(col1.get(i));
            }
        }
        System.out.println("============新增公司如下===========");
        for (int i =0; i<col3.size(); i++){
            System.out.println(col3.get(i));
        }
        System.out.println("col1  size:"  + col1.size());
        System.out.println("col2  size:"  + col2.size());
        System.out.println("col3  size:"  + col3.size());
    }

原理:

先获取所有行数,每一行为一个cell,然后遍历每个cell,得到每一行的每一列。

思考:

能不能直接获取某个sheet页的某一列呢。待考证。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值