昨天向大家展示了easy ui 的导出功能,今天向大家展示下导入的功能,也是通过jxl第三方包实现的。结合网上资源然后自己整理下就ok了,效果图如下:
如果不用easy ui组件最好加上一个上传按钮实现功能。
上传后,服务端请求相应,通过fileupload包将上传的文件存入到临时磁盘缓存中,再通过WorkBook.getBook(in),in是输入流,(不知道网上为什么很多都直接上传到本地服务器临时地址中,这样不是很占硬盘内存吗?)读取工作蒲信息。关键代码如下
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);// 设置缓冲区大小,这里是4kb
factory.setRepository(tempFile); // 设置缓冲区目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(4 * 1024 * 1024);// 设置最大文件尺寸,这里是4MB
List items = upload.parseRequest(request);
然后读取工作表行数,列数,以及单元格信息。通过反射机制,将属性一一对应到列中,反射这个方法我是结合网上提取了一个公共类,直接将属性名称,对象名称,属性值传入,就可以一一将单元格内容存入到对应的属性中,( 注意:excel列的字段和map对象要一一对应),关键代码和效果图如下:
for (int r = 1; r < rows; r++) {// 从第二行追加记录
user = new TUser();
for (int col = 0; col < columns; col++) {// 列数添加数据
Cell cell = sheet.getCell(col, r);
for (String s : protopy.keySet()) {
if (Integer.parseInt(s) == col) {
System.out.print(cell.getContents() + " -");// 输出单元格数据
AssignValueForAttributeUtil.setAttrributeValue(user, protopy.get(s).toString(), cell.getContents());
break;
}
}
}
userDao.addUser(user);
System.out.println();
}
然后excel数据导入到数据库中。
ok,经过两天整理导入导出就ok了,以后准备用这个做个具体的项目发布到网站中,谢谢大家交流观看。