上传excel文件到到服务器(导入信息)
技术准备:
1.文件上传
fileuploadtest.jsp
演示文件上传
<%--文件上传的表单三个条件:1.表单组件标签只能用:下面这些是平常常用的组件:
controller层-》fileUpload()
springmvc的配置文件:
controller:
/*注意:* 这里需要先在springMVC中的配置文件中先配置文件上传解析器* 用于从前端放在响应体中的文件解析出来才能放到controller层接收*///测试文件上传controller@RequestMapping("/workbench/activity/fileUpload.do")@ResponseBodypublic Object fileUpload(String userName, MultipartFile myFile) throws IOException {//把文本数据打印在控制台System.out.println("userName="+userName);//把文件在服务器指定的目录中生成同一个文件String originalFilename = myFile.getOriginalFilename();File file = new File("D:\\实践项目\\CRM后台系统\\serverDir\\"+originalFilename);myFile.transferTo(file);//返回信息ReturnObject returnObject=new ReturnObject();returnObject.setMessage("上传成功");returnObject.setCode(Constant.RETURN_OBJECT_CODE_SUCCESS);return returnObject;}
2.使用Java解析excel文件:使用apache-poi
//使用apache-poi解析excel文件
public class ParseExcelTest {public static void main(String[] args) throws IOException {//根据excel文件生成HSSFWorkbook对象,封装了excel文件哎都所有信息InputStream is = new FileInputStream("D:\\实践项目\\CRM后台系统\\serverDir\\studentList.xls");HSSFWorkbook wb = new HSSFWorkbook(is);//根据wb获取HSSFSheet对象,封装了一页的所有信息HSSFSheet sheet = wb.getSheetAt(0);//页下标,下标从零开始//根据sheet获取HSSFSheet获取行HSSFRow row=null;HSSFCell cell=null;for (int i=0;i<=sheet.getLastRowNum();i++){//sheet.getLastRowNum()最后一行的下标row = sheet.getRow(i);//行下标,从零开始for (int j=0;j
工具类:
/*** 关于excel文件操作的工具类*/
public class HSSFUtils {/*** 从指定的HSSFCell对象中获取列的值* @return*/public static String getCellValueForStr(HSSFCell cell){String ret="";if(cell.getCellType()==HSSFCell.CELL_TYPE_STRING){ret=cell.getStringCellValue();}else if(cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){ret=cell.getNumericCellValue()+"";}else if(cell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){ret=cell.getBooleanCellValue()+"";}else if(cell.getCellType()==HSSFCell.CELL_TYPE_FORMULA){ret=cell.getCellFormula();}else{ret="";}return ret;}
}
注:使用Ajax向后台提交文件注意要设置是否要转成字符串和是否要进行encoded编码
并注意1.val()获取的是文件的名称,比对是否是所需文件格式要进行字符串的裁剪
str.substr(str.lastIndexOf(".")+1)//截取文件的后缀名
2.想要获取文件,需要从document中获得
其中有两种方式:1)document.getElementById()
2)$("按钮")[0].files[0]
//给批量导入的导入按钮添加单击事件$("#importActivityBtn").click(function (){//收集参数var activityFileName=$("#activityFile").val();//获取文件名称var suffix=activityFileName.substr(activityFileName.lastIndexOf(".")+1).toLocaleLowerCase();//截取字符串拿到后缀if (suffix!="xls"){alert("只支持xls文件!");return ;}var activityFile=$("#activityFile")[0].files[0];//得到文件本身//document.getElementById()//验证文件大小if (activityFile.size>5*1024*1024){alert("文件大小不能超过5MB!");return ;}//FormData这个是ajax提供的一个接口,相当于Java里面的类//这个类可以模拟键值对向后台提供参数。优点就是字符串文本和二进制都可以提交var formData=new FormData();formData.append("activityFile",activityFile);formData.append("userName","testName");//发送请求$.ajax({url:'workbench/activity/importActivity.do',data:formData,type:'post',contentType:false,//设置Ajax向后台提交参数之前,是否把所有的参数统一按urlencoded编码;processData:false,//默认情况下,会将参数转译成字符串格式。dataType:'json',success:function (data){if (data.code=="1"){alert("成功导入"+data.retData+"条数据!");$("#importActivityModal").modal("hide");queryActivityByConditionForPage(1,$("#demo_pag1").bs_pagination('getOption', 'rowsPerPage'));}else {alert(data.message);$("#importActivityModal").modal("show");}}})})
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
