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;

		}

	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章