技术准备:
1.文件上传
fileuploadtest.jsp
<html><head><base href="<%=basePath%>"><title>演示文件上传</title></head><body><%--文件上传的表单三个条件:1.表单组件标签只能用:<input type="file">下面这些是平常常用的组件:<input type="text|password|radio|checkbox|hidden|button|submit|reset|file"><select>,<textarea>等2.请求方式只能用postpost:参数写在请求体里面,既能提交文本数据,也可以提交二进制数据;长度理论上没有限制,不能使用缓存get:参数写在url上,url在请求头上,只能向后台提交文本数据;对参数长度有限制,可以使用缓存3.表单的编码格式只能用:multipart/from-data根据HTTP协议的规定,浏览器每次向后台提供参数,都会对参数进行统一编码了、;默认的编码是urlencoded,这种编码格式只能对文本数据进行编码浏览器每次向后台提交参数,都先会把参数转换成字符串,然后对这些数据同一进行编码;--%><form action="workbench/activity/fileUpload.do" method="post" enctype="multipart/form-data"><input type="file" name="myFile"><br><input type="text" name="userName"><br><%--上面这两个并不冲突,也就是及上传一个文件也传一个字符串到后台--%><input type="submit" value="提交"></form></body></html>
controller层-》fileUpload()
springmvc的配置文件:
<!-- 配置文件上传解析器 id:必须是multipartResolver--><bean id="multipartResolver" class="org.springframework.monsMultipartResolver"><property name="maxUploadSize" value="#{1024*1024*5}"/><property name="defaultEncoding" value="utf-8"/></bean>
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<row.getLastCellNum();j++){//row.getLastCellNum()最后一列下标+1//根据row对象获取HSSFCell对象,,封装一列的信息cell = row.getCell(j);//列下标,从零开始//获取列中的数据System.out.print(HSSFUtils.getCellValueForStr(cell)+" ");}//每一行中所有列都打完,打印一个换行System.out.println();}}}
工具类:
/*** 关于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");}}})})
如果觉得《上传excel文件到到服务器(导入信息)》对你有帮助,请点赞、收藏,并留下你的观点哦!