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

传excel文件并在服务器端读取存入数据库 博客分类: struts2  Excel  JSP  XML  工作
Java代码 复制代码 收藏代码
  1. 页面jsp文件 
  2. "add" action="/gxtWeb/lvjcontacts/manyContacts.action" method="post" enctype="multipart/form-data" οnsubmit="return checkNull();">  
  3.          "upload"
  4.         "submit" value="导入信息"
  5.       
  6. action处理: 
  7. public class ManyContactsActionextends 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. xml配置: 
  83. "manyContacts" class="manyContactAction"
  84.             "success" type="redirectAction">personInfo.action 
  85.              
  86.             "input" type="redirectAction">showmangpersons.action 
  87.              
  88.  
  89. 注意:在文件解压时,需要一个unrar.exe文件,这个文件应保存在工程相应的目录下,我就放在webapps里面了, 
  90. 按照上面的路径即可获得解压文件并进行解压。 
  91.   这里配置文件没写任何限制,拦截器之类,都在action里面进行判断了,这里只做了类型判断,没有别的。 

原链接地址:http://tudou721.iteye.com/blog/586029



你可能感兴趣的:(Java)