利用反射来取出数据库的值并写入excel表中



1
  首先要有poi的类
2
3
4  public void creatExcel(){
5  //利用反射从数据库中取值
6      List lookers=getEntityFromMysql(Looker.class);
7  //创建HSSFWorkbook对象
8      HSSFWorkbook hssfWorkbook=new HSSFWorkbook();
9  //利用HSSFWorkbook来创建excel文件的looker表
10      HSSFSheet hssfSheet=hssfWorkbook.createSheet("looker");
11  //取出类的属性
12      Field[] fields=Looker.class.getDeclaredFields();
13  //创建第一行
14      HSSFRow firstrow=hssfSheet.createRow(0);
15      for (int i=0;i<fields.length;i++ ){
16  //创建第一行的各列
17          HSSFCell cell=firstrow.createCell(i);
18  //将数据写入的列与行确定的单元格中
19          cell.setCellValue(fields[i].getName());
20      }
21
22      for (int i=0;i<lookers.size();i++){
23          HSSFRow otherrow=hssfSheet.createRow(i+1);
24          for (int t=0;t<fields.length;t++ ){
25              HSSFCell cell=otherrow.createCell(t);
26              String firstCharacter=
  String.valueOf(fields[t].getName().charAt(0)).toUpperCase();
27              String param="get"+firstCharacter+fields[t].getName().substring(1);
28              //System.out.println(firstCharacter+" $$$$ "+param);
29              try {
30  //获取数组中的对象
31                  Object obj=lookers.get(i);
32  //取出对象的某一属性
33     Field field=fields[t];
34  //设置此属性可以访问
35                  field.setAccessible(true);
36  //取出属性值并打印
37                  System.out.println("!!!! "+field.get(obj));
38  //将属性值写入到单元格中
39                  if (getType(fields[t].getType().getName()).equals("Integer")){
40
41                      Integer para= (Integer) field.get(obj);
42                      cell.setCellValue(para);
43                  }else if (getType(fields[t].getType().getName()).equals("String")){
44                      String para= (String) field.get(obj);
45                      cell.setCellValue(para);
46                  }
47              } catch (IllegalAccessException e) {
48                  e.printStackTrace();
49              }
50          }
51      }
52  //利用输出流将excel文件输出到磁盘中
53      FileOutputStream outputStream=null;
54      try {
55          outputStream=new FileOutputStream("d:\\looker.xls");
56          hssfWorkbook.write(outputStream);
57          outputStream.flush();
58          outputStream.close();
59      } catch (FileNotFoundException e) {
60          e.printStackTrace();
61      } catch (IOException e) {
62          e.printStackTrace();
63      }
64  }