需要jxl.jar
package com.rainmer.main; import java.io.File; import java.io.IOException; import java.util.ArrayList; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import com.rainmer.bean.Book; public class ExcleBook { public void excleOut(ArrayList<Book> ar){ WritableWorkbook book = null;//excle对象 try{ //创建excle对象 book = Workbook.createWorkbook(new File("G:/book.xls")); //通过excle对象创建一个选项卡对象 WritableSheet sheet = book.createSheet("sheet", 0); for (int i = 0; i < ar.size(); i++) { //创建一个单元格对象 Label la0 = new Label(0,i,String.valueOf(ar.get(i).getId())); Label la1 = new Label(1,i,ar.get(i).getName());//创建单元格。参数说明:列,行,值 Label la2 = new Label(2,i,ar.get(i).getType()); //将创建好的单元格对象放入选项卡中 sheet.addCell(la0); sheet.addCell(la1); sheet.addCell(la2); } //写入目标路径 book.write(); }catch(Exception e){ e.printStackTrace(); }finally{ try { book.close(); } catch (WriteException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public ArrayList<Book> excleIn(){ ArrayList<Book> ar = new ArrayList<Book>(); Workbook book = null; try{ book = Workbook.getWorkbook(new File("G:/book.xls")); Sheet sheet = book.getSheet(0); for (int i = 0; i < sheet.getRows(); i++) { Book bo = new Book(); Cell cell = sheet.getCell(0,i);//Cell读取的时候的单元格,列,行 bo.setId(Integer.valueOf(cell.getContents())); bo.setName(sheet.getCell(1, i).getContents()); bo.setType(sheet.getCell(2, i).getContents()); ar.add(bo); } }catch(Exception e){ e.printStackTrace(); }finally{ book.close(); } return ar; } public static void main(String[] args) { ExcleBook book = new ExcleBook(); ArrayList<Book> ar = new ArrayList<Book>(); Book bo1 = new Book(); bo1.setId(1); bo1.setName("火影之鸣人重生"); bo1.setType("同人"); Book bo2 = new Book(); bo2.setId(2); bo2.setName("我和我的老婆大人"); bo2.setType("都市"); ar.add(bo1); ar.add(bo2); book.excleOut(ar); ArrayList<Book> result = book.excleIn(); for (int i = 0; i < result.size(); i++) { System.out.println(result.get(i).getName()); } } }
运行结果:
调用了setName方法
调用了setName方法
调用了getName方法
调用了getName方法
调用了setName方法
调用了setName方法
调用了getName方法
火影之鸣人重生
调用了getName方法
我和我的老婆大人
——————————————————————————————————————————————————————————————————————————
如果有一个项目,要求你实现图书信息导入导出,用户信息导入导出,借阅信息导入导出,维护信息导入导出,管理信息导入导出......。利用反射可以很好地实现代码重用。
package com.rainmer.util; import java.io.File; import java.lang.reflect.Field; import java.util.ArrayList; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import com.rainmer.bean.Book; public class ExcleUtil { //如果有一个项目, //要求你实现图书信息导入导出,用户信息导入导出,借阅信息导入导出,维护信息导入导出,管理信息导入导出。。。。。 public void excleOut(ArrayList ar, String str){ WritableWorkbook book = null; try { book = Workbook.createWorkbook(new File(str)); WritableSheet sheet = book.createSheet("sheet", 0); for(int i = 0;i<ar.size();i++){ Object ob = ar.get(i); Class cl = ob.getClass(); Field[] fi = cl.getDeclaredFields(); for(int j = 0;j<fi.length;j++){ fi[j].setAccessible(true); Label la = new Label(j, i, String.valueOf(fi[j].get(ob))); sheet.addCell(la); } } book.write(); } catch (Exception e) { e.printStackTrace(); }finally{ try { book.close(); } catch (Exception e) { e.printStackTrace(); } } } public ArrayList excleIn(Class cl, String str){ ArrayList ar = new ArrayList(); Workbook book = null; try{ book = Workbook.getWorkbook(new File(str)); Sheet sheet = book.getSheet(0); Field[] fi = cl.getDeclaredFields(); for (int i = 0; i < sheet.getRows(); i++) { Object ob = cl.newInstance(); for (int j = 0; j < fi.length; j++) { fi[j].setAccessible(true); String con = sheet.getCell(j, i).getContents(); if(fi[j].getType().toString().equals("class java.lang.String")){ fi[j].set(ob, con); }else if(fi[j].getType().toString().equals("int")){ fi[j].setInt(ob, Integer.valueOf(con)); } } ar.add(ob); } }catch(Exception e){ e.printStackTrace(); } return ar; } public static void main(String[] args) { ExcleUtil util = new ExcleUtil(); ArrayList<Book> ar = new ArrayList<Book>(); Book bo1 = new Book(); bo1.setId(1); bo1.setName("火影之鸣人重生"); bo1.setType("同人"); Book bo2 = new Book(); bo2.setId(2); bo2.setName("我和我的老婆大人"); bo2.setType("都市"); ar.add(bo1); ar.add(bo2); util.excleOut(ar, "G:/bookA.xls");
ArrayList<Book> result = util.excleIn(Book.class, "G:/book.xls");
for (Book book : result) {
System.out.println("id="+book.getId()+";name="+book.getName()+";type="+book.getType());
}
}
}
运行结果:
调用了setName方法
调用了setName方法
调用了getName方法
id=1;name=火影之鸣人重生;type=同人
调用了getName方法
id=2;name=我和我的老婆大人;type=都市