BI实战案例第4季:Excel还是html?

问题背景:有一次遇到客户提出的一个奇葩要求,需要将17张报表导出后的excel汇总成一张分成17个sheet的汇总excel,因为这17张报表的数据量都不是很大,这个需求也不能因为说会因为数据量太大,会导致excel写不进去的原因给打回去,大家应该知道excel最大生成行好像是2W多行。就因为...显示全部
问题背景:

有一次遇到客户提出的一个奇葩要求,需要将17张报表导出后的excel汇总成一张分成17个sheet的汇总excel,因为这17张报表的数据量都不是很大,这个需求也不能因为说会因为数据量太大,会导致excel写不进去的原因给打回去,大家应该知道excel最大生成行好像是2W多行。就因为这个需求我们项目组召开了紧急会议,因为这17张报表都是提供给银行高层查看的,还必须要做。

项目框架以及解决思路:

cognos是8.3的版本(版本比较老,请见谅!POI是阿帕奇(Apache)提供给Java程序对Microsoft Office格式档案读和写的功能。)
简单介绍一下项目背景,因为这个报表平台是利用iframe嵌套在一个java web应用里面,客户因为美观什么的不允许使用cognos自带的导出按钮,所以cognos报表本身上方的导出工具给屏蔽掉了。后来,利用java调用cognos的SDK方法做的报表导出功能,如果问题到这里就能解决就好了,客户要求使用POI实现将excel汇总,本身以为这件事情会很容易,因为做过java的大神都知道POI有个HSSFWorkbook wb=new HSSFWorkbook (in)这个对象,可以获取excel的整个sheet,而cognos SDK生成的excel都是一个sheet的,所以POI只需要获取到那17个单个excel的sheet,然后将17个sheet写入同一个excel文件就大功告成了,但是这里遇到一个非常严重的问题,cognos sdk生成的excel竟然是html格式的excel,而不是标准的excel。利用poi读取不了(附件里面有html格式的excel),这时候整个人都慌了。因为思路都有了,且跟客户保证了一天半开发完这个功能,开会什么杂事就用了半天,POI写入的功能都已经实现了,但是就卡在这个地方,也不准换另一种读取excel的方法(就是不用POI读取,利用其他形式)。冷静下来后,想了想以前不是有种利用js调用cognos的导出。(POI读取HTML格式的excel会报错!)js调用cognos导出代码:
运行
pdf下载
excel2003下载
excel2007下载
excel单一工作表下载
但是逆天了,用这个代码导出来的excel竟然还是HTML格式的excel。



这就是html的excel,标准的excel用editplus这种软件打开会是乱码形式的!





这个是cognosSDK导出的代码(仅供参考,因为cognos版本不同,用SDK导出的写法也不一样,这里只是提供一个样本)


那么现在问题来了,我该怎么样才能导出标准的excel,而不是html格式的excel?
首先回帖答对问题有奖励(帖子不能是编辑过的状态,发现自己想错了,可以另外再回帖)。回答问题请回答得尽量详细,如果回答过于粗略,将不考虑正确与否!

本期奖品设置:绿色折叠背包(礼品由Cognos商业智能社区提供并负责快递)

收起
参与19

查看其它 12 个回答kent的回答

kentkent软件开发工程师招银网络科技
我来猜一个吧。。。
我之前也碰到类似的情况,我的方法是写了一个excel宏, 用excel宏打开这个html格式的EXCEL文件,然后在另存为excel..
所以我才楼主的方法也是一样,在调用excel打开这个文件,然后另存起来。。。
然后再把各个excle文件的内容合并起来。。。
Bingo?
互联网服务 · 2015-04-16
浏览1612

回答者

kent
kent002
软件开发工程师招银网络科技
擅长领域: 商业智能大数据cognos

kent 最近回答过的问题

回答状态

  • 发布时间:2015-04-16
  • 关注会员:3 人
  • 回答浏览:1612
  • X社区推广