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;

		}

	}
}

您好,可以使用 Java 中的 Apache POI 库来读取和处理 Excel 表格数据。下面是一个简单的示例代码,可以读取两个 Excel 表格并将它们合并,以及对数据进行一些处理: ```java import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelReader { public static void main(String[] args) throws IOException { // 读取第一个 Excel 表格 FileInputStream fis1 = new FileInputStream("excel1.xlsx"); Workbook workbook1 = WorkbookFactory.create(fis1); Sheet sheet1 = workbook1.getSheetAt(0); Iterator<Row> rowIterator1 = sheet1.iterator(); // 读取第二个 Excel 表格 FileInputStream fis2 = new FileInputStream("excel2.xlsx"); Workbook workbook2 = WorkbookFactory.create(fis2); Sheet sheet2 = workbook2.getSheetAt(0); Iterator<Row> rowIterator2 = sheet2.iterator(); List<String> mergedData = new ArrayList<>(); // 将两个表格数据合并 while (rowIterator1.hasNext()) { Row row = rowIterator1.next(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); mergedData.add(cell.toString()); } } while (rowIterator2.hasNext()) { Row row = rowIterator2.next(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); mergedData.add(cell.toString()); } } // 对数据进行处理 for (String data : mergedData) { // TODO: 进行数据处理 } // 关闭 Excel 文件 workbook1.close(); fis1.close(); workbook2.close(); fis2.close(); } } ``` 上述代码中,我们使用了 `FileInputStream` 类来读取 Excel 文件,然后使用 `WorkbookFactory.create()` 方法将文件流转换为 `Workbook` 对象,继而获取 `Sheet` 对象,最后使用 `iterator()` 方法获取行和单元格对象进行遍历。最后,我们将两个表格的数据合并到一个 `List` 中,然后对数据进行处理。处理完数据后,需要关闭 Excel 文件,以释放资源。 需要注意的是,这只是一个简单的示例代码,实际应用中需要根据具体需求进行进一步的开发和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值