ITPub博客

首页 > 应用开发 > Java > java大数据处理-大量数据到Excel

java大数据处理-大量数据到Excel

Java 作者:penny19790103 时间:2012-10-16 09:59:05 0 删除 编辑

在Java Web开发中,经常需要导出大量的数据到Excel,使用POI、JXL直接生成Excel,很容易就造成内存溢出了。

  1、有一种方式,就是把数据写成csv格式文件。

  1)csv文件可以直接用Excel打开。

  2)写csv文件的效率和写txt文件的效率一样高。

  3)同样的数据内容,生成的csv文件的大小远远小于生成的Excel文件。

  从以上优点就可以看出生成csv文件消耗的内存绝对小于生成Excel文件。

  2、按一定的格式去生成csv文件,在Excel中打开的时候就是完整的行和列格式。

  例如:在Excel中的格式:

                                   

  那么,在csv文件中格式就必须为:

                                  

  就是说,列和列之间,需要用英文输入法状态下的逗号", "间隔:风云第一刀, 古龙。

  3、在Struts2中导出数据到Excel,一个简单的例子。

  CsvAction,生成csv文件,并且将生成的csv文件完整路径传递到下载Action。

 

Java代码  收藏代码
  1. package  cn.luxh.struts2.action;  
  2.   
  3. import  java.io.FileWriter;  
  4. import  java.io.IOException;  
  5. import  java.text.SimpleDateFormat;  
  6. import  java.util.ArrayList;  
  7. import  java.util.Date;  
  8. import  java.util.List;  
  9.   
  10. import  cn.luxh.struts2.entity.Novel;  
  11.   
  12. import  com.opensymphony.xwork2.ActionSupport;  
  13.   
  14.   
  15.   
  16. public   class  CsvAction  extends  ActionSupport  
  17.   
  18.     private   static   final   long  serialVersionUID -2862629695443964658L;  
  19.       
  20.        
  21.     private  String fileName;  
  22.       
  23.       
  24.        
  25.     public  String exportData2CSV()  
  26.         List novels getNovels();  
  27.         fileName "D:/novels.csv"  
  28.         writeData2CSV(novels,fileName);  
  29.         return  SUCCESS;  
  30.           
  31.      
  32.       
  33.        
  34.     private  List getNovels()  
  35.         List novels new  ArrayList();  
  36.           
  37.         Novel novel1 new  Novel( "风云第一刀" , "古龙" , new  Date());  
  38.         Novel novel2 new  Novel( "书剑恩仇录" , "金庸" , new  Date());  
  39.         Novel novel3 new  Novel( "陆小凤传奇" , "古龙" , new  Date());  
  40.         Novel novel4 new  Novel( "鹿鼎记" , "金庸" , new  Date());  
  41.           
  42.         novels.add(novel1);  
  43.         novels.add(novel2);  
  44.         novels.add(novel3);  
  45.         novels.add(novel4);  
  46.           
  47.         return  novels;  
  48.      
  49.       
  50.        
  51.     public   void  writeData2CSV(List novels,String fileName)  
  52.         FileWriter fw null  
  53.         try   
  54.             fw new  FileWriter(fileName);  
  55.             //输出标题头   
  56.             //注意列之间用","间隔,写完一行需要回车换行" "   
  57.             String title "序号,小说名称,作者,出版日期 "  
  58.             fw.write(title);  
  59.               
  60.             String content null  
  61.             SimpleDateFormat sdf new  SimpleDateFormat( "yyyy-MM-dd" );  
  62.             for ( int  i= 0 ;i
  63.                 Novel novel novels.get(i);  
  64.                 //注意列之间用","间隔,写完一行需要回车换行" "   
  65.                 content =(i+1 )+ "," +novel.getName()+ "," +novel.getAuthor()+ "," +sdf.format(novel.getPublishDate())+ " "  
  66.                 fw.write(content);  
  67.              
  68.         }catch (Exception e)  
  69.             e.printStackTrace();  
  70.             throw   new  RuntimeException(e);  
  71.         }finally   
  72.             try   
  73.                 if (fw!= null  
  74.                     fw.close();  
  75.                  
  76.             catch  (IOException e)  
  77.                 e.printStackTrace();  
  78.              
  79.          
  80.      
  81.   
  82.  

 

 配置文件:

 

Xml代码  收藏代码
  1.   
  2.          < action   name = "exportData2CSV"   class = "cn.luxh.struts2.action.CsvAction"   method = "exportData2CSV" >   
  3.             < result   type = "redirectAction" >   
  4.                 < param   name = "actionName" > download param >   
  5.                 < param   name = "nameSpace" > /download param >   
  6.                    
  7.                 < param   name = "fileName" > ${fileName} param >   
  8.              result >   
  9.          action >   

  4、看一下同样的数据内容,csv文件和Excel文件的大小对比:  

                                        

 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23201010/viewspace-1114417/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-01-17

最新文章