当前位置:编程学习 > JAVA >>

很有难度,不要乱来哦。请专家认真回答,其他的请跟着学习。

jfreechart

对于报表的自动生成想用java 做一个通用的方法,个人能生成各种表,但是通用的方法还在思量,想请教专家更好的方法或者思路。
要求如下:
java方法中我只要给定要生成表表类型,和该报表要的值就能自动生成相应报表。以便满足各种报表生成需求。
表类型:饼状,直方,直线,二维,三维等等。
一次生成表的个数:可能达到4000张。
就是通用的方法,不想后期有需求再整对不同的表写不同的方法。
例如:getTable(String tableType,Object[] obj){
           各种表格的生成代码,基本上就是一个万容的东西
}


谢谢:回答 java 表格 大神 能力 --------------------编程问答-------------------- 来学习 。看看 --------------------编程问答-------------------- 来学习,坐等高手 --------------------编程问答--------------------
引用 1 楼 rui888 的回复:
来学习 。看看


搬个板凳 咱俩一起看 --------------------编程问答-------------------- 坐等专家教导... --------------------编程问答-------------------- 跟着学习1。 --------------------编程问答--------------------   想法是好的,,如果真的那么简单,,人家做报表软件的都不用吃饭了。。。jqplot这个还不错。。 --------------------编程问答--------------------
引用 6 楼 wenjie4892543 的回复:
  想法是好的,,如果真的那么简单,,人家做报表软件的都不用吃饭了。。。jqplot这个还不错。。

超大型连锁超市项目需要用到啊。 --------------------编程问答-------------------- 不懂你想要什么!你是要设计方法还是干嘛?
你方法都给出来了,你自己写完不就好了。 --------------------编程问答--------------------
引用 8 楼 huxiweng 的回复:
不懂你想要什么!你是要设计方法还是干嘛?
你方法都给出来了,你自己写完不就好了。

花擦,只是有这个准备,求思路啊。那么多表,还要通用,同时以后再有添加表的要求也要满足啊。难,难,难。 --------------------编程问答-------------------- 有现成的,找找,公司现在用的润乾报表,收费的,
--------------------编程问答--------------------
引用 10 楼 udbwcso 的回复:
有现成的,找找,公司现在用的润乾报表,收费的,

项目要求,我还花钱去买别人的东西啊? --------------------编程问答-------------------- 虽然,项目完成要几年时间。不过就报表功能也没给好久时间。最近开始查资料,也着手开始做了。不过总觉得自己的思路不是很科学(就是真的为每个类型做一个样例)。希望大家给意见。 --------------------编程问答-------------------- 就每种都写一个,写着的时候偶尔就有新思路了,只想不做没意义 --------------------编程问答--------------------
引用 13 楼 u012882108 的回复:
就每种都写一个,写着的时候偶尔就有新思路了,只想不做没意义

我想你是没有看完整我的提问吧。 --------------------编程问答-------------------- 如果数据库直接使用jdbc,建议定义一个标准的返回Result视图,这种事情约定由于配置更适合:
假定你有五种图形,定于五种视图字段规则:
比如规则1是饼图的:
select 字段1 as value, 字段2 as title from 业务表
对饼图写一个通用读取结果集的程序,将数据生成图形

如果使用Hibernate类似的实体映射,自定义一套注解在,并在field上标记,查询出结果后,反射成一个标准数据的集合,在对图形写一个标准数据转换图形的程序。

这么做你不必每次都去生成一个图表去写大段重复代码,但是需要更多的配置,降低程序出错的几率 --------------------编程问答-------------------- 万容不可能的,jfreechart是要根据Dataset来生成图表的,不同的图表Dataset的格式要求都是不同的。如果你方法只传一个Object[]进来那么这个Object[]里面的数据必须要很清晰的描述出我符合哪种图表的Dataset。这个恐怕没法描述的清楚,因为每种Dataset所需的数据类型以及参数都是不一的。 --------------------编程问答-------------------- 你让不让做报表的人吃饭了? --------------------编程问答-------------------- 通用是不可能了。之前写过一次,有一个类型的报表数据集和其他类型差异很大。 --------------------编程问答--------------------  在说一句,,如果你的报表都是一个样式的话,ex:圆形、折线图等等,,那么只是封装了一下而已,,封装一个圆形的js的jfreechar,,每次都调用这个js函数就可以了。。如果你的圆形不是一个样式,而是有的地方有特殊要求,那么就不可能。。。。。。。考虑清楚点。。。。而且就算你封装的估计也就是你这个项目可以用吧,,别的也不一定合适,,所以你想好点,那么就要封装的广一点,,,,ex:有些做报表的,也是封装之后,你往里面传参数而已。。只是里面多封装了一层吧。。 --------------------编程问答-------------------- 用策略模式
public interface IReport {
void genReport(Map map);
}

