将Jfreechart图像导出为ex​​cel

时间:2012-08-06 19:12:55

标签: jfreechart export-to-excel

我正在寻找将jfreechart(在JSP + struts中可用)导出到excel表的选项。

我已经尝试'设置响应标头以输入msexcel'以将整个JSP导出到excel,但它不会渲染jfreechart图像。

还有其他选项可以将jfreechart导出为ex​​cel吗?

2 个答案:

答案 0 :(得分:0)

我使用jfreechart生成了图表,并使用POI将其导出为ex​​cel。

ServletOutputStream stream=resp.getOutputStream();
resp.setContentType("application/vnd.ms-excel");
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
int imageWidth= 700;
int imageHeigth = 400;

JFreeChart chart=ChartFactory.createBarChart("Test Chart", "", "", dataset, PlotOrientation.VERTICAL, true, true, false);

ChartUtilities.writeChartAsJPEG(outStream, chart, imageWidth, imageHeigth);

byte[] imageInByte = outStream.toByteArray();
outStream.close();

int pictureIdx =wb.addPicture(imageInByte,Workbook.PICTURE_TYPE_JPEG);

Drawing drawing = sheet.createDrawingPatriarch();

CreationHelper helper = wb.getCreationHelper();

//add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(3);
anchor.setRow1(4);
Picture pict = drawing.createPicture(anchor, pictureIdx);

//auto-size picture relative to its top-left corner
pict.resize();
wb.write(outStream);
stream.write(outStream.toByteArray());

答案 1 :(得分:0)

Apache POI对您没有帮助,因为它有限制(请阅读Apache网站上的手册)。它只能绘制线条和零散图表,看起来很差。 图书馆适合使用Excel,但不适合构建图形。我的建议是使用预先准备的模板,调整它,并将必要的数据从Java传输到模板。 另一种使用渲染JPEG的方式,但它是可怕的事情而且不这样做。