页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1 概述

_GoBack
_GoBack

1

...

.1 背景:

           在smartbi中,透视分析导出的EXCEL行区内容是单元格合并的,如果合并的单元格跨行比较多,可能导致现场通过excel一行行核对数据有困难,固会有导出清单excel的需求。

注意:本示例来源于实际项目,原始版本是V6.2,可作为参考性质,也许是不能运行的。

1.2 需求:


          (1)使透视分析导出excel增加类型:清单表。可以以清单列表的方式导出。如下图。
          (2)使导出的excel列宽自适应。不导出参数信息。
          (3)修改透视分析默认导出设置:使导出内容默认为清单表,数值导出类型默认为显示值。
----------

2 实现思路

分析需求:
根据需求描述,产品导出csv与该需求的相似度最高。可是csv要在excel中手动设置才能列宽自适应,也没有表头表尾。客户坚持需要定制。
产品相关了解:
透视分析导出servlet路径:

关于过滤器的配置请见扩展插件开发基础(内含目录及配置文件介绍)中的插件生命文件extension.xm的说明。

1.3 效果展示:

Image AddedImage Added

2 简要分析

2.1 分析需求:

          根据需求描述,产品导出csv与该需求的相似度最高。可是csv要在excel中手动设置才能列宽自适应,也没有表头表尾。

   

2.2 产品源码相关了解:

          透视分析导出的servlet:/Insight/src/java/smartbi/insight/export/InsightExportServlet.java
          导出逻辑:一个完整的导出过程,会进入这个servlet两次,第一次写好文件放到session中,第二次从session中取文件,写到输出流中。

2.3 简要思路:

          1、第一次进入InsightExportServlet,我们先执行InsightExportServlet的导出CSV,然后获取执行导出后的CSV内容。
2、将文件流内容转为excel,通过           2、将CSV内容转为excel,通过 poi可以使excel列宽自适应。
          3、将excel放到session中,继续执行第二次的InsightExportServlet。

3

...

实现思路

3.1 实现思路分析:

代码说明:

...

          1、根据以上分析,我们需要编写filter,执行了"导出CSV"后,截取CSV内容,并转为excel。
          2、可是执行"导出CSV"后,文件写在了response的输出流里了。我们是没办法直接通过response获取到输出流的(response输出流对象没有Buffer功能,且只能读取一次)。

...

          3、为了解决这个问题,我们可以新建response的包装器(继承HttpServletResponseWrapper类)。保存输出流的buffer,这样我们就可以读取了。即示例的CustomizedResponseWrapper.java、
          4、以上123步骤的分析,已经解决了本问题的实现难题了,剩下的就是一些细节的东西,如:excel单元格式设置,表头表尾设置,前端代码修改等等。

3.2 代码说明:

          1、response的包装器:/YdthLife/src/java/com/ydrs/filter/response/CustomizedResponseWrapper.java
          2、构造拦截器:/YdthLife/src/java/com/ydrs/filter/InsightExportFilter.java
                                   /YdthLife/src/web/META-INF/extension.xml

...

          4、前端展现:

增加"清单表"选项:/YdthLife/src/web/vision/template/freequery/query/ExportTxtDialog.template
/YdthLife/src/web/vision/js/smartbi/insight/Insight.js.patch
导出默认"显示值""清单表":/YdthLife/src/web/vision/js/freequery/query/ExportExcelDialog.js.patch

4 相关资源(EPPR-10596)

透视分析导出清单EXCEL.rar