public class ReportImpl1 implements IReport{

@Override
public void genReport(Map map) {
// TODO Auto-generated method stub

}

}


public class ReportImpl2  implements IReport{

@Override
public void genReport(Map map) {
// TODO Auto-generated method stub

}
}


public class ReportContext {
IReport report;

public ReportContext(IReport report) {
this.report = report;
}

void genReport(Map map){
report.genReport(map);
}

enum Type{
R1,R2
}
}


void getTable(ReportContext.Type type,Map map){
switch (type) {
case R1:
IReport r1= new ReportImpl1();
new ReportContext(r1).genReport(map);
break;
case R2:
IReport r2= new ReportImpl2();
new ReportContext(r2).genReport(map);
break;
default:
break;
}
}
--------------------编程问答-------------------- 报表类型,我用的枚举,其实把它和getTable方法放在一个类里比较科学,假设叫ReprotRoute。这样好扩展。你要加一个报表的话,只要实现IReport,然后维ReprotRoute这个类的枚举类型和switch的路由关系 --------------------编程问答-------------------- 我们曾经搞过一个模板,不太成功。。。
提供给图表的数据,至少要包含几个值用来填充图表。
直接把表转成图表,你就把规定表至少有哪些字段,还得规定这些字段必顺是什么类型,说白了 就是表得有格式。 --------------------编程问答--------------------
引用 15 楼 etfired 的回复:
如果数据库直接使用jdbc,建议定义一个标准的返回Result视图,这种事情约定由于配置更适合:
假定你有五种图形,定于五种视图字段规则:
比如规则1是饼图的:
select 字段1 as value, 字段2 as title from 业务表
对饼图写一个通用读取结果集的程序,将数据生成图形

如果使用Hibernate类似的实体映射,自定义一套注解在,并在field上标记,查询出结果后,反射成一个标准数据的集合,在对图形写一个标准数据转换图形的程序。

这么做你不必每次都去生成一个图表去写大段重复代码,但是需要更多的配置,降低程序出错的几率


谢谢回答。客户摒弃了hibernate struts  只能使用springmvc 数据库用mybatis。不过你得思路有点意思。 --------------------编程问答--------------------
引用 16 楼 suciver 的回复:
万容不可能的,jfreechart是要根据Dataset来生成图表的,不同的图表Dataset的格式要求都是不同的。如果你方法只传一个Object[]进来那么这个Object[]里面的数据必须要很清晰的描述出我符合哪种图表的Dataset。这个恐怕没法描述的清楚,因为每种Dataset所需的数据类型以及参数都是不一的。

谢谢回答,这个是客户的要求啊。只有尝试完成撒。 --------------------编程问答--------------------
引用 17 楼 shanxiuwei 的回复:
你让不让做报表的人吃饭了?

 客户要求如斯。拿人家那么多预算总得给人家做一好用的东西。以前做的报表开发都不怎么用得上。现在这个动不动就是几千个报表啊。 --------------------编程问答-------------------- 如果需要用通用的  那你就定义自己的标准啊  接过来的数据都封装成自己的标准呗
如果表的结构都一样还好  如果不一样 你知道那个字段是什么意思? a,b,c,d列也不知道是干什么用的

如果有统一的标准的话就好做了   比如标题字段开头都按title_这样的前缀来等等 就好做了 --------------------编程问答-------------------- 围观万能报表~ --------------------编程问答--------------------
引用 27 楼 casso003 的回复:
围观万能报表~


哎,哥们,肩膀借我踩踩,围观的人太多,我都看不见了。 --------------------编程问答-------------------- 随便用过几天这玩意 没深入! --------------------编程问答--------------------
引用 29 楼 djy18178 的回复:
随便用过几天这玩意 没深入!

大型公司的超市,这个报表动不动就是几千份。而且还要好用。呵呵。 --------------------编程问答--------------------
引用 30 楼 weiranaixi 的回复:
Quote: 引用 29 楼 djy18178 的回复:

随便用过几天这玩意 没深入!

大型公司的超市,这个报表动不动就是几千份。而且还要好用。呵呵。

那得好好啃了 查查文档吧 这个东西用的人好像少了 --------------------编程问答--------------------
引用 26 楼 wangshiyang 的回复:
如果需要用通用的  那你就定义自己的标准啊  接过来的数据都封装成自己的标准呗
如果表的结构都一样还好  如果不一样 你知道那个字段是什么意思? a,b,c,d列也不知道是干什么用的

如果有统一的标准的话就好做了   比如标题字段开头都按title_这样的前缀来等等 就好做了

那么简单的话,也不用问大家了撒。人家也不会给那么大项目给我们,同时就在报表这块要求就不会那么高,技术要新,快捷方面等等。那我们这个东西用新技术来实验,靠谱全球推广。不过苦得我啊。 --------------------编程问答-------------------- mark下,回头瞻望大神 --------------------编程问答-------------------- 来学习的!!!!!!!!!!!! --------------------编程问答-------------------- 一次生成表的个数:可能达到4000张,看得过来吗? --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 35 楼 jdgdf566 的回复:
一次生成表的个数:可能达到4000张,看得过来吗?

全球连锁的供货商,你认为呢? --------------------编程问答-------------------- PHP有报表的封装。 --------------------编程问答-------------------- 用javaFX!
COBOL语言也行。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 39 楼 jdgdf566 的回复:
用javaFX!
COBOL语言也行。

你是在这秀 你知道的东西多吗? --------------------编程问答--------------------
引用 41 楼 weiranaixi 的回复:
Quote: 引用 39 楼 jdgdf566 的回复:

用javaFX!
COBOL语言也行。

你是在这秀 你知道的东西多吗?

一次生成表的个数:可能达到4000张。那也是存档。否则,至少不会是一次生成,而是多次生成。银行也是有个系统,但是手工的纸张账单与以前一样照样做。
javaFX不对吗?报表当然是矢量图合适,有问题吗?
你的问题,无非就是要么找个现成的包,要是没有那就只能自己做。确实很多语言有这种第三方封装,我捣鼓过,效果很好。要是自己做的话,不是几句话就能,别人给你完整的代码?恐怕还是离不开自己要学一下javaFX,Swing的话恐怕实现你的需求不怎么合适,虽然非要用它也能出结果。
再一个就是你没有说,也可能是还没定下来,要用web还是application。别人好给你更具体的建议。
像报表这种需求,有些语言真的很有针对性。会计行业真的有虽然外界—接触互联网的人—可能会觉得陌生甚至有点过时,其实很适合会计行业包括报表功能的语言。
最后,对于你这个项目需求,希望能找到个第三方包,诺大一个java。 --------------------编程问答--------------------
引用 42 楼 jdgdf566 的回复:
Quote: 引用 41 楼 weiranaixi 的回复:

Quote: 引用 39 楼 jdgdf566 的回复:

用javaFX!
COBOL语言也行。

你是在这秀 你知道的东西多吗?

一次生成表的个数:可能达到4000张。那也是存档。否则,至少不会是一次生成,而是多次生成。银行也是有个系统,但是手工的纸张账单与以前一样照样做。
javaFX不对吗?报表当然是矢量图合适,有问题吗?
你的问题,无非就是要么找个现成的包,要是没有那就只能自己做。确实很多语言有这种第三方封装,我捣鼓过,效果很好。要是自己做的话,不是几句话就能,别人给你完整的代码?恐怕还是离不开自己要学一下javaFX,Swing的话恐怕实现你的需求不怎么合适,虽然非要用它也能出结果。
再一个就是你没有说,也可能是还没定下来,要用web还是application。别人好给你更具体的建议。
像报表这种需求,有些语言真的很有针对性。会计行业真的有虽然外界—接触互联网的人—可能会觉得陌生甚至有点过时,其实很适合会计行业包括报表功能的语言。
最后,对于你这个项目需求,希望能找到个第三方包,诺大一个java。

谢谢你的回答,亲!首先:肯定是自己做,这不在求思路吗?而且已经开始着手了。二:不会javafx。三:你还是先看完我的要求再说。 --------------------编程问答-------------------- 相同数据结构的为一种类型 , 把图形与数据结构 . 图形绘制 和 数据结构分开抽象. 再做一个上下文对象保存对报表的设置 .  用Bridge 模式   --------------------编程问答--------------------
引用 44 楼 okafor2011 的回复:
相同数据结构的为一种类型 , 把图形与数据结构 . 图形绘制 和 数据结构分开抽象. 再做一个上下文对象保存对报表的设置 .  用Bridge 模式  

想法很有感觉。 --------------------编程问答-------------------- 随便说说:需要有三个参数吧,一是图表类型,二是数据内容,三是数据内容中每一列的类型。
读出数据,按列的类型去判断该如何显示,最后按图表的类型去显示。
只要不是复杂的报表,应该可以实现吧。
如果是复杂的报表,第三个参数就要复杂了,而且还有可能要增加更多的参数来设定报表内容了。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,