使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项

1:首先把Excel中的文本复制到txt中,复制如下:

A表:

证件号                           工号  姓名

310110xxxx220130004 101 傅家宜
310110xxxx220130005 102 顾音琪
310110xxxx220130006 103 郭加峤
310110xxxx220130007 104 胡奕蕾
310110xxxx220130010 105 凌家蔚
310110xxxx220130011 106 卢彦菁

B表:

证件号                           工号  姓名

310110xxxx220130004 111 傅家宜
310110xxxx220130005 102 顾音琪
310110xxxx220130006 103 郭嘉峤
310110xxxx220130007 104 胡奕蕾
310110xxxx220130010 105 凌家蔚
310110xxxx220130012 107 潘家莹

2:代码和运行结果如下:

 1 package aa;
 2 import java.io.BufferedReader;
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.InputStreamReader;
 6 import java.util.Hashtable;
 7 import java.util.Map.Entry;
 8
 9 public class DuplicateItem {
10      public static Hashtable<String, String> readTxtFile(String filePath){
11          Hashtable<String,String> table =new Hashtable<String, String>();
12             try {
13                     String encoding="GBK";
14                     File file=new File(filePath);
15                     if(file.isFile() && file.exists()){
16                         InputStreamReader read = new InputStreamReader(
17                         new FileInputStream(file),encoding);
18                         BufferedReader bufferedReader = new BufferedReader(read);
19                         String lineTxt = null;
20                         while((lineTxt = bufferedReader.readLine()) != null){
21                             String key = lineTxt.substring(0, lineTxt.indexOf("\t"));
22                             String value = lineTxt.substring(lineTxt.indexOf("\t")+1);
23                             table.put(key.trim(), value.trim());
24                         }
25                         read.close();
26             }else{
27                 System.out.println("找不到指定的文件");
28             }
29             } catch (Exception e) {
30                 System.out.println("读取文件内容出错");
31                 e.printStackTrace();
32             }
33             return table;
34         }
35
36          public static void printall(Hashtable<String,String> ht, Hashtable<String, String> ht2){
37              for(Entry<String, String> en : ht.entrySet()){
38                  if(null == ht2.get(en.getKey())){
39                      System.out.println("\n\tB中没有A中value为" + en.getValue().replace("\t", "") + "的项\n");
40                  }else if(!en.getValue().equals(ht2.get(en.getKey()))){
41                      System.out.println("A中value为:  " + en.getValue().replace("\t", "") + "\t与B中  "+ ht2.get(en.getKey()).replace("\t", "") +"  不同");
42                  }
43
44              }
45
46              for(Entry<String, String> en2 : ht2.entrySet()){
47                  if(ht.get(en2.getKey()) == null){
48                      System.out.println("\n\tA中没有B中value为" + en2.getValue().replace("\t", "") + "的项\n");
49                  }else if(!en2.getValue().equals(ht.get(en2.getKey()))){
50                      System.out.println("B中value为:  " + en2.getValue().replace("\t", "") + "\t与A中  "+ ht.get(en2.getKey()).replace("\t", "") +"  不同");
51                  }
52
53              }
54           }
55
56         public static void main(String argv[]){
57              Hashtable<String,String> table =new Hashtable<String, String>();
58              Hashtable<String,String> table2 =new Hashtable<String, String>();
59             String filePath = "C:\\Users\\Administrator\\Desktop\\c.txt";
60             String filePath2 = "C:\\Users\\Administrator\\Desktop\\d.txt";
61             table = readTxtFile(filePath);
62             table2 = readTxtFile(filePath2);
63             if(table != null && table2 != null){
64                 printall(table,table2);
65             }
66
67         }
68 }
时间: 2024-12-24 13:24:51

使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项的相关文章

找出两个字符串中最长的相同子字符串

//找出两个字符串中最长的相同子字符串 public class Stringdemo { public static void main(String[] args) { String str1 = new String("eeabcde"); String str2 = new String("bcdefabcabcdedegg"); byte[] char1 = str1.getBytes(); byte[] char2 = str2.getBytes();

黑马程序员——找出两个字符串中最大的子串

找出两个字符串中最大的子串 </pre><pre name="code" class="java">public class StringMaxString { //找一个字符串的最大子串 public static void main(String[] args) { // TODO Auto-generated method stub String s1="qwerabcdtyuiop"; String s2=&quo

高效的找出两个List中的不同元素

转自同名博文,未知真正出处,望作者见谅 如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合: package com.czp.test; import java.util.ArrayList; import java.util.List; public class TestList { public static void main(String[] args) { Lis

mysql 从相同类型的多张表中提取到一张表中

蜗牛背着沉重的壳,贴着地面一步步艰难地向前爬行,不回头,也不左顾右盼,只是朝着自己想到达的地方行进. 有时候需要从多张相同类型的表中提取数据,这些表有一些相同的列或者表结构完全相同,同时表名存在一定的规律,如果表数量少还好,如果表数量多的话则会比较繁琐.可以通过存储过程将多张表的数据提取到一张表的方法来降低工作量. 先创建测试表并生成测试数据.以下存储过程创建10张测试表,每张表生成10条测试数据.drop PROCEDURE if EXISTS create10tables;create PR

用javascript编写(找出两个数组中的差异元素并存入一个新的数组,假设每个数组内部都没有重复元素)。

onload = function(){                var a = [2,5,7,9];                var b = [3,4,5,7,8];                                //先准备一个函数,用来检查一个数组中是否包含某个数据,是就返回true,不包含就返回false                //再循环任意一个数组(这里就选a),把该数组中的每一个元素都去b数组中检查,没有就属于差异元素,就存入新的数组        

找出两个String中相同的字符并去重

import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Test {  public static void main(String[] args) {   String s1 = "123456abcde";   String s2 = "111222bbbcc

mysql中 如何合并两张表

mysqldump -d:只导出表结构,不含数据 导出完整的数据库的数据不含表结构 mysqldump -t :只导出数据,不含表结构 解决方法:mysqldump -t 在原来数据库中,只把表数据导出来 然后 导入到要合并的数据库里面就可以 注意 : 如果不加 -t 会把表结构跟表数据都导出来,这样,在合并表的时候,因为都存在表结构,他会把原有表结构以及数据删除,然后才把新数据导入,这样就没有了原来的数据 原文地址:http://blog.51cto.com/12916925/2087170

选取不在另一张表中记录的方法及优化

假设我们想从A表中选择一些记录,记录中的部分字段的取值是B表所不存在的,这里定义A表为源表,B表为参照表.例如,常见的例子部门表(Department)作为源表,员工表(Employee)作为参照表,可以从部门表中列举出那些员工表中所不包含的部门id来,即找出那些没有员工的部门.    一般类来说,如果数据库支持集合操作符,就可以直接查询,如果没有,就使用子查询.(1)DB2 and PostgreSQL:select deptno from deptexceptselect deptno fr

两张表并集求相同字段的和

有两张表a b 每张表里有两个字段都是id numa表的值id  num   b表的值  id  numa    5             b   15b    10            c   20c    15            d   20d    20            e   30求出两张表的结果 用一条sql结果值id  numa   5b   25c   35d   40e   30 SELECT `id`, SUM(`num`) FROM (SELECT * FROM