easy ui 1.5 采用jxl第三方包导出excel表格

本文介绍如何利用jxl库结合EasyUI实现Web系统中的Excel导出功能,支持用户自定义导出列,并通过Servlet进行服务器端处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 easy ui 1.5 采用jxl第三方包导出excel表格

               今天紧接着再写一份博客吧,在此谢谢大家的支持和鼓励,我和一如既往,坚持努力的学习的。昨天我大概把权限管理框架介绍下,但是大部分web系统都

是需要导入导出excel表格功能的。今天我就用大家很熟悉的jxl方式导出excel表格,此功能支持导出可选择项。不知道小伙伴们是怎么实现功能的,是通过easy ui 相关函数直接把需要导出的数据传到服务器,还是通过主键通过后台查询方式再导出,我采用的是后者方法。效果图如下所示:



  服务器端代码我是考虑行数和列数有选择的情况下的,行数是参数穿过来的,至于列数需要在客户端做个dialog让客户来选择的,由于时间紧迫就没做了,这个其实也很简单。以下是服务端关键代码,是用servlet写的。

  // 创建Excel工作薄
            WritableWorkbook wwb;
            wwb = Workbook.createWorkbook(os);

            // 添加第一个工作表并设置第一个Sheet的名字
            WritableSheet sheet = wwb.createSheet(sheetName, 0);
            Label label;
            for (int i = 0; i < title.length; i++) {
                label = new Label(i, 0, title[i]); // 三个参数分别表示col+1列,row+1行,标题内容是title。
                sheet.addCell(label); // 将定义好的单元格添加到工作表中
            }

            // 单元格填充数据
            Label labels = null;
            for (int i = 0; i < listData.size(); i++) {// 控制行数
                for (int j = 0; j < title.length; j++) {// 控制列数
                    TUser user = listData.get(i);
                    for (Entry<String, Object> vo : mapField.entrySet()) {
                        String proName = (String) vo.getValue();
                        if (proName.equals(title[j])) {
                            String key = vo.getKey();
                            // 通过反射取对象的值
                            Field[] fields = TUser.class.getDeclaredFields();
                            for (Field f : fields) {// 控制输出列数
                                f.setAccessible(true);// 由于对象属性值通过get方法取值很麻烦,这次通过反射机制来取值
                                String field = f.toString().substring(f.toString().lastIndexOf(".") + 1);
                                if (f.get(user) != null && key.equals(field.trim())) {
                                    labels = new Label(j, i + 1, f.get(user).toString());
                                    sheet.addCell(labels);
                                }
                            }
                            break;
                        }
                    }
                }
            }

客户端需要选择多列,js如下图:

idsArray =new Array();
            //实现刷新栏目中的数据
             var rowAll = $('#dg').datagrid('getChecked');
             for(var i =0;i<rowAll.length;i++){
            	 idsArray.push(rowAll[i].id);
             }
            window.location.href="../servlet/ExcelTest?ids="+idsArray.toString();
至于列数选择,我没做dialog,所以没有效果图的,应该是可选择列数,该功能默认只输入四列,是在服务端直接控制的,如下代码

 String ids = request.getParameter("ids");// 接收参数

        String[] title = { "编号", "用户名称", "登录名称", "密码" };
        String fileName = "用户列表信息";
        String sheetName = "用户详细信息";
        Map<String, Object> protopy = new LinkedHashMap<String, Object>();
        protopy.put("id", "编号");
        protopy.put("username", "用户名称");
        protopy.put("loginName", "登录名称");
        protopy.put("password", "密码");
        protopy.put("createTime", "创建时间");
        protopy.put("sex", "性别");
        protopy.put("address", "用户地址");

        UserDao userDao = new UserDaoImpl();
        List<TUser> listData = userDao.getAllUserByList(ids);

        excelImport(listData, title, protopy, fileName, sheetName, response);

ok,导入就写到这了,明天继续把导入和大家介绍下,谢谢大家留言指出问题bug,互相交流!

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值