判断2个excel文件差异的条数

server/2024/9/22 14:41:53/

判断2个excel文件差异的条数

package com.lucky.luckydoc;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class ExcelComparator {public static void main(String[] args) throws IOException {String file1Path = "C:\\Users\\luckincoffee\\Downloads\\DBSearch_2024-09-14_10_59_36.xlsx";String file2Path = "C:\\Users\\luckincoffee\\Downloads\\DBSearch_2024-09-14_11_00_03.xlsx";// 读取两个 Excel 文件List<List<String>> file1Data = readExcel(file1Path);List<List<String>> file2Data = readExcel(file2Path);// 比较两个文件的差异compareExcelRows(file1Data, file2Data);}// 读取 Excel 文件中的数据public static List<List<String>> readExcel(String filePath) throws IOException {List<List<String>> data = new ArrayList<>();FileInputStream fis = new FileInputStream(filePath);Workbook workbook = new XSSFWorkbook(fis);Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表for (Row row : sheet) {List<String> rowData = new ArrayList<>();for (Cell cell : row) {rowData.add(getCellValueAsString(cell));}data.add(rowData);}workbook.close();fis.close();return data;}// 根据单元格的类型获取字符串形式的值public static String getCellValueAsString(Cell cell) {if (cell == null) {return "";}switch (cell.getCellType()) {case STRING:return cell.getStringCellValue(); // 字符串类型case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {// 如果是日期类型,返回日期格式return cell.getDateCellValue().toString();} else {// 否则返回数值类型return String.valueOf(cell.getNumericCellValue());}case BOOLEAN:return String.valueOf(cell.getBooleanCellValue()); // 布尔类型case FORMULA:return cell.getCellFormula(); // 公式类型case BLANK:return ""; // 空白单元格default:return "未知类型";}}// 比较两个 Excel 文件的行差异public static void compareExcelRows(List<List<String>> file1Data, List<List<String>> file2Data) {int maxRows = Math.max(file1Data.size(), file2Data.size());List<List<String>> result = new ArrayList<>();if(file1Data.size()>file2Data.size()){file1Data.removeAll(file2Data);result=file1Data;}else if(file2Data.size()>file1Data.size()){file2Data.removeAll(file1Data);result=file2Data;}for (List<String> row : result){System.out.println(row);}
//        for (int i = 0; i < maxRows; i++) {
//            List<String> row1 = i < file1Data.size() ? file1Data.get(i) : new ArrayList<>();
//            List<String> row2 = i < file2Data.size() ? file2Data.get(i) : new ArrayList<>();
//
//            if (!row1.equals(row2)) {
//                System.out.println("第 " + (i + 1) + " 行不同:");
//                System.out.println("文件1: " + row1);
//                System.out.println("文件2: " + row2);
//            }
//        }}
}

http://www.ppmy.cn/server/117057.html

相关文章

力扣第560题 和为k的子数组

前言 记录一下刷题历程 力扣第560题 和为k的子数组 和为k的子数组 原题目&#xff1a;给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums …

滑动窗口算法—最小覆盖子串

题目 ”最小覆盖子串“问题&#xff0c;难度为Hard&#xff0c;题目如下&#xff1a; 给你两个字符串 S 和 T&#xff0c;请你在 S 中找到包含 T 中全部字母的最短子串。如果 S 中没有这样一个子串&#xff0c;则算法返回空串&#xff0c;如果存在这样一个子串&#xff0c;则可…

React Native 0.76版本发布

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…

基于微信小程序的垃圾分类(lw+演示+源码+运行)

摘 要 随着生态文明体制改革的不断推进,可持续发展的环保理念逐渐成为社会共识,而在推行环保措施的过程中却困难重重.针对生活废弃物肆意无序投放的问题,尽管目前各大城市相继推出垃圾分类强制性执行的政策法规,但因市民欠缺对垃圾种类的正确认识而导致垃圾分类的施行难度和成…

静态库,动态库以及makefile基础

一.静态&#xff08;链接&#xff09;库 libfun.a 静态链接进可执行程序 可执行程序偏大 运行时只需要可执行程序即可 生成静态库步骤 gcc -c fun.c -o fun.o ar rcv libfun.a fun.o //需要用.o文件生成数据库 运行 gcc main.c libfun.a 二.动态库 libfun.so 动…

JavaEE:文件内容操作(一)

文章目录 文件内容的读写---数据流字节流和字符流打开和关闭文件文件资源泄漏try with resources 文件内容的读写—数据流 文件内容的操作,读文件和写文件,都是操作系统本身提供了API,在Java中也进行了封装. Java中封装了操作文件的这些类,我们给它们起了个名字,叫做"文…

视图(mysql)

一、什么是视图 视图是⼀个虚拟的表&#xff0c;它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据&#xff0c;⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间&#xff0c;它仅…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传…