一個朋友的項目裡用到了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太丑了。但是這個方法是目前能想到最合適的方法了。