您的位置:首页 > 编程语言 > Java开发

JAVA生成EXCEL图表

2015-08-07 17:48 483 查看
跟据客户的要求,需要开发一套包括图形的报表,还需要导出WORD

图表需要这样:

//获取图片字节流
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图片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: