• 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 list
    13      *            导出的对象集合
    14      * @param filePath
    15      *            导出路径
    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                     // 创建label
    48                     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反射的使用。

  • 相关阅读:
    Numpy基础
    Numpy基础
    Java复习之数组
    Java复习之数组
    Python基础2
    第六章 3 列表生成式
    第六章 1 列表(创建,特点)
    IEEE(电气和电子工程师协会)会议排名
    第五章 3 流程控制语句break和continue
    第五章 2 循环结构
  • 原文地址:https://www.cnblogs.com/weyoung1987/p/5855011.html
Copyright © 2020-2023  润新知