首页 > 代码库 > java反射学习之二万能EXCEL导出

java反射学习之二万能EXCEL导出

一、EXCEL导出的实现过程

  假设有一个对象的集合,现在需要将此集合内的所有对象导出到EXCEL中,对象有N个属性;那么我们实现的方式是这样的:

  循环这个集合,在循环集合中某个对象的所有属性,将这个对象的所有属性作为EXCEL的列,该对象占据EXCEL的一行

 

二、万能EXCEL导出(以JXL为例,jxl、poi等excel导入导出的jar包不做介绍了)

  1、创建java工程、引入jxl的jar包

  2、直接上代码

    Book.java

    

/** * Book对象 * @author bwy * */public class Book {    private String name;    private double price;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public Book(String name, double price) {        this.name = name;        this.price = price;    }    }

    excel工具类ExcelUtil.java

 1 /** 2  * EXCEL工具类 3  *  4  * @author bwy 5  * 6  */ 7 public class ExcelUtil { 8  9     /**10      * excel导出方法11      * 12      * @param list13      *            导出的对象集合14      * @param filePath15      *            导出路径16      */17     @SuppressWarnings("rawtypes")18     public static void exportExcel(ArrayList list, String filePath) {19 20         // 创建workbook对象21         WritableWorkbook workBook = null;22 23         // sheet对象24         WritableSheet sheet = null;25         try {26             workBook = Workbook.createWorkbook(new File(filePath));27             sheet = workBook.createSheet("book", 0);28 29             // 循环该对象的集合30             for (int i = 0; i < list.size(); i++) {31 32                 // 获取对象33                 Object obj = list.get(i);34 35                 // 获取对象的类36                 Class cls = obj.getClass();37 38                 // 获取该类的所有属性39                 Field[] fis = cls.getDeclaredFields();40 41                 // 循环类属性42                 for (int j = 0; j < fis.length; j++) {43 44                     // 设置私有属性访问权限,这一步很重要45                     fis[j].setAccessible(true);46 47                     // 创建label48                     Label label = new Label(j, i, fis[j].get(obj).toString());49 50                     // 放入到sheet中51                     sheet.addCell(label);52                 }53             }54 55             // 写文件56             workBook.write();57         } catch (Exception e) {58             e.printStackTrace();59         } finally {60 61             // 关闭流62             try {63                 workBook.close();64             } catch (WriteException e) {65                 e.printStackTrace();66             } catch (IOException e) {67                 e.printStackTrace();68             }69         }70     }71 }

    最后是测试类  ExcelExportTest.java

 1 public class ExcelExportTest { 2     public static void main(String[] args) { 3         Book b1 = new Book("我和凤姐同居的日子",32.00); 4         Book b2 = new Book("HTML5开发手册",18.00); 5         Book b3 = new Book("thiking in java",90.0); 6         Book b4 = new Book("数据结构",22);   7         Book b5 = new Book("毛 泽 东思想",10); 8          9         ArrayList<Book> bookList = new ArrayList<Book>();10         bookList.add(b1);11         bookList.add(b2);12         bookList.add(b3);13         bookList.add(b4);14         bookList.add(b5);15         16         ExcelUtil.exportExcel(bookList,"c:/export.xls");17     }18 }

 

  运行测试类,可以看到,在C盘根目录生成了export.xls文件

技术分享

 

  当然,这个导出的功能不是最完善的,只是通过这一功能去了解java反射的使用。

 

java反射学习之二万能EXCEL导出