1 packagecom.util;2
3 importjava.io.File;4 importjava.lang.reflect.Field;5 importjava.util.ArrayList;6
7 importcom.bean.Book;8
9 importjxl.Sheet;10 importjxl.Workbook;11 importjxl.write.Label;12 importjxl.write.WritableSheet;13 importjxl.write.WritableWorkbook;14
15 public classExcelUtil {16 //第一个参数为要导出的数据的实体类的对象,实例类不确定,第二个参数为导入路径
17 public static voidexcleOut(ArrayList ar,String str){18 WritableWorkbook book = null;//编写WritableWorkbook对象,该对象代表了excel对象
19 try{20 book = Workbook.createWorkbook(new File(str));//创建文件路径str
21 WritableSheet sheet = book.createSheet("sheet",0);//获取sheet对象22 //对集合进行遍历
23 for(int i = 0; i < ar.size();i++){24 Object ob = ar.get(i);//集合中的对象不确定,用Object代替25 //利用反射机制
26 Class cl = ob.getClass();//运行时获得传递过来的对象
27 Field[] fi = cl.getDeclaredFields();//获取所有属性的对象,用来获取属性
28 for(int j = 0; j
29 fi[j].setAccessible(true);//启用访问权限30 //获取值 列(j),行(i),值fi[j]为字符串方式
31 Label la = newLabel(j, i, String.valueOf(fi[j].get(ob)));32 sheet.addCell(la);//将数据写入sheet对象中
33 }34 }35 book.write();36 } catch(Exception e) {37 e.printStackTrace();38 }finally{39 try{40 book.close();41 } catch(Exception e) {42 e.printStackTrace();43 }44 }45 }46 //第一个参数为要导入的数据的实体类的对象,第二个参数为导入路径
47 public staticArrayList excleIn(Class cl,String str){48 ArrayList ar =new ArrayList();//创建空的集合用于存储数据
49 Workbook book = null;//声明一个workbook对象
50 try{51 book =Workbook.getWorkbook(new File(str));//获取到类对象
52 Sheet sheet = book.getSheet(0);//获取sheet对象
53 Field []fi = cl.getDeclaredFields();//获取类属性信息
54 for(int i = 0;i < sheet.getRows();i++){//对读取进来的excle数据进行遍历
55 Object ob = cl.newInstance();//创建实例化对象,创建新的存储数据的对象,用Object对象代替56 //将所有的属性封装到对象中
57 for(int j = 0;j
58 fi[i].setAccessible(true);//启用属性访问权限
59 String con = sheet.getCell(j,i).getContents();//从excel中读取数据60 //判断属性的类型
61 if(fi[j].getType().toString().equals("Class java.lang.String")){62 //将读入的数据(在con中)封装到对象(ob)的属性(fi[i])中
63 fi[j].set(ob,con);//ob.id=con正常方法
64 }else if(fi[j].getType().toString().equals("int")){65 fi[j].setInt(ob,Integer.valueOf(con));//将信息封装到对象中
66 }else if(fi[j].getType().toString().equals("Integer")){67 fi[j].setInt(ob,Integer.valueOf(con));//将信息封装到对象中
68 }69
70 ar.add(ob);71 }72 }73 } catch(Exception e) {74 e.printStackTrace();75 }finally{76 book.close();77 }78 returnar;79
80 }81
82 public static voidmain(String[] args) {83 //ArrayList arrayList = new ArrayList();84 //Book book = new Book();85 //book.setId(1);86 //book.setName("Java语言");87 //book.setType("面向对象");88 //Book book1 = new Book();89 //book1.setId(2);90 //book1.setName("西游记");91 //book1.setType("故事");92 //Book book2 = new Book();93 //book2.setId(3);94 //book2.setName("高数");95 //book2.setType("难");96 //arrayList.add(book);97 //arrayList.add(book1);98 //arrayList.add(book2);99 //ExcelUtil.excleOut(arrayList,"D:/Sourcecode/Java/fanshe/book1.xls");100 //导入的数据位Book类型
101 ArrayList ar = ExcelUtil.excleIn(Book.class,"D:/Sourcecode/Java/fanshe/book1.xls");102 for(Book bo:ar){103 System.out.println(bo.getId()+" "+bo.getName()+" "+bo.getType());104 }105 }106
107 }