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:在页面增加导出按钮如下:
导出列表
脚本:
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.put(\"qybh\ //第一步:跟据查询条件取得所有数据 result = htService.getAll(-1, -1, map); datas = (List 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