利用反射来取出数据库的值并写入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 }