您的当前位置:首页ExcelExport文档

ExcelExport文档

2020-01-06 来源:飒榕旅游知识分享网


BUG #68::

一:问题描述

所有的查询列表都需要提供导出到EXCEL的功能(导出所有数据,而不是当前页数据,并且,在EXCEL最后加入金额字段的合计值)

二:修改方法

1,增加excel处理servlet

2,使用Apache开源包POI

三:修改文件

1:web.xml -->增加ExportExcelServlet

2:ht.jsp -->增加一个导出按钮和事件

3:ExportExcel.java -->Excel具体实现类

4:ExportExcelServlet.java -->公共Servlet

5:sqlmap-ht.xml -->增加属性remapResults=\"true\复用列表查询SQL语句

四:全局解决见意, 要实现页面列表导出,只要做下面三件事

1:在页面增加导出按钮如下:

\" onClick=\"Button_Excel_Click()\">

导出列表

脚本:

function Button_Excel_Click(){

var qybh = \"<%=((UserProfileVO) ContextUtil.get(\"UserProfile\xtHolder\")).getPositionId()%>\";

var url = \"<%=request.getContextPath()%>/ExportExcelServlet?target=ht.jsp&qybh=\"+qybh ;

document.location= url;

}

2:在公共servlet (ExportExcelServlet.java)中实现数据查询,并生成Excel元数据,如下

//TODO 从这里区分是哪个页面提交过来的请求

if(\"ht.jsp\".equals(target)){

SHEET_NAME =\"工程合同列表\";

//必要参数

Map map = new HashMap();

map.put(\"qybh\

//第一步:跟据查询条件取得所有数据

result = htService.getAll(-1, -1, map);

datas = (List>)result[0];

headers = new String[]{ \"企业名称\项目名称\合同名称\合同编号\甲方\乙方\金额\签订时间\审批状态\" };

fieldNames = new String[]{ \"qymc\j\

} else if (\"XXX.jsp\".equals(target)){

//TODO 实现另一个列表的取值

}

以下为相关问题和解释

交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

海中之物 16:47:17

益明。

海中之物 16:47:29

我看了excell导出那个。

不一样 16:47:20

海中之物 16:48:09

map.put(\"qybh\

不一样 16:48:04

怎么啦?

海中之物 16:48:35

是不是会有多个参数啊?

海中之物 16:48:48

qybh只是一个例子。

不一样 16:48:42

YES

海中之物 16:49:04

不一样 16:49:11

看情况,有多少个参数就传多少个,能最到数据就OK

海中之物 16:49:43

ExportExcelServlet里面的工厂方法

海中之物 16:49:53

每个人增加自己的部分就可以了,对么?

不一样 16:49:42

是的

海中之物 16:50:14

1、每个人其实需要修改自己的页面,把查询的参数传进去。

不一样 16:50:02

取数据是复用列表的查询语句,这样我们就不用写了

不一样 16:50:12

是的

海中之物 16:50:55

2、在工厂方法里整理好自己传入的参数。

不一样 16:50:48

是的

海中之物 16:51:29

3、调用getall方法

不一样 16:51:33

这个方法是不用列表有不同的方法

海中之物 16:52:38

4、定义表头,表头对应的字段名。

不一样 16:52:29

是的

海中之物 16:53:24

5、在对应的sqlmap里面修改对应的sql配置,增加属性remapResults=\"true\"。

海中之物 16:53:30

就齐了。呵呵。

不一样 16:53:26

是的

海中之物 16:54:02

不错。收到。

不一样 16:54:08

随心所欲 16:51:44

导出的列表合计有的单元格里显示“null”

不一样 16:52:09

嗯,不是数字型的是不能统计的

随心所欲 16:52:45

显示“null”是不行的,换成空字符串吧

不一样 16:54:31

这个要解决的话,可能我要做个小小改动

海中之物 16:55:00

这样不用写sql,也不用写数据组织了。只需要定义好参数,定义好表头就可以了。

不一样 16:54:52

是的

海中之物 16:55:20

3:复用列表查询语句,请增加一个属性,参考sqlmap-ht.xml