上传excel文件并在服务器端读取存入数据库

 
Java代码 复制代码
  1. 页面jsp文件     
  2. <form name="add" action="/gxtWeb/lvjcontacts/manyContacts.action" method="post" enctype="multipart/form-data" οnsubmit="return checkNull();">      
  3.          <s:file name="upload"></s:file>     
  4.         <input type="submit" value="导入信息" >     
  5.     </form>      
  6. action处理:     
  7. public class ManyContactsAction extends ActionSupport {     
  8. private File upload;     
  9.     private String uploadContentType;// 要上传的文件的类型     
  10.     private String uploadFileName;// 要上传的文件     
  11.     private ContactsManager manager;     
  12.     private Contacts cbean;     
  13.     private Persons pbean;     
  14.     private Long gid;     
  15.     private String result;     
  16. public String execute() throws Exception {     
  17.         // 检查后缀名是否符合条件,同时更改上传文件的文件名     
  18.         int filesize = this.getUploadFileName().length();     
  19.         String fileEx = this.getUploadFileName().substring(     
  20.                 this.getUploadFileName().indexOf("."), filesize);     
  21.         //获取文件名     
  22.         String fileName=uploadFileName.substring(0,uploadFileName.indexOf("."));     
  23.         // 获得上传路径     
  24.         String realPath = ServletActionContext.getServletContext().getRealPath(     
  25.                 "/UploadFile/");     
  26.         File saveFile=null;     
  27.         if (upload != null) {     
  28.             // 修改文件名,使上传后不至于重复替代     
  29.             // this.uploadFileName = new Date().getTime() + fileEx;     
  30.             saveFile = new File(new File(realPath), uploadFileName);     
  31.             if (!saveFile.getParentFile().exists()) {     
  32.                 saveFile.getParentFile().mkdirs();     
  33.             }     
  34.      
  35.             FileUtils.copyFile(upload, saveFile);// 到这里,文件已上传成功     
  36.             // 下面进行判断文件是否是rar文件,是就需要解压     
  37.             if (fileEx.equals(".rar")) {     
  38.                 System.out.println("saveFile:" + saveFile);//rar文件所在保存路径     
  39.                 System.out.println("realPath:" + realPath);//解压后保存路径     
  40.                 // 定义解压字符串,用于解压上传的rar文件,注意此处需要一个unrar.exe文件     
  41.                 String rarpath = ServletActionContext.getServletContext()     
  42.                         .getRealPath("/rarFile/UNRAR.exe x -t -o+ -p- \"");     
  43.                 String jieya = rarpath + saveFile + "\" \"" + realPath + "\"";     
  44.                 Process p1 = Runtime.getRuntime().exec(jieya);// 将传输的rar文件解压     
  45.                 p1.waitFor();     
  46.                 p1.destroy();     
  47.                 FileUtils.deleteQuietly(saveFile);// 删除rar文件     
  48.                 saveFile=new File(new File(realPath),fileName+".xls");     
  49.                 System.out.println("解压后:"+saveFile);     
  50.                 ServletActionContext.getResponse().getWriter().println(     
  51.                         "success!!");     
  52.             }     
  53.             if (fileEx.equals(".xls") || fileEx.equals(".xlsx")) {     
  54.                 // 开始读取文件了,获得第一列手机号码     
  55.                 Workbook persons = Workbook.getWorkbook(saveFile);// 获得xls文件     
  56.                 Sheet sheet = persons.getSheet(0);// 获得第一个工作簿     
  57.                 System.out.println("列数:" + sheet.getColumns());     
  58.                 int count = sheet.getRows();// 取得记录数,count行     
  59.                 String cphone;     
  60.                 // 遍历行,获得列数据     
  61.                 for (int i = 0; i < count; i++) {     
  62.                     cphone = sheet.getCell(0, i).getContents();// 第一列的所有行     
  63.                     pbean = manager.getPerson(cphone);// 获得该用户,查询别的信息     
  64.                     cbean = new Contacts();     
  65.                     Long contactsid = pbean.getId();     
  66.                     Long pid = 10002L;     
  67.                     cbean.setContactsid(contactsid);// 联系人id     
  68.                     cbean.setPid(pid);// 用户本身的PID     
  69.                     cbean.setCid("cid");// 关系的学校ID     
  70.                     cbean.setGid(gid);// 分组id     
  71.                     manager.addPerson(cbean);     
  72.                     this.contactsLog.writeLog("10002""批量添加联系人""批量添加联系人操作""");     
  73.                     System.out.println("添加成功!");     
  74.                 }     
  75.             }     
  76.             return SUCCESS;     
  77.         } else {     
  78.             return INPUT;     
  79.         }     
  80.     }     
  81. }     
  82.      
  83. xml配置:     
  84. <action name="manyContacts" class="manyContactAction">     
  85.             <result name="success" type="redirectAction">personInfo.action     
  86.             </result>     
  87.             <result name="input" type="redirectAction">showmangpersons.action     
  88.             </result>     
  89. </action>     
  90. 注意:在文件解压时,需要一个unrar.exe文件,这个文件应保存在工程相应的目录下,我就放在webapps里面了,     
  91. 按照上面的路径即可获得解压文件并进行解压。     
  92.   这里配置文件没写任何限制,拦截器之类,都在action里面进行判断了,这里只做了类型判断,没有别的。   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值