标签:etl class post 表达 tac isp findall contex div
在ssh中上传批量数据表格
1.必须同步提交form表单
2.Form表单编码方式:multipart/form-data
3.提交方式必须为post
4.上传文件对应input type="file"
为导入按钮添加一键上传效果:
//为导入添加一键上传
$("#button-import").upload({
action : ‘../../area_batchImport.action‘,
//在文件选中时,作出校验
onSelect : function(){
//关闭自动提交
this.autoSubmit = false;
//获取当前文件
var fileName = this.filename();
//校验规则的正则表达式(只允许提交xls,xlsx结尾的文件)
var regex = /^.*\.(xls|xlsx)$/;
if(regex.test(fileName)) {
//满足后缀名结尾规则
this.submit();
}else {
$.messager.alert("警告","只能上传xls,xlsx结尾的文件","warning");
}
},
onComplete : function(response){
alert("上传成功!");
}
});
POI:http://poi.apache.org/这是官网
HSSF 解析 Excel 97-2007 格式 (.xls)
XSSF 解析 Excel 2007 格式 (.xlsx )
下面是解析Excel的部分代码
@Action(value="area_batchImport") public String batchImport() throws IOException{ //创建集合 List<Area> areas = new ArrayList<>(); HSSFWorkbook workBook = new HSSFWorkbook(new FileInputStream(file)); //获取sheet对象 HSSFSheet sheet = workBook.getSheetAt(0); //读取sheet中的每一行 for (Row row : sheet) { //跳过第一行 if(row.getRowNum() == 0) { continue; } //跳过空行和最后行 if(row.getCell(0) == null || StringUtils.isBlank(row.getCell(0).getStringCellValue())) { continue; } //封装area数据,放入集合中 Area area = new Area(); area.setId(row.getCell(0).getStringCellValue()); area.setProvince(row.getCell(1).getStringCellValue()); area.setCity(row.getCell(2).getStringCellValue()); area.setDistrict(row.getCell(3).getStringCellValue()); area.setPostcode(row.getCell(4).getStringCellValue()); //放入集合 areas.add(area); } areaService.saveBatch(areas); return NONE; }
使用POI将数据导出
// 获得到所有的分区数据 List<Subarea> list = subareaService.findAll(); // 在内存中创建excel文件 HSSFWorkbook workBook = new HSSFWorkbook(); // 创建一个标签页 HSSFSheet sheet = workBook.createSheet("分区数据"); // 创建标题行 HSSFRow headRow = sheet.createRow(0); headRow.createCell(0).setCellValue("分区编号"); headRow.createCell(1).setCellValue("开始编号"); headRow.createCell(2).setCellValue("结束编号"); headRow.createCell(3).setCellValue("位置信息"); headRow.createCell(4).setCellValue("省市区"); //遍历给数据表格赋值 for (Subarea subarea : list) { HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1); dataRow.createCell(0).setCellValue(subarea.getId()); dataRow.createCell(1).setCellValue(subarea.getStartnum()); dataRow.createCell(2).setCellValue(subarea.getEndnum()); dataRow.createCell(3).setCellValue(subarea.getPosition()); dataRow.createCell(4).setCellValue(subarea.getRegion().getName()); } //使用输出流进行文件下载(一个流,两个头) String filename = "分区数据.xls"; String type = ServletActionContext.getServletContext().getMimeType(filename); ServletOutputStream out = ServletActionContext.getResponse().getOutputStream(); //设置响应头信息 ServletActionContext.getResponse().setContentType(type); //获取客户端浏览器类型 String agent = ServletActionContext.getRequest().getHeader("User-Agent"); filename = FileUtils.encodeDownloadFilename(filename, agent); ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename); workBook.write(out);
标签:etl class post 表达 tac isp findall contex div
原文地址:http://www.cnblogs.com/learnjfm/p/7226106.html