浏览 1943 次
锁定老帖子 主题:java 导出excel的两种方法实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-04
/** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param xLocation * EXCEL表格的行索引,从1开始 * @param yLocation * EXCEL表格的列索引,从1开始 * @param value * 需要导入的数据 * */ public void modifyExcel(String realPath,String sheetname,int xLocaion,int yLocation,String value){ POIFSFileSystem fs=null; HSSFWorkbook wb=null; try { File file=new File(realPath); if(file.exists()){ fs = new POIFSFileSystem(new FileInputStream(realPath)); wb=new HSSFWorkbook(fs); HSSFSheet s=wb.getSheetAt(0); //函数处理时横纵坐标从索引0开始 HSSFRow row=s.getRow(xLocaion-1); HSSFCell cell=null; if(row!=null){ cell=row.getCell(yLocation-1); if(cell==null){ cell=row.createCell(yLocation-1); } }else{ row=s.createRow(xLocaion-1); cell=row.createCell(yLocation-1); } cell.setCellValue(value); }else{ wb=new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow row=s.createRow(xLocaion-1); HSSFCell cell=row.createCell(yLocation-1); cell.setCellValue(value); } FileOutputStream fos=new FileOutputStream(realPath); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 第二种就是运用了对象,以对象为单位写入数据,即一个对象的所有属性在一行列出,有多少个对象就有多少行,此方法比较适用于个人信息导出之类的应用,至于导出属性的顺序问题在导出对象的实体类内部改动下即可: /** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param users * 需要导出到excel表的对象数组 */ public void outputExcel(String realPath,String sheetname,UserModel[] users){ FileOutputStream fos; try { File file=new File(realPath); fos = new FileOutputStream(file, true); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow[] rows=new HSSFRow[users.length]; HSSFCell[][] cells=new HSSFCell[20][20]; for (int i=0; i<users.length;i++) { // 相当于excel表格中的总行数 PropertyDescriptor[] descriptors=getAvailablePropertyDescriptors(users[i]); rows[i]=s.createRow(i); for (int j=0; descriptors!=null&&j<descriptors.length;j++) { java.lang.reflect.Method readMethod = descriptors[j] .getReadMethod(); cells[i][j]=rows[i].createCell(j); Object value=readMethod.invoke(users[i], null); cells[i][j].setCellValue(value.toString()); } } wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |