需要引用jquery.form.js文件,下载地址:http://download.csdn.net/detail/gorch/9630532
前台页面代码:
ajaxSubmit 部分参数说明
dataType:期望返回的数据类型。null、“xml”、“script”或者“json”其中之一。dataType提供一种方法,它规定了怎样处理服务器的响应。这个被直接地反映到jQuery.httpData方法中去。'script':如果dataType == 'script', 服务器响应将求值成纯文本。
后台处理代码
<%@ page import="java.util.*" %>
<%@ page import="jxl.*"%>
<%@ page import="jxl.write.*"%>
<%@ page import="java.io.*"%>
<%@ page import="org.apache.commons.fileupload.RequestContext"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletRequestContext"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="org.apache.commons.fileupload.FileItem"%>
try{
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
// 声明文件域
FileItem fileItem = null;
// 从 HTTP servlet 获取 fileupload 组件需要的内容
RequestContext requestContext = new ServletRequestContext(request);
// 判断是否包含 multipart 内容,如果不包含,则不进行任何处理。
if (ServletFileUpload.isMultipartContent(requestContext))
{
// 创建基于磁盘的文件工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置直接存储文件的极限大小,一旦超过则写入临时文件以节约内存。默认为 1024 字节
factory.setSizeThreshold(1024 * 1024);
factory.setRepository(new File(request.getSession().getServletContext().getRealPath("\\")));
// 创建上传处理器,可以处理从单个 HTML 上传的多个上传文件。
ServletFileUpload upload = new ServletFileUpload(factory);
// 最大允许上传的文件大小
upload.setSizeMax(10 * 1024 * 1024);
try {
// 处理上传
List items = upload.parseRequest(requestContext);
// 由于提交了表单字段信息,需要进行循环区分。
for (int i = 0; i < items.size(); i++) {
FileItem fi = (FileItem) items.get(i);
// 如果不是表单内容,取出 multipart。
if (!fi.isFormField()) {
fileItem = fi;
// 一次只上传单个文件
break;
}
}
Workbook workbook = null;
Cell header = null;
Cell cell = null;
String currentColumn = "";
InputStream uploadedStream = fileItem.getInputStream();
workbook = Workbook.getWorkbook(uploadedStream);
Sheet sheet = workbook.getSheet(0);
//返回去掉空行的记录数
int nullCellNum;//统计空格数
int row = sheet.getRows();
int column = sheet.getColumns();
int actualRows = row;
for (int m = 0; m < row; m++) { //统计行中为空的单元格数
nullCellNum = 0;
for (int n = 0; n < column; n++) {
String val = sheet.getCell(n, m).getContents();
val = StringUtils.trimToEmpty(val);
if (StringUtils.isBlank(val))
nullCellNum++;
}
if (nullCellNum >= column) { //如果nullCellNum大于或等于总的列数
actualRows--; //行数减一
}
}
String dzTitle=sheet.getCell(1, 1).getContents().trim();
String lifnr=sheet.getCell(1, 2).getContents().trim();
//补0
try{
lifnr="0000"+Integer.parseInt(lifnr);
}catch(Exception ep1){
}
if(null==dzTitle||"".equals(dzTitle)){
out.print("对账单标题为空");
}else if(null==lifnr||"".equals(lifnr)){
out.print("物流商编码为空");
}else{
//一系列处理过程......
out.print("1");
}
}
catch (Exception ex) {
out.print("Exception2:"+ex.getMessage());
}
}
else{
out.print("读取文件失败");
}
}catch (Exception ex) {
out.print("Exception3:"+ex.getMessage());
}