Excel表单的导入导出工具类(三)

数据写入excel并导出,excel模板下载都有了,这一节主要说如何从页面导入带有数据的excel到数据库。

1.页面的表单提交设置

<form id="addform" method="post" enctype="multipart/form-data">
    <span>文件导入</span>
    <input id="importFile" name="importFile" type="file" />
</form>

对应js:
function data_out(){
    $("#addform").form('submit',{url:basepath+'/express/export'});
}

2.后台controller(springmvc)

@RequestMapping(value="/export")
public void fileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception{
String outputXml = null;
InputStream is=null;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/json; charset=UTF-8");
PrintWriter out=response.getWriter();
Map<String,Object> jsonMap=new HashMap<String,Object>();
//解析器
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession.getServletContext());
//判断Reqeust是否有文件上传
if(multipartResolver.isMultipart(request)){
    //转换成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
    //取得上传文件
    MultipartFile file=multiRequest.getFile(iter.next());
    if(file !=null){
        is=new ByteArrayInputStream(file.getBytes());
    }
} 
Workbook wb=new XSSFWorkbook(is);
Sheet sheet=wb.getSheeetAt(0);//获取表格
int allRow=sheet.getPhysicalNumberOfRows();//获取总行数
if(allRow>2){
    //....业务判断
    for(int start=2;start<allRow;start++){
        Row row=sheet.getRow(start);//从第三行开始获取数据
        if(row ==null){
            continue;
        }
        row.getCell(i);
        ...
    }
}
}
if(is !=null){
    is.close();
}

...
com.alibaba.fastjson.JSONObject jo=new com.alibaba.fastjson.JSONObject(jsonMap);
String jsonString=jo.toJSONString();
out.print(jsonString);
out.flush();
out.close();
}

猜你喜欢

转载自blog.csdn.net/zhanglf02/article/details/79853018