java/word+fusionchart生成图表深入分析

2016-02-19 11:35 110 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

一个朋友的项目里用到了fusionchart,同时需要提供多个报表的word下载功能。
毫无疑问,只是一个很棘手的问题。

fusionchart提供了服务端和客户端生成图片的功能,都是基于client端展示了flash以后做的。
朋友的项目是基于linux的,office本身的那套com机制是没办法通过jacob调用了。
纯java的操作word,POI和docx4j,可以生成word文档,table,插入图片。

一个可行的思路是点击下载报表时,先在一个新页面打开各个flash的图表,再依次调用fusoinchart的功能在服务器端生成图片,
最后js再调用servlet生成doc,同时把上一步生成的各个图片插入到文档内。
这个曲线救国的策略性能非常低下,。

第二个想法是直接在word中插入flash,作为ole到word中的形式,同时跟其他内容混排。这个方式应该性能应该是ok的,由word打开后去实时渲染flash。
但是发现word如果使用OLE doc的方式,不能使用HWPF了,只能自己一点点的拼BIFF文件,这实在不好做,而且还不知道OLE进去了能不能展示。
放弃之。PS:发现WSPH处理ppt的功能里有对ActiveX的简单支持。。。我去。。

第三个想法是拿到生成chart的数据,直接用office的图表功能,可惜的是发现HWPF里没有这功能,HSSF处理excel的功能里才有。

最后一个方法比较简单可行,性能尚可,后台用jfreechart生成图片,然后生成word文档。
坏处是,图表风格跟fusion不一致。jfree太丑了。但是这个方法是目前能想到最合适的方法了。

来源:https://www.tulaoshi.com/n/20160219/1597913.html

延伸阅读
Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情。 例举了 7 个常用的钩子: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onStop() protected void onRestart() protected void onDes...
我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁。我也是写了一个例子。总结了一下。 代码如下: 父类: public class TestStatic {     public static String name="china";     {   &...
1、String类、StringBuilder类、StringBuffer类 String对象是不可变的,重载了运算符+,于是String s="a"+2+"b"+2.2;这条语句就创建了4个String对象对象,把最后创建的对象引用赋给s。 但是String类定义了许多常用的对字符串进行操作的方法:取字符串长度length、判断是否为空串isEmpty、返回字符数组或字节数组toCharArray()、取得指定索引...
深入分析MFC中的CArray类 作者:湖北 董志勇 我们在使用vc进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效的使用CArray类,可以提高程序的效率。 MFC提供了一套模板库,来实现一些比较常见的数据结构如Ar...
在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有...

经验教程

52

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部