使用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 }