JAVA如何将JFreeChart图片导出到Excel? 5

我用JFreeChart生成了个图片,存在模型中的1个属性里,然后显示到页面!但我需要将这个图片导出,请问高手怎么导出来?最好能有例子和注释,谢谢!我用的是JBOSS不是... 我用JFreeChart生成了个图片,存在模型中的1个属性里,然后显示到页面!
但我需要将这个图片导出,请问高手怎么导出来?
最好能有例子和注释,谢谢!

我用的是JBOSS不是Tomcat
展开
 我来答
tuoxinquyu
2010-09-19 · 超过11用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:29.4万
展开全部
我才做了这个,你看看此手行不稿慧行,我是把生成的图片放到一个临时文件中,然后再用poi将这个图片导入到excel中,代码如键扒答下:
package jfreechart;

import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class testBarChart2 extends ActionSupport{
JFreeChart chart;
HttpSession session;
HttpServletRequest request;

@Override
public String execute() throws Exception {
request=ServletActionContext.getRequest();
session=request.getSession();

DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(1000,"广州","猪肉");
dataset.addValue(220,"广州","牛肉");
dataset.addValue(530,"广州","鸡肉");
dataset.addValue(340,"广州","鱼肉");

chart=ChartFactory.createBarChart3D("肉类销量统计图","肉类","销量",dataset,PlotOrientation.VERTICAL,false,false,false);

Font font=new Font("宋体",Font.BOLD,20);
CategoryPlot plot=(CategoryPlot)chart.getPlot();
TextTitle textTitle=chart.getTitle();
textTitle.setFont(font);//设置标题的字体
CategoryAxis domainAxis=plot.getDomainAxis();//柱状图的x轴
domainAxis.setTickLabelFont(font);//设置x轴坐标上的字体
domainAxis.setLabelFont(font);//设置x轴上的标题的字体
ValueAxis valueAxis=plot.getRangeAxis();//柱状图的y轴
valueAxis.setTickLabelFont(font);//设置y轴坐标上的字体
valueAxis.setLabelFont(font);//设置y轴坐标上的标题的字体

/**添加上下面的语句会在临时文件夹下面生成图片,去掉就不会有了*/
String filename="E:/tomcat/basicsms/apache-tomcat-6.0.18/temp/"+ServletUtilities.saveChartAsPNG(chart,500,300,null,session);

FileOutputStream fileOut = null;
BufferedImage bufferImg = null;

try {

// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

bufferImg = ImageIO.read(new File(filename));
ImageIO.write(bufferImg, "png", byteArrayOut);

// 创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,
(short) 1, 1, (short) 10, 20);

anchor.setAnchorType(2);
// 插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)).resize(0.8);

fileOut = new FileOutputStream("d:/workbook.xls");
// 写入excel文件
wb.write(fileOut);
fileOut.close();

} catch (IOException io) {
io.printStackTrace();
System.out.println("io erorr : " + io.getMessage());
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

return SUCCESS;
}

public JFreeChart getChart() {
return chart;
}
}
当执行action的时候,图片会在页面显示,也会导入到workbook.xls中,这个例子其实是我在网上找的,然后拼写成的,希望对你有帮助,我目前也在研究当中,也可以共同讨论
其实你要也可以试试jacob,它可以直接在excel中生成图片,你可以自己研究研究
caoyongzhao_1
2010-09-02 · TA获得超过368个赞
知道答主
回答量:384
采纳率:0%
帮助的人:157万
展开全部
图形默认是加载到你的tocmat缓存里带芦肆面的
C:\Program Files\Apache Software Foundation\Tomcat 6.0\temp 这个文件蠢轿里面
导出的时候可以直接读取哗清
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tmtongming
2010-09-09
知道答主
回答量:3
采纳率:0%
帮助的人:2.9万
展开全部
我是在导出的时候生成一悄友个JFreeChart的图片,到一个目录下,然后用POI将这个图片导启斗槐入到Excel中,然后再把这个图片删除,我理想的是不生成临时的图片文件,但是目前我还没找到更好的方法,希望对你有帮销大助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友91f49c4
2010-09-03 · TA获得超过1176个赞
知道小有建树答主
回答量:1683
采纳率:0%
帮助的人:669万
展开全部
用流写出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式