zoukankan      html  css  js  c++  java
  • 将List<JavaBean>中所有记录导入指定的Excel文件中

    源代码:

      1 import java.io.File;
      2 import java.io.IOException;
      3 import java.util.Arrays;
      4 import java.util.HashMap;
      5 import java.util.Iterator;
      6 import java.util.List;
      7 import java.util.Map;
      8   
      9 import jxl.Workbook;
     10 import jxl.read.biff.BiffException;
     11 import jxl.write.Label;
     12 import jxl.write.WritableSheet;
     13 import jxl.write.WritableWorkbook;
     14 import jxl.write.WriteException;
     15 import jxl.write.biff.RowsExceededException;
     16  
     17 import org.springframework.beans.BeanWrapper;
     18 import org.springframework.beans.BeanWrapperImpl;
     19 
     20 import com.awd.bean.XsjlBean;
     21 
     22 /**
     23  * 2010年12月21日17:25:30
     24  * @author Administrator
     25  *
     26  */
     27 public class ExcelUtils {
     28     
     29     /**
     30      * 将List数据保存到Excel中
     31      *   2010年12月21日17:58:22 
     32      * @param list                记录List
     33      * @param field2TitleMap    JavaBean变量和表格标题
     34      * @param filePath            文件存放路径
     35      * @param cls                JavaBean  
     36      */ 
     37     public static void saveAsToExcel(List list,Map field2TitleMap,String filePath,Class cls) {
     38         if (list == null) {
     39             throw new IllegalArgumentException("ListRange 未被初始化");
     40         }
     41         if (field2TitleMap == null) {
     42             throw new IllegalArgumentException("field2TitleMap 未被初始化");
     43         }
     44         if (filePath == null) {
     45             throw new IllegalArgumentException("filePath 未被初始化");
     46         }
     47         if (cls == null) {
     48             throw new IllegalArgumentException("Class 未被初始化");
     49         }
     50         
     51         Object[] keySortArray = field2TitleMap.keySet().toArray();
     52         Arrays.sort(keySortArray);
     53         
     54         //javaBean变量名称Map
     55         Map<Object,String> fieldMap = new HashMap<Object,String>();
     56         //字段中文描述Map
     57         Map<Object,String> titleMap = new HashMap<Object,String>();
     58         
     59         //初始化字段名称与字段描述信息
     60         Iterator iter = field2TitleMap.entrySet().iterator();
     61         String[] valArr ;
     62         Map.Entry entry;
     63         Object key;
     64         Object val;
     65         while (iter.hasNext()) {
     66             entry = (Map.Entry) iter.next();
     67             key = entry.getKey();  
     68             val = entry.getValue();
     69             
     70             if (val != null) {  
     71                 valArr = (val.toString()).split("\\|"); 
     72                 if (valArr.length == 2) {
     73                     fieldMap.put(key, valArr[0]);
     74                     titleMap.put(key, valArr[1]);
     75                 } else {
     76                     fieldMap.put(key, val.toString());
     77                     titleMap.put(key, val.toString());
     78                 }
     79             }
     80         }  
     81         
     82         //创建Excel文件
     83         File file = new File(filePath);
     84         
     85         //创建表头
     86         createExcelTitle(file, keySortArray, titleMap);
     87         //生成文件内容   
     88         createExcelContent(file, keySortArray, fieldMap, list, cls);
     89         
     90     }
     91     
     92     /**
     93      * 创建Excel标题行
     94      * 2010年12月21日11:01:07  
     95      * @param file                文件
     96      * @param keySortArray        字段顺序数组
     97      * @param titleMap            标题Map
     98      */
     99     protected static void createExcelTitle(File file,Object[] keySortArray,Map titleMap) {
    100         if(file == null) {
    101             throw new IllegalArgumentException("文件不存在,无法创建Excel表格。");
    102         }
    103           
    104         if(keySortArray == null){
    105             throw new IllegalArgumentException("keySortArray 为null,请初始化后在操作。");
    106         }
    107 
    108         if(titleMap == null){
    109             throw new IllegalArgumentException("titleMap 为 null,无法创建。");
    110         }
    111         
    112         WritableWorkbook book = null;
    113         try {
    114             book = Workbook.createWorkbook(file);
    115             // 生成名为“第一页”的工作表,参数0表示这是第一页
    116             WritableSheet sheet1 = book.createSheet("sheet1"0);
    117             
    118             int n = 0;
    119             // 添加标题行
    120             Label label = null;
    121             for(Object keyObj:keySortArray) { 
    122                 if(titleMap.containsKey(keyObj)) {
    123                     label = new Label(n++0, titleMap.get(keyObj).toString());
    124                     sheet1.addCell(label);
    125                 }
    126             }
    127         } catch (IOException e) {
    128             throw new IllegalArgumentException("Excel的Sheet工作簿标题写入失败:"
    129                     + e.getMessage());  
    130         } catch (RowsExceededException e) {
    131             throw new IllegalArgumentException("Excel的Sheet工作簿标题写入失败:"
    132                     + e.getMessage());
    133         } catch (WriteException e) {
    134             throw new IllegalArgumentException("Excel的Sheet工作簿标题写入失败:"
    135                     + e.getMessage());
    136         }finally{
    137             try{
    138                 book.write();
    139                 book.close();
    140                 book = null;
    141             }catch (Exception e) {
    142                 throw new IllegalArgumentException("Excel文件写入失败,可能因为该文件正在被打开中:"
    143                         + e.getMessage());
    144             }
    145         }
    146     }
    147     
    148     /**
    149      * 生成Excel内容
    150      * 2010年12月21日11:01:41 
    151      * @param file                文件
    152      * @param keySortArray        字段顺序数组
    153      * @param list                数据列表
    154      * @param cls                指定的Class
    155      */
    156     protected static void createExcelContent(File file, Object[] keySortArray,
    157             Map fieldMap, List list, Class cls) {
    158         if (file == null) {
    159             throw new IllegalArgumentException("文件不存在,无法创建Excel表格。");
    160         }
    161 
    162         if (keySortArray == null) {
    163             throw new IllegalArgumentException("keySortArray 为null,请初始化后在操作。");
    164         }
    165 
    166         if (fieldMap == null) {
    167             throw new IllegalArgumentException("fieldMap 为 null,无法生成。");
    168         }
    169         if (list == null) {
    170             throw new IllegalArgumentException("数据列表 为 null,无法读取数据。");
    171         }
    172         if (cls == null) {
    173             throw new IllegalArgumentException("Class 为 null,无法进行类的映射关系。");
    174         }
    175 
    176         WritableWorkbook book = null;
    177         try {
    178             // Excel获得文件 
    179             Workbook wb = Workbook.getWorkbook(file);
    180            // 打开一个文件的副本,并且指定数据写回到原文件 
    181             book = Workbook.createWorkbook(file,wb);
    182             // 生成名为“第一页”的工作表,参数0表示这是第一页
    183             WritableSheet sheet1 = book.getSheet("sheet1");
    184 
    185             int cols = 0
    186             int rows = 1;
    187             BeanWrapper bw = null;
    188             Label label = null;
    189             for (Object obj : list) {
    190                 bw = new BeanWrapperImpl(cls.cast(obj)); 
    191                 for (Object keyObj : keySortArray) {
    192                     if (fieldMap.containsKey(keyObj)) {
    193                         try{
    194                             label = new Label(cols++, rows, obj2Str(bw.getPropertyValue(
    195                                     fieldMap.get(keyObj).toString())));
    196                             sheet1.addCell(label);   
    197                         }catch(org.springframework.beans.NotReadablePropertyException ex) { 
    198                             label = new Label(cols, rows, "找不到属性为'" + fieldMap.get(keyObj) + "'的方法");
    199                             sheet1.addCell(label); 
    200                         }
    201                     }
    202                 }  
    203                 cols = 0;
    204                 rows++;
    205             }
    206         } catch (IOException e) {
    207             throw new IllegalArgumentException("Excel的Sheet工作簿内容写入失败1:"
    208                     + e.getMessage());
    209         } catch (RowsExceededException e) {
    210             throw new IllegalArgumentException("Excel的Sheet工作簿内容写入失败2:"
    211                     + e.getMessage());
    212         } catch (WriteException e) {
    213             throw new IllegalArgumentException("Excel的Sheet工作簿内容写入失败3:"
    214                     + e.getMessage());
    215         } catch (BiffException e) {
    216             throw new IllegalArgumentException("源Excel文件读取失败4:"
    217                     + e.getMessage());
    218         } finally {
    219             try {
    220                 book.write();  
    221                 book.close();
    222                 book = null;
    223             } catch (Exception e) {
    224                 throw new IllegalArgumentException("Excel文件写入失败,可能因为该文件正在被打开中:"
    225                         + e.getMessage());
    226             }
    227         } 
    228     } 
    229     
    230     private static String obj2Str(Object o) {
    231         if (o== null){
    232             return "";
    233         }
    234         return o.toString();
    235     }
    236 }

    调用方法:

      ...

     1 List<XsjlBean> xsjlList = (List) page.getResult();//本人使用的Hibernate获取数据库记录的,就没有    单独写测试数据

     2        Map map =new HashMap();
     3        map.put("01""xm|姓名");  //Map KEY的“01“、”02“、"03"..代表字段排列显示的顺序 ;Map value”xm|姓名“,”xm“ 表示JavaBean的变量,”姓名“表示Excel显示的标题名称;导出那些字段完全依据Map所指定的

     4        map.put("02""jsh|监室号");
     5        map.put("03""jlsjString|记录时间");
     6        map.put("04""wgqkZH|违规情况");
     7        map.put("05""clr|处理人、");
     8        map.put("06""cljgZH|处理结果"); 
     9//另存为Excel文件

     10        ExcelUtils.saveAsToExcel(xsjlList,map,"c:/abc.xls",XsjlBean.class);

    .... 

    返回结果:

     


  • 相关阅读:
    移动比联通强的帖子的再次探讨
    清除或选中所有的checkbox
    textbox获得焦点显示JS日历控件
    Repeater分页
    互联网协会:博客推行实名制已成定局
    新闻内容分页
    获得显示器设置的分辨率
    node.js应用生成windows server的plugin——winser
    CSS基础
    git使用
  • 原文地址:https://www.cnblogs.com/yimu/p/LOOKLOVE.html
Copyright © 2011-2022 走看看