从Excel表格按列读取数据,并进行比较.(青年大学习查看未签到的人)

本项目灵感来源于统计青年大学习观看人数。

  1. 需要创建Maven项目,导入以下依赖
	<dependency>
      <groupId>net.sourceforge.jexcelapi</groupId>
      <artifactId>jxl</artifactId>
      <version>2.6.12</version>
    </dependency>
  1. 下列方法用于读取Excel表格的指定列,返回ArrayList集合
/**
    * @Description: 用于将Excel表格指定列的数据放入ArrayList中
    * @Param: [file(指定的Excel文件), index(指定的列从0开始)]
    * @return: java.util.ArrayList<java.lang.String>
    * @Author: 编程怪
    * @Date: 2021
    */ 
public static ArrayList<String> readColumn(File file, int index) throws Exception {
        ArrayList<String> res = new ArrayList<>();
        InputStream inputStream = new FileInputStream(file.getAbsoluteFile());
        //创建一个workbook,在里面执行读取操作
        Workbook workbook = Workbook.getWorkbook(inputStream);
        //获得第一个工作表对象,0表示第一个
        Sheet sheet = workbook.getSheet(0);
        //得到所有的行数
        int rows = sheet.getRows();
        //得到所有的列数
        int columns = sheet.getColumns();
        Cell cell;
        for (int i = 0; i < rows; i++) {
            //sheet.getCell(index,i)是这个表里第index+1列第i+1行的单元格
            cell = sheet.getCell(index, i);
            //cell.getContents()指取出单元格内的值
            res.add(cell.getContents());
        }
        workbook.close();
        return res;
    }
  1. 下列方法用于接收需要比较的两个Excel表格的对应列进行比较,调用了2中的方法
/**
    * @Description: 用于接收需要比较的两个Excel表格的对应列进行比较
    * @Param: [f1(指定的Excel名单文件), i1(指定的列从0开始), f2(指定的Excel签到文件), i2(指定的列从0开始)]
    * @return: void
    * @Author: 编程怪
    * @Date: 2021
    */ 
    public void compare(File f1,Integer i1,File f2,Integer i2){
        ImportExcel excel = new ImportExcel();
        try {
            //名单文件
            ArrayList<String> list1 = excel.readColumn(f1, i1);
            //签到文件
            ArrayList<String> list2 = excel.readColumn(f2, i2);

            for (String s:list2){
                if (s!="" && s!=null){
                    for (int i=0;i< list1.size();i++){
                        if (s.equals(list1.get(i))){
                            list1.remove(i);
                            break;
                        }
                    }
                }
            }
            System.out.println(list1);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
  1. 测试的Excel表格数据
    f1:
    在这里插入图片描述
    f2:
    在这里插入图片描述
  2. 测试结果
    在这里插入图片描述在这里插入图片描述
    需要注意的几点:
    1.Excel文件需要xls为结尾的,xlsx的不行。可将xlsx另存为xls的文件即可,重命名不行!
    2.f1是主名单也就是所有人的名单,f2是签到名单
    3.传入的index参数的0对应的是表格中的第一列

使用中有任何问题请在评论区留言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值