「java条状报表」java生成数据报表
本篇文章给大家谈谈java条状报表,以及java生成数据报表对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java做报表
把数据库中需要的数据处理后做成可视化图表,根据不同需求可以做成不同形式的图表,节省时间,效果比较好,报表软件国外的话水晶报表,SAP公司的商业报表工具,作为SAP“集团”下的报表组件模块。10年事前盛行一时,后被SAP收购。但水晶报表(Crystal Report)在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合等或写存储过程),多库一般难以支持。
国内的话FineReport,目前国内报表软件领域发展最成熟也是市场份额最高的。IDC的报告里,17年甚至超过SAP,IBM,在这个细分领域,也是Gartner的BI选型市场指南里唯一推荐的报表工具。零代码开发,类似excel的设计方式,上手简单。尤其数据字典、实际值和显示值等的设计更是切入快速开发的要害,这些放在别的语言和体系下往往要大量代码才能实现且频繁需要的功能放在FineReport里却只是几个操作的事情。移动端报表+可视化大屏。
java如何读取excel中报表(柱状图)的信息
public class Report {
/**作用:报表样式的枚举,该类的getvalue方法返回对应值。br
* Columns_2DVer:2D柱状垂直报表。br
* Columns_3DVer:3D柱状垂直报表。br
* Columns_2DHor:2D柱状水平报表。br
* Columns_3DHor:3D柱状水平报表。
* */
public enum ReportType{
Columns_2DVer("Z2DV"),
Columns_3DVer("Z3DV"),
Columns_2DHor("Z2DH"),
Columns_3DHor("Z3DH"),
LineReport_2D("Line2D"),
LineReport_3D("Line3D"),
PieReport_2D("Pie2D"),
PieReport_3D("Pie3D");
private ReportType(String a){
this.str=a;
}
private String str;
public String getvalue(){
return this.str;
}
}
/**作用:作为创建报表时的参数。br
* 成员1:报表的标题。br
* 成员2:报表的横坐标标题。br
* 成员3:报表的纵坐标标题。br
* 成员4:JSP页面的request对象。br
* 成员5:报表所保存的文件名。br
* 成员6:报表的长度。br
* 成员7:报表的宽度。br
* 成员8:报表的背景颜色,默认为白色。br
* 成员9:报表网格中竖线的颜色,默认为黑色。br
* 成员10:报表网格中横线的颜色,默认为黑色。br
* 成员11:报表横轴内容的数组。br
* 成员12:报表纵轴内容的list数组。br
* 成员13:提示信息。如果写入多个提示信息,报表就变成多柱状。br
* 成员14:报表的模式。详见reportType枚举类br
* 成员15:饼状图专用的数值数组。数组的和必须等于1.br
* 注意1:要在JSP页面引入该类型才能使用,横纵轴数组的长度必须一致。br
* 注意2:如果在提示信息数组中写入了多个提示信息,那么报表纵轴内容的
* list中就必须存放入和它数量一致的int数组。否则会出错。
* */
public class ReportClass{
public String ReportTitle;
public String xTitle;
public String yTitle;
public HttpServletRequest request;
public String filename;
public int width;
public int height;
public Color BackgroundColor=Color.WHITE;
public Color ylineColor=Color.BLACK;
public Color xlineColor=Color.BLACK;
public String[] xValues;
public ArrayListint[] yValue=new ArrayListint[]();
public String[] helpstr;
public String reportType;
public double[] PieValue;
}
/**作用:创建一个指定类型和数据的图表。br
* 参数1:ReportClass类型,各成员具体作用参见ReportClass说明br
* 返回值:String类型,在JSP页面可以直接out.println显示图形。br
* 注意1:ReportClass类型中,必须设置的成员主要有:br
* 1、ReportTitle 2、request 3、filename 4、width 5、height 6、reportTypebr
* 注意2:如果要生成饼状图,还需要设置:br
* 1、xValues 2、PieValue 这两个数组的长度必须一致br
* 注意3:如果要生成柱状图或折线图,还需要设置:br
* 1、xValues 2、yValue 3、helpstrbr
* yvalue数组总和必须等于1.即100%.br
* 如果要生成多柱状或折线图,则需要设置helpstr长度。br
* yvalue列表的长度必须和helpstr数组长度一致。br
* yvalue中的成员数组的长度必须和xvalue数组长度一致。
* */
public String CreateReport(ReportClass rc){
String s="sf";
String str="";
JFreeChart jc=null;
Font titlefont=new Font("宋体",Font.BOLD,20);
Font tickfont=new Font("宋体",0,15);
Font labelfont=new Font("宋体",Font.BOLD,15);
DefaultCategoryDataset ds=null;
DefaultPieDataset pds=null;
if (rc.ReportTitle!=null){
if (rc.reportType.indexOf("Pie")!=-1){//饼状图
pds=new DefaultPieDataset();
double[] ob=rc.PieValue;
for (int i=0;iob.length;i++){
pds.setValue(rc.xValues[i], ob[i]);
}
if (rc.ReportTitle!=null){
if (rc.reportType.equals("Pie2D")){
jc=ChartFactory.createPieChart(rc.ReportTitle,pds,true, true, false);
}
else if (rc.reportType.equals("Pie3D")){
jc=ChartFactory.createPieChart3D(rc.ReportTitle,pds,true, true, false);
}
jc.getTitle().setFont(titlefont);
jc.getLegend().setItemFont(labelfont);
jc.setBackgroundPaint(rc.BackgroundColor);//总背景色
jc.setBorderPaint(rc.BackgroundColor);
PiePlot plot=(PiePlot)jc.getPlot();
plot.setBackgroundPaint(rc.BackgroundColor);
plot.setLabelFont(new Font("宋体",0,15));
}
}
else { //柱状或折线图
ds=new DefaultCategoryDataset();
for (int i=0;irc.helpstr.length;i++){
int[] ob=rc.yValue.get(i);
for (int j=0;job.length;j++){
ds.addValue(ob[j], rc.helpstr[i], rc.xValues[j]);
}
}
if (rc.reportType.indexOf("Z2D")!=-1){
PlotOrientation po=null;
if (rc.reportType.indexOf("V")!=-1){
po=PlotOrientation.VERTICAL;
}
else if (rc.reportType.indexOf("H")!=-1){
po=PlotOrientation.HORIZONTAL;
}
jc=ChartFactory.createBarChart(rc.ReportTitle, rc.xTitle, rc.yTitle,
ds, po, true, true, false);
}
else if (rc.reportType.indexOf("Z3D")!=-1){
PlotOrientation po=null;
if (rc.reportType.indexOf("V")!=-1){
po=PlotOrientation.VERTICAL;
}
else if (rc.reportType.indexOf("H")!=-1){
po=PlotOrientation.HORIZONTAL;
}
jc=ChartFactory.createBarChart3D(rc.ReportTitle, rc.xTitle, rc.yTitle,
ds, po, true, true, false);
}
else if (rc.reportType.equals("Line2D")){
PlotOrientation po=PlotOrientation.VERTICAL;
jc=ChartFactory.createLineChart(rc.ReportTitle, rc.xTitle, rc.yTitle,
ds, po, true, true, false);
}
else if (rc.reportType.equals("Line3D")){
PlotOrientation po=PlotOrientation.VERTICAL;
jc=ChartFactory.createLineChart3D(rc.ReportTitle, rc.xTitle, rc.yTitle,
ds, po, true, true, false);
}
jc.getTitle().setFont(titlefont);
jc.getLegend().setItemFont(labelfont);
jc.setBackgroundPaint(rc.BackgroundColor);//总背景色
CategoryPlot cp=jc.getCategoryPlot();
cp.setBackgroundPaint(rc.BackgroundColor);//图形框架背景色
cp.setDomainGridlinePaint(rc.ylineColor);//图形背景网格中竖线的颜色
cp.setDomainGridlinesVisible(true);
cp.setRangeGridlinePaint(rc.xlineColor);//图形背景网格中横线的颜色
cp.getDomainAxis().setTickLabelFont(tickfont);
cp.getDomainAxis().setLabelFont(labelfont);
cp.getRangeAxis().setTickLabelFont(tickfont);
cp.getRangeAxis().setLabelFont(labelfont);
}
try {
File ff=new File(rc.request.getRealPath("/")+"file");
if (!ff.exists()){
ff.mkdir();
}
File file=new File(rc.request.getRealPath("/")+"file/"+rc.filename);
if (!file.exists()){
file.createNewFile();
}
ChartUtilities.saveChartAsJPEG(file, jc, rc.width, rc.height);
str="img src='"+file.getPath()+"'";
return str;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
else {
return null;
}
}
}
以前写的一个报表的集成,可以生成任何形式的报表,要引入JFreeChar.你可以慢慢研究下...
JAVA如何实现导出大数量EXCEL报表 数据大概100W条
好像是你的excel文件问题,你另外新建一个,再写点东西在里面试下随便给你一个我以前用过的importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.*;importjava.sql.*;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjxl.*;publicclassSimUpdate{privateStringfileName;publicSimUpdate(StringfileName){this.fileName=fileName;}staticMaptNames;static{tNames=newHashMap();}//下面是主要代码privatevoidupdateDb(){try{Connectionconn=DbPool.connectDB();if(conn!=null){Statementstmt=conn.createStatement();/**********************************************/jxl.Workbookrwb=null;try{//构建Workbook对象只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStreamis=newFileInputStream(fileName);rwb=Workbook.getWorkbook(is);//Sheet(术语:工作表)就是Excel表格左下角的Sheet ,Sheet ,Sheet 但在程序中//Sheet的下标是从 开始的//获取第一张Sheet表Sheetrs=rwb.getSheet( );//获取Sheet表中所包含的总列数intrsColumns=rs.getColumns();//获取Sheet表中所包含的总行数intrsRows=rs.getRows();//获取指这下单元格的对象引用StringsimNumber="",termSeqId="";//指定SIM卡号及序列号for(inti= ;i ){System.out.println("成功插入第"+i+"条数据");}}}//以下代码为写入新的EXCEL,这里不使用,所以注释/*//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile("D://Book .xls"),rwb);//读取第一张工作表jxl.write.WritableSheetws=wwb.getSheet( );//获取第一个单元格对象jxl.write.WritableCellwc=ws.getWritableCell( , );//决断单元格的类型,做出相应的转化if(wc.getType()==CellType.LABEL){Labell=(Label)wc;l.setString("Thevaluehasbeenmodified.");}//写入Excel对象wwb.write();wwb.close();*/}catch(Exceptione){e.printStackTrace();}finally{//操作完成时,关闭对象,翻译占用的内存空间rwb.close();}/*********************************************/}}catch(Exceptione){e.printStackTrace();}}}
最理想的JAVA报表工具有哪些?
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports
支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。
Pentaho是一个以工作
流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它偏向于与业务流程相结合的BI解决方案,侧重于大
中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和 BI 流程。
功能和特点
◆ 工作流引擎:Shark and JaWE
◆ 数据库:Firebird RDBMS
◆
集成管理和开发环境:Eclipse
◆ 报表工具:Eclipse BIRT
◆ ETL工具:Enhydra/Kettle
◆ OLAP
Server:Mondrian
◆ OLAP展示:JPivot
◆ 数据挖掘组件:Weka
◆
应用服务器和Portal服务器:JBoss
◆ 单点登陆服务及LDap认证:JOSSO
◆ 自定义脚本支持:Mozilla Rhino
Javascript脚本处理器
OpenReports
是一个基于web的报表解决方案,可为用户提供通过浏览器查看动态创建的PDF、HTML或XLS格式报表的能力。OpenReports
使用Java开发的,并使用JasperReports作为报表生成引擎。
JFreeReport (现改名为 Pentaho
Reporting)是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel,
HTML和XHTML, PlainText, XML和CSV文件中。
XLS是基于Jakarta POI
API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活,简单!
BIRT是一个Eclipse-based开放源代码报表系统。它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。BIRT同时也提供一个图形报表制作引擎。
个人用过 JFreeReport JasperReports 感觉比较容易上手
java条状报表的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java生成数据报表、java条状报表的信息别忘了在本站进行查找喔。