在web项目中,对数据的导入导出是非常实用和常见的,而excel文件则是十分常见的格式。
Excel导入——解析已存在的excel文件,并把里面的数据一一对应,插入到数据库表中,同时在页面上显示出来。(通常数据库里面会有一张字段与该excel表头一一对应的表);
Excel导出——把数据库中的表的数据导出,保存在excel文件中。
poi相对于jxl,是更为成熟的excel解析技术。这段时间折腾了几天,终于弄清楚了过程,特此记录。
一些主要的基本概念:poi-3.8-x.jar
HSSFWokbook——对应excel文件的工作薄
HSSFSheet——对应excel文件的表空间
HSSFRow——对应excel文件的表的行
HSSFCell——对应excel文件的表单元格
HSSFCellStyle——对应excel文件的表单元格样式
一、Excel导入(需上传已存在的excel文件)
已经存在的excel文件:
jsp页面:
<form name="" class="k-form col3" id="M2100F004">
<label class="k-field-label">文件导入:</label>
<input class="form-control k-field-file" data-allowblank="false" type="file" id="file" name="excelFile" />
<button type="button" class="xxx" type="SUBMIT" οnclick="importExcel">导入</button>
</form>
上传的js:
$.ajaxFileUpload({ url : "demo/demo-importExcel.json", //dataType : 'json', secureuri : false, fileElementId : 'file', success : function(res, status) { //服务器成功响应处理函数 if (status) { //some code }, error : function(res, status, e) {//服务器响应失败处理函数 alert("导入数据异常:文件导入过程异常。"); } }); }else{ alert("导入数据异常:系统只支持Excel模板文件导入,请选择正确的模板文件."); return; } }
对应的后台:
@RequestMapping(value = "/demo/demo-importExcel.json")
@ResponseBody
public String importExcel( @RequestParam(value = "excelFile") MultipartFile excelFile,HttpServletRequest request) throws BiffException, IOException, KPromptException{
if (null == excelFile) {
result = "模板文件为空,请选择文件";
return result;
}
// String path = request.getSession().getServletContext().getRealPath("demo2");
String path = "E:\\demo";
//容错处理
File dir = new File(path);
if(!dir.exists()) {
dir.mkdirs();
}
String fileName = excelFile.getOriginalFilename();//report.xls
String fileName2 = excelFile.getName();//excelFile
InputStream fis = excelFile.getInputStream();
List<Map<String, Stirng>> data = ExcelImportUtil..parseExcel(fis);
//解析到的数据就可以做一些数据库的插入操作了……
return &