Java中上传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里面进行判断了,这里只做了类型判断,没有别的。 
[java] view plain copy
  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 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. "manyContacts" class="manyContactAction">  
  85.             "success" type="redirectAction">personInfo.action  
  86.               
  87.             "input" type="redirectAction">showmangpersons.action  
  88.               
  89.   
  90. 注意:在文件解压时,需要一个unrar.exe文件,这个文件应保存在工程相应的目录下,我就放在webapps里面了,  
  91. 按照上面的路径即可获得解压文件并进行解压。  
  92.   这里配置文件没写任何限制,拦截器之类,都在action里面进行判断了,这里只做了类型判断,没有别的。  

你可能感兴趣的:(javaWeb)