怎样使用java对比两份execl文件并读取其中的不同?

kk50505kk 2013-01-15 08:15:06
我现在有两份数据,execl格式的。
其中一份是完整的文件A,一份是少了一些数据的文件B(这份文件比较新)。
A中有所有完整的字段,
如:
编号,姓名,班级,身高,年龄。
B中的属性只有
编号,姓名,班级,身高。
我现在想读取A文件,然后存到内存中,遍历B中数据,在B中把编号相同的人的年龄给添加上。应该如何操作呢?
求完整的代码。
我想利用这份代码来学习一下execl表的读取,序列的遍历等内容。。
求高手帮忙。
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a395885670 2013-01-16
  • 打赏
  • 举报
回复
用POI很简单的
流星陨落 2013-01-16
  • 打赏
  • 举报
回复
熊猫大虾 2013-01-16
  • 打赏
  • 举报
回复
引用 5 楼 AA5279AA 的回复:
上面那份没改完。刚才一看不对,改了一下。 出去了。回来再弄。。。 Java code?123456789101112131415161718192021222324252627282930313233343536373839public class Test1 { public static void main(String[] args) throws Exc……
这个很好,建议楼主采纳了
失落夏天 2013-01-16
  • 打赏
  • 举报
回复
上面那份没改完。刚才一看不对,改了一下。 出去了。回来再弄。。。

public class Test1 {
	public static void main(String[] args) throws Exception {
		String str="";
		String result="";
		Map map=returnMap("D:\\old.csv");
		//读取一份新的文件,判断每一行
		FileReader fr=new FileReader("D:\\new.csv");
		BufferedReader br=new BufferedReader(fr);
		while((str=br.readLine())!=null){
			String s[]=str.split(",");
			if(map.get(s[4])!=null){				
				result=result+str+map.get(s[4])+"\n";
			}
		}
		
		write(result);		
	}
	//读取一份原版文件,然后把其中的sku和carrier制作成一个map。并返回
	public static Map returnMap(String file) throws Exception{
		FileReader fr=new FileReader(file);
		BufferedReader br=new BufferedReader(fr);
		String str="";
		Map<String,String> map=new HashMap<String, String>();
		while((str=br.readLine())!=null){
			String s[]=str.split(",");
			String sku=s[4];
			String carrier=s[16];
			map.put(sku, carrier);
		}
		return map;
	}
	
	public static void write(String result) throws Exception{
		FileWriter fw=new FileWriter("D:\\test.csv");
		PrintWriter pw=new PrintWriter(fw);
		pw.write(result);
		pw.flush();
	}
}
失落夏天 2013-01-16
  • 打赏
  • 举报
回复

public static void main(String[] args) throws Exception {
		String str="";
		String result="";
		Map map=returnMap("D:\\old.csv");
		FileReader fr=new FileReader("D:\\new.csv");
		BufferedReader br=new BufferedReader(fr);
		while((str=br.readLine())!=null){
			String s[]=str.split(",");
			if(map.get(s[4])!=null){
				
			}
			result=result+str+"\n";
		}
		
		write(result);
		
		
	}
	
	public static Map returnMap(String file) throws Exception{
		FileReader fr=new FileReader(file);
		BufferedReader br=new BufferedReader(fr);
		String str="";
		Map<String,String> map=new HashMap<String, String>();
		while((str=br.readLine())!=null){
			String s[]=str.split(",");
			String sku=s[4];
			String carrier=s[16];
			map.put(sku, carrier);
		}
		return map;
	}
	public static void write(String result) throws Exception{
		FileWriter fw=new FileWriter("D:\\new.csv");
		PrintWriter pw=new PrintWriter(fw);
		pw.write(result);
		pw.flush();
	}
这是读的txt文档或者csv文件的,读execl的还没有改出来。。 等会得出去,回来看看再弄吧。
  • 打赏
  • 举报
回复
使用POI3.8以上10几M的都没问题,学习POI很简单的啦
桃园闲人 2013-01-15
  • 打赏
  • 举报
回复
不知道文件多大?如果比较小可以使用poi把两个文件读取进来,把内容风别放到list中然后比较两个list,如果非常大,建议吧文件数据导入到数据库,然后使用sql查询来比对。
brightyq 2013-01-15
  • 打赏
  • 举报
回复
网上有太多例子了,楼主不自己动动手找找呢? http://hbcui1984.iteye.com/blog/55844 或去apache网站上看下例子

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