首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用java比较2 excel中的数据

在Java中比较两个Excel中的数据,可以使用Apache POI库来读取和处理Excel文件。以下是一个示例代码,用于比较两个Excel文件中的数据:

代码语言:txt
复制
import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;
import java.io.IOException;

public class ExcelComparator {
    public static void main(String[] args) {
        try {
            // 读取第一个Excel文件
            FileInputStream file1 = new FileInputStream("file1.xlsx");
            Workbook workbook1 = WorkbookFactory.create(file1);
            Sheet sheet1 = workbook1.getSheetAt(0);

            // 读取第二个Excel文件
            FileInputStream file2 = new FileInputStream("file2.xlsx");
            Workbook workbook2 = WorkbookFactory.create(file2);
            Sheet sheet2 = workbook2.getSheetAt(0);

            // 遍历第一个Excel文件的每一行
            for (Row row1 : sheet1) {
                // 获取第一个Excel文件当前行的数据
                String data1 = row1.getCell(0).getStringCellValue();

                // 遍历第二个Excel文件的每一行
                for (Row row2 : sheet2) {
                    // 获取第二个Excel文件当前行的数据
                    String data2 = row2.getCell(0).getStringCellValue();

                    // 比较两个数据是否相同
                    if (data1.equals(data2)) {
                        System.out.println("Data matched: " + data1);
                    }
                }
            }

            // 关闭文件流
            file1.close();
            file2.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码使用了Apache POI库来读取两个Excel文件,并通过嵌套循环遍历每一行的数据进行比较。如果两个数据相同,则输出匹配的数据。

请注意,这只是一个简单的示例代码,实际应用中可能需要更复杂的逻辑来处理不同的数据类型和比较规则。另外,为了使代码更加健壮和可靠,还应该添加异常处理和错误检查。

推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理Excel文件。您可以通过以下链接了解更多信息:腾讯云对象存储(COS)

请注意,以上答案仅供参考,实际应用中可能需要根据具体需求进行调整和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java进阶-常用Excel处理库比较

引言在当今商业和技术世界Java仍然是处理企业级数据重要语言之一,尤其是在涉及到大量数据处理和报告任务时。...选择正确库对于优化应用性能、简化代码维护和提升用户体验至关重要。本文将详细介绍这些主要Java Excel处理库,比较它们性能、易用性和功能特点,并通过实例说明它们在不同应用场景下表现。...2、Apache POI 功能支持读写Excel文件:可以创建新或处理现有的Excel文件。支持公式计算:自动计算和更新Excel公式。...我们简单地在一个列填充了随机数字,用户可以在Excel中选择这些数据并手动创建图表,柱状图或折线图。...六、几种库之间比较不同Excel处理库之间存在各自优势和短板,我们需要在实际开发根据具体需求进行权衡,处理文件大小、所需功能支持以及预期性能等级选择合适Excel处理库。

36222

Excel处理和使用地理空间数据POI数据

---- -2nd- 操作 01 基础 I 一份带有地理空间信息表格数据.xlsx (测试xls格式、xlsx[兼容模式] 无法使用三维地图功能,xls需另存为xlsx,xlsx[兼容模式...其他版本自测;使用三维地图功能需要连接网络,用于加载工作底图) III 其他 (非必须,自己下载卫星图,自己处理地图,绘制总平面等——用于自定义底图) 03 具体操作 打开数据表格——[插入...I 坐标问题 理论上地图在无法使用通用WGS84坐标系(规定吧),同一份数据对比ArcGISWGS84(4326)和ExcelWGS84、CJ-02(火星坐标系)显示效果,可能WGS84(...操作:在主工作界面右键——更改地图类型——新建自定义底图——浏览背景图片——调整底图——完成 i 底图校准 加载底图图片后,Excel会使用最佳数据-底图配准方案——就是让所有数据都落位在底图上。...(非常曲折),[创建视频]用于导出动态变化数据地图——调试时,需要添加日期字段——这可能也是Excel由于GIS软件一个地方吧。

10.9K20

Excel技巧:如何用Excel让筛选数据也有顺序编号?

确实有这种问题,筛选完数据为了打印,需要前面有顺序编号,可是一筛选原有的编号就断了,有得手工改,有没有什么办法能筛选时候编号自动顺序排列呢?效果如下: ?...问题:如何用Excel让筛选数据也有顺序编号? 解答:利用Subtotal函数搞定。...具体操作如下:在序号C4单元格处输入=subtotal(103,D4:D4),如下图1处所示: 公式说明一下: Subtotal叫分类汇总函数,基本就是只统计筛选之后数据统计。...参数103表示统计个数,与参数3区别是,手动隐藏行数也不统计个数。 D4:D4是统计范围,随着公式相对拖拽,可以看出范围是逐步扩张。所以才会统计出1,2,3,4等数据序列。...原理:当筛选之后,区域发生动态变化,subtotal函数会根据新区域自动进行编号产生,所以就是动态序号。 接下来筛选一下试试看,假设筛选地区”南部”数据。(下图2处) ?

4.2K20

Java 比较 equals 和 ==

比较什么如果你上培训班或者在学校学习的话,你老师大概率可能会告诉你对于:基本类型:比较是值是否相同;引用类型:比较是引用是否相同;本来这里就有点复杂了,还非要搞出另外 2 个概念。...所以 Java 为 String 搞了一个 String Pool,对于程序,你这样定义字符 String s1 = "iSharkFly";这个数据是存储在 String Pool 里面的。...因为 String 在 Java 里面被定义为不可变。等下一次你定义一个 s2 时候,如果是同样值, s1 和 s2 是相同,因为都在 String Pool 里面。...,这个对象在 Heap 内存。...总结equals 和 == 在 Java 面试中经常会遇到。只需要记住是 == 比较是内存地址,在对值进行比较时候并不可靠。在实际编码过程,这种比较比较常见,所以还是有必要了解下这个。

15000

javaString相等比较

2)= =:比较两个String对象指向内存地址是否相等。...3.原理 要理解 javaString运作方式,必须明确一点:String是一个非可变类(immutable)。什么是非可变类呢?...但是非可变类确实有着自身优势,状态单一,对象简单,便于维护。其次,该类对象对象本质上是线程安全,不要求同步。此外用户可以共享非可变对象,甚至可以共享它们内部信息。...(详见 《Effective java》item 13)。String类在java中被大量运用,甚至在class文件中都有其身影,因此将其设计为简单轻便非可变类是比较合适。 (1)创建。     ...使用StringBuffer对象,由于该类是可变,串接时仅仅时改变了内部数据结构,而不会创建新对象,因此性能上有很大提高。

1.4K60

Java 比较运算符

小菜鸟惭愧极了,基础不牢靠啊,赶紧翻出自己 Java 入门书对应章节看了一下,看完才恍然大悟,原来 Java比较运算符里还有这么多小细节呢……不是把 C++ 里经验直接照搬过来就行了。...Java 比较运算符里一些细节 >、>=、< 和 <= 只支持两边操作数都是数值类型。 == 和 != 两边操作数可以都是数值类型,也可以都是引用类型,但必须是同一个类实例。...当 obj1 和 obj2 引用同一个对象时,则 obj1 == obj2,否则 obj1 != obj2。 每种数值类型都有对应包装类,比如 long 包装类 Long。...包装类实例可以与数值型比较,是直接取出包装类实例所包装数值来比较。...最佳实践 引用类型实例之间,除非想要知道是否是引用同一个对象,否则它们之间比较,总是使用 equals() 方法。 参考 《疯狂 Java 讲义》——李刚著 第 3.7.5 节 比较运算符。

1.3K20

Java 比较运算符

(他脑子里定势一直以为 List 类型参数还是 long 呢),Java 就是比 C++ 矫情。想想 IDE 这里只是警告,并不是错误,所以也不加理会继续完成他代码去了。...但是到后来怎么运行结果都不太对,明明给 List 里添加元素里有相等,有些情况下应该不进入 if 才对,可是却每次比较完都进了 if。...小菜鸟惭愧极了,基础不牢靠啊,赶紧翻出自己 Java 入门书对应章节看了一下,看完才恍然大悟,原来 Java比较运算符里还有这么多小细节呢……不是把 C++ 里经验直接照搬过来就行了。...Java 比较运算符里一些细节 >>=<<= ==!= 当 和 引用同一个对象时,则 ,否则 。 每种数值类型都有对应包装类,比如 long 包装类 Long。...包装类实例可以与数值型比较,是直接取出包装类实例所包装数值来比较。 涉及自动装箱后情况复杂了一些,比如 这时 ina == inb 成立,而 inc == ind 不成立。

1K30

SpringBoot 2.X@Async和Java8completableFuture使用比较

背景 看到項目中有使用到Async注解和completetableFuturerunApply方法使用。兩者都是異步提交方法方式。那他两都分别在什么场景底下比较适用呢?...两个都是用默认性能和产生默认线程数 @Async简介 为了使得异步可用,Spring提供了一个注解@EnableAsync如果Java配置文件标注他,那么Spring就会开启同步可用,这样就可以使用注解...} CompleteTableTuture简介 点击:https://blog.csdn.net/weixin_40413961/article/details/107703172 两者demo压测比较...是的forkJoinPool默认核心线程数是根据CPU核数来穿建 使用Java8completableFuture使用demo /** * @author yuanxindong * @...总结 个人感觉Java 8completeTable比较好用一些,也支持自定义。 Spring也是OK,具体情景具体选择吧 @Async时候一定要设置线程数,以防万一OOM

2.6K30

Excel公式练习48: 比较字符串字符

导语:继续研究来自于excelxor.com案例。建议结合本文阅读原文,会了解更多细节,会有更大收获。 本次练习是:在单元格A2给定一个字符串值,仅由大写字母组成且字符长度至少为2。...在单元格B2输入公式:如果A2字符串各个字符按字母升序排列(从左到右),则返回TRUE;否则返回FALSE。如图1所示。 ? 图1 先不看答案,自已动手试一试。...因此: {1;2;3;4;5;6;7}+{0,1} 由第二个数组两个值与第一个数组每个值相加,得到: {1,2;2,3;3,4;4,5;5,6;6,7;7,8} 此时,公式转换为: =AND(GESTEP...;0;1;0;0;0},0)) 转换为: =AND({1;1;1;1;1;1;1}) 结果为: TRUE 小结 1.学习Excel怎么处理两个正交且元素数量不同数组运算。...2.学习如何通过数组运算比较两组值大小。

1.3K10

JavaInteger变量比较源码解析

原因分析 我们要知道当给一个Integer对象赋一个int值时,IntegervalueOf方法会被调用。那么,我们看看IntegervalueOf方法到底做了些什么。...int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high...IntegerCache.low和IntegerCache.high之间时,Integer被赋值将从IntegerCache.cache数组获得,也就是通过缓存获得。...综合两段代码,我们可以知道,在默认情况下,在-128到127之间数据在赋值时会从缓存获得。...结论 因此,在-128到127之间数据多次获得均为同一个对象,而超出这个范围数据将会创建一个新对象,只能通过equals方法比较才是对象值。

68940

Java比较器Comparable与Comparator

Java比较器 在Java中经常会涉及到对象数组排序问题,那么就涉及到对象之间比较问题。...实现此接口对象可以用作有序映射中键或有序集合元素,无需指定比较器。...Comparable 典型实现:(默认都是从小到大排列) String:按照字符串字符Unicode值进行比较 Character:按照字符Unicode值来进行比较 数值类型对应包装类以及...使用背景: 当元素没有实现java.lang.Comparable接口而又不方便改代码,或者是实现了Comparable接口,也指定了两个对象比较大小规则,但此时不想按照预定义方法比较大小。...所以又增加了一个java.util.Comparator接口。强行对多个对象进行整体排序比较

72720

批量汇总多Excel表格 | 格式化表单(简历)数据汇总2:多表批量转换汇总

大海:有了《PQ-M及函数:结合前期案例,学习自定义函数》基础,现在可以开始多个格式化表单数据转换汇总了。 小勤:嗯。...我刚试了一下,好简单,原来那个《批量汇总多Excel表格 | 格式化表单(简历)数据汇总1:单表转换》里读数据代码是这样: 只要加上自定义函数名和将s用作参数就好了,你看: 大海:嗯,不错。...Step-01:在步骤删除“导航”以后所有步骤 Step-02:筛选需要转换格式化表格 Step-03:在高级编辑器里把刚才改好自定义函数放到let后面: trans=(s)=>...{1},s[Column2]{2}, s[Column4]{2},s[Column6]{2},s[Column2]{3}}} ) Step-04:添加自定义列,用自定义函数实现表格转换...小勤:不过我在想怎么样实现配置性操作方法,就是想导入哪些数据,用户就填一个配置表,就像你在《批量汇总多Excel表格 | 格式化表单(简历)数据汇总1:单表转换》里提到用VBA做那个类似效果。

71850

RxJava2 doFinally 和 doAfterTerminate 比较

邻家小妹.jpg 在 RxJava doFinally 和 doAfterTerminate 这两个操作符很类似,都会在 Observable onComplete 或 onError 调用之后进行调用...new DoOnEachObserver(t, onNext, onError, onComplete, onAfterTerminate)); } 从 DoOnEachObserver ...而 downstream 对应下游是观察者。下流数据流向跟上游数据流向是相反,从下向上。所以,离观察者越近,就越先执行。这就是两段代码执行顺序不同缘故。...doFinally2: doAfterTerminate1: doFinally1: 在 onComplete 调用之后,先打印了"doAfterTerminate2:",再打印"doFinally2...也是对《RxJava 2.x 实战》一书中,第二章第一节最后一部分内容do操作符补充。 只有了解源码,才能更踏实地去写我们程序。

2K30
领券