JAVA生成EXCEL图表
2015-08-07 17:48
483 查看
跟据客户的要求,需要开发一套包括图形的报表,还需要导出WORD
图表需要这样:
获得excel图片
图表需要这样:
//获取图片字节流 public static String getPic(String fileUrl,String backupUrl) throws Exception { StringBuffer results = new StringBuffer(); File tfdir = new File(backupUrl); if (!tfdir.exists()) tfdir.mkdirs(); InputStream inp = new FileInputStream(fileUrl); HSSFWorkbook workbook = (HSSFWorkbook) WorkbookFactory.create(inp); List<HSSFPictureData> pictures = workbook.getAllPictures(); HSSFSheet sheet = (HSSFSheet) workbook.getSheetAt(0); //所有图片都存在第一页 int i = 0; for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); if (shape instanceof HSSFPicture) { HSSFPicture pic = (HSSFPicture) shape; int pictureIndex = pic.getPictureIndex()-1; //图片名称 int row = anchor.getRow1(); System.out.println(anchor.getCol1()); HSSFCell picCell = sheet.getRow(row).getCell(anchor.getCol1()); String picName = ""; if(picCell != null) { picName = picCell.getStringCellValue(); } logger.info(i + "--->row." + anchor.getRow1() + ":cell." + anchor.getCol1() + ":pictureIndex." + pictureIndex); HSSFPictureData picData = pictures.get(pictureIndex); //备份并返回 图片 if(picName != null && !"".equals(picName)) { String result = BackupPic(picName, picData,backupUrl); results.append(result); results.append(","); } } i++; } return results.toString(); } //备份图片 private static String BackupPic(String picName,PictureData pic,String backupUrl) throws Exception { String result = ""; String pngImgUrl,jpgImgUrl; String ext = pic.suggestFileExtension(); byte[] data = pic.getData(); if (ext.equals("png")) { pngImgUrl = backupUrl + picName + "." + ext; FileOutputStream out = new FileOutputStream( pngImgUrl); out.write(data); out.close(); //转为 jpg jpgImgUrl = backupUrl + picName + ".jpg"; ConvertPngToJpg(pngImgUrl,jpgImgUrl); result = picName + ":" + DatatypeConverter.printBase64Binary(data); } return result; } //压缩图片 把PND图片转JPG private static void ConvertPngToJpg(String pngImgUrl,String jpgImgUrl) { BufferedImage bufferedImage; try { //read image file bufferedImage = ImageIO.read(new File(pngImgUrl)); // create a blank, RGB, same width and height, and a white background BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null); // write to jpeg file ImageIO.write(newBufferedImage, "jpg", new File(jpgImgUrl)); } catch (IOException e) { e.printStackTrace(); } }
获得excel图片
相关文章推荐
- java 学习总结
- java反射机制详解 及 Method.invoke解释 getMethod
- Android:Eclipse 安装Genymotion插件的时候出现 There are no categorized items
- java使用jxl导出数据到xls文件
- eclipse-java build path
- Java编程思想:第5章 初始化与清理
- MyEclipse/Eclipse用法:全局搜索和替换
- java中什么是bridge method(桥接方法)
- [转]Eclipse下打开文件所在的目录
- Spring Batch 简介
- java蛇形矩阵实现方法
- Spring retry基本使用
- java实现近义词维护
- java equals()用法错误解析
- Java经典位运算实例
- Spring整合Quartz
- java学习-------回调函数
- java多线程读取一个文件
- eclipse 在线安装svn
- JavaEE拾遗01--异步上传文件