java 对两个excal进行比较

java初学者一直在努力用java来做一些小东西,让我们的工作变得简单,前几天老师要求从后台调出excal文件,每个班从中挑出自己班级学生名单,然后对比找出自己班级未在名单中的学生。这其实是很无趣的事情,所以想一劳永逸,在此分享一些源码:
在这里插入图片描述
架包是:jxl.jar 可以自行下载导入即可

在这里插入代码片
package test;

import jxl.*;
import jxl.read.biff.BiffException;
import java.io.*;
import java.util.regex.Pattern;

public class demo {
	public static void main(String[] args) throws BiffException, IOException {
		System.out.println("17网工班人员名单统计");
		// 读取表格中第一个sheet表
		String[] result1 = getSheet("报名列表");// 17网工成员导出
		
		System.out.println("信息学院已学习青年大学习人员名单统计");
		// 读取表格中第二个sheet表
		String[] result2 = getSheet1("报名列表");// 成员导出信息学院
		
		CompareResult(result1, result2);//对比两个表 并输出17网工班未填表人名单

	}

	public static String[] getSheet(String sh) throws BiffException,
			IOException {
		String[] result;

		Workbook book = Workbook.getWorkbook(new File("17网工成员导出.xls"));// 放在java项目下的文件名
		// 获得excel文件的sheet表
		Sheet sheet = book.getSheet(sh);

		int rows = sheet.getRows();// 行数
		int cols = sheet.getColumns();// 列数

		System.out.println("总列数:" + cols);
		System.out.println("总行数:" + rows);
		System.out.println("----------------------------");
		result = new String[rows];
		int i = 0;
		// 循环读取数据
		for (i = 1; i < rows; i++) {

			result[i] = new String(sheet.getCell(0, i).getContents());// getCell(x,y)
																		// 第y行的第x列
		}
		return result;
	}

	public static String[] getSheet1(String sh) throws BiffException,
			IOException {
		String[] result;

		Workbook book1 = Workbook.getWorkbook(new File("成员导出.xls"));

		Sheet sheet = book1.getSheet(sh);

		int rows1 = sheet.getRows();// 行数
		int cols1 = sheet.getColumns();// 列数

		System.out.println("总列数:" + cols1);
		System.out.println("总行数:" + rows1);
		System.out.println("----------------------------");
		result = new String[rows1];
		int i = 0;
		// 循环读取数据
		for (i = 1; i < rows1; i++) {
			// getCell(x,y) 第y行的第x列
			result[i] = new String(sheet.getCell(0, i).getContents());
		}
		return result;
	}

	public static void CompareResult(String[] result1, String[] result2) {
		int count = 0;
		System.out.println("17网工班未进行青年大学习人员名单:");
		for (int i = 1; i < result1.length; i++) {
			if (result1[i] != null) {
				for (int j = 1; j < result2.length; j++) {
					
					 Pattern regex = Pattern.compile(result1[i]);
					 
				       if(regex.matcher(result2[j]).find()==true){
				    	   count = 1;
				       } // true
//					if (result1[i].equals(result2[j])) {
//						count = 1;
//					}
				}
				if (count == 0) {														
					System.out.println(result1[i]);
				}
			}
			count = 0;

		}

	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值