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

java绘制excel图表(jxcell)

2015-02-28 16:14 148 查看
java语言利用jxcell.jar 绘制excel图表( 柱状图)

-## 标题 ##-

因为需求需要利用java绘制图表找了很多资料最后找到了jxcell可以做这方面的东西 jxcell还可以直接调用excel的公式等。非常不错下面给下载连接以及相关出处。代码放到java环境右键运行就可以。

下载链接:http://download.csdn.net/detail/liujinxin33/8462879

相关代码:

import com.jxcell.*;

import java.awt.*;

public class ChartFormatTest
{
public static void main(String args[])
{

View m_view = new View();

RangeRef newRange = null;

try {
m_view.getLock();
//标题 setTextAsValue(行,列,值);
m_view.setTextAsValue(1,2,"Jan");
m_view.setTextAsValue(1,3,"Feb");
m_view.setTextAsValue(1,4,"Mar");
m_view.setTextAsValue(1,5,"Apr");
//分项
m_view.setTextAsValue(2,1,"香蕉");
m_view.setTextAsValue(3,1,"大鸭梨");
m_view.setTextAsValue(4,1,"芒果");
m_view.setTextAsValue(5,1,"水果1");
m_view.setTextAsValue(6,1,"水果2");
m_view.setTextAsValue(7,1,"共计");
//
m_view.setTextAsValue(1,6,"time");
m_view.setNumber(2,6,1);
m_view.setNumber(3,6,2);
m_view.setNumber(4,6,3);
m_view.setNumber(5,6,4);
m_view.setNumber(6,6,5);
m_view.setNumber(7,6,6);

//数据区域随机赋值
for(int col = 2; col <= 5; col++)
for(int row = 2; row <= 7; row++)
m_view.setFormula(row, col, "rand()");//rand()为excle随机函数
//设置公式
m_view.setFormula(7, 2, "SUM(C3:C7)");
//选中单元格区域
m_view.setSelection("C8:F8");
//编辑复制 向右复制
m_view.editCopyRight();

//绘图区坐标addChart(左上列x,左上行y,右下列x,右下行y)
ChartShape chart = m_view.addChart(0, 9.1, 7, 20.4);
//图标形式
chart.setChartType(ChartShape.TypeLine);
/*
TypeBar:横向柱状图
TypePie:饼状图
TypeLine:线状图
TypeArea:面积图
TypeDoughnut:圈图
TypeScatter:线点图
TypeBubble:没怎么看懂,就是一个灰图,不过查阅资料,貌似是泡状图
*/

//设置连接区域
chart.setLinkRange("Sheet1!$C$2", false);

//添加一个系列
chart.addSeries();
//系列名字
chart.setSeriesName(0, "Sheet1!$C$2");
//系列值
chart.setSeriesYValueFormula(0, "Sheet1!$C$3:$C$7");
//系列分类
chart.setCategoryFormula("Sheet1!$B$3:$B$7");

chart.addSeries();
chart.setSeriesName(1, "Sheet1!$D$2");
chart.setSeriesYValueFormula(1, "Sheet1!$D$3:$D$7");

chart.addSeries();
chart.setSeriesName(2, "Sheet1!$E$2");
chart.setSeriesYValueFormula(2, "Sheet1!$E$3:$E$7");

chart.addSeries();
chart.setSeriesName(3, "Sheet1!$F$2");
chart.setSeriesYValueFormula(3, "Sheet1!$F$3:$F$7");

//            chart.getChart().validateData();

//设置横坐标标题
chart.setAxisTitle(ChartShape.XAxis, 0, "横坐标标题");
//设置纵坐标标题
chart.setAxisTitle(ChartShape.YAxis, 0, "纵坐标标题");

//设置图表样式
ChartFormat cf = chart.getChartFormat();
//设置背景色
cf.setPattern((short)1);
cf.setPatternFG(Color.LIGHT_GRAY.getRGB());
chart.setChartFormat(cf);
//设置绘图区颜色
cf = chart.getPlotFormat();
cf.setPattern((short)1);
cf.setPatternFG(new Color(204, 255, 255).getRGB());
chart.setPlotFormat(cf);

//设置横坐标文字大小
cf = chart.getAxisFormat(ChartShape.XAxis, 0);
cf.setFontSizeInPoints(8.5);
chart.setAxisFormat(ChartShape.XAxis, 0, cf);

//设置纵坐标文字大小
cf = chart.getAxisFormat(ChartShape.YAxis, 0);
cf.setFontSizeInPoints(8.5);
chart.setAxisFormat(ChartShape.YAxis, 0, cf);

//设置图标内标线样式
cf = chart.getSeriesFormat(0);//地0个
cf.setLineStyle((short)1);
cf.setLineWeight(3*20);
cf.setLineColor((new Color(0, 0, 128)).getRGB());
cf.setMarkerAuto(false);
cf.setMarkerStyle((short)0);
chart.setSeriesFormat(0, cf);

cf = chart.getSeriesFormat(1);
cf.setLineStyle((short)1);
cf.setLineWeight(3*20);
cf.setLineColor((new Color(255, 0, 255)).getRGB());
cf.setMarkerAuto(false);
cf.setMarkerStyle((short)0);
chart.setSeriesFormat(1, cf);

cf = chart.getSeriesFormat(2);
cf.setLineStyle((short)1);
cf.setLineWeight(3*20);
cf.setLineColor((new Color(255, 255, 0)).getRGB());
cf.setMarkerAuto(false);
cf.setMarkerStyle((short)0);
chart.setSeriesFormat(2, cf);

cf = chart.getSeriesFormat(3);
cf.setLineStyle((short)1);
cf.setLineWeight(3*20);
cf.setLineColor((new Color(0, 255, 255)).getRGB());
cf.setMarkerAuto(false);
cf.setMarkerStyle((short)0);
chart.setSeriesFormat(3, cf);

//主格网
cf = chart.getMajorGridFormat(ChartShape.YAxis, 0);
cf.setLineStyle((short)2);
cf.setLineColor((new Color(255, 0, 0)).getRGB());
cf.setLineAuto();
chart.setMajorGridFormat(ChartShape.YAxis, 0, cf);

//图利位置
chart.setLegendPosition(ChartFormat.LegendPlacementRight);

//图利样式
cf = chart.getLegendFormat();
cf.setFontBold(true);
cf.setFontSizeInPoints(8);
chart.setLegendFormat(cf);

//excel写出路径
m_view.write("c:\\out.xls");
System.out.println("end");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally
{
m_view.releaseLock();
}
}
}


运行截图



本人也是刚刚接触有的地方理解的还不到位,希望各路大婶给与指导,另外附上资料出处

/article/9129453.html

同时感谢 opzoonzhuzhengke 的分享与整理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: