excel批量导入数据库
来源:互联网 发布:javascript重置表单 编辑:程序博客网 时间:2024/06/06 00:04
excel导入数据库数据的结构如下:
Controller:
@RequestMapping(value="/formExcel",method = RequestMethod.POST)@ResponseBodypublic String formExcel(MultipartFile upExcel){ try {String originalFilename = upExcel.getOriginalFilename();String uploadPath = "upload/Excel";String rootPath = SpringMVCUtil.getRequest().getSession().getServletContext().getRealPath("/");String imagePath = uploadPath + "/" + UUID.getUUID() + originalFilename;try {FileStorageHelper.transferFile(upExcel.getInputStream(), imagePath);} catch (IOException e) {e.printStackTrace();return "Excel存储失败";}//String rootPath = SpringMVCUtil.getRequest().getSession().getServletContext().getRealPath("/");String paths = rootPath+imagePath;unitsService.Exceldata(paths);return "Excel导入数据成功";} catch (Exception e) {e.printStackTrace();return "Excel导入数据失败";}}
Service:
public void Exceldata(String originalFilename){List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();// 判断是否为excel类型文件if (!originalFilename.endsWith(".xls") && !originalFilename.endsWith(".xlsx")) {System.out.println("文件不是excel类型");}FileInputStream fis = null;Workbook wookbook = null;int flag = 0;try {// 获取一个绝对地址的流fis = new FileInputStream(originalFilename);} catch (Exception e) {e.printStackTrace();}try {// 2003版本的excel,用.xls结尾wookbook = new HSSFWorkbook(fis);// 得到工作簿} catch (Exception ex) {// ex.printStackTrace();try {// 这里需要重新获取流对象,因为前面的异常导致了流的关闭—————————————————————————————加了这一行fis = new FileInputStream(originalFilename);// 2007版本的excel,用.xlsx结尾wookbook = new XSSFWorkbook(originalFilename);// 得到工作簿} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 得到一个工作表Sheet sheet = wookbook.getSheetAt(0);// 获得表头Row rowHead = sheet.getRow(0);// 根据不同的data放置不同的表头Map<Object, Integer> headMap = new HashMap<Object, Integer>();// 判断表头是否合格 ------------------------这里看你有多少列if (rowHead.getPhysicalNumberOfCells() != 8) {System.out.println("表头列数与要导入的数据库不对应");}try {// ----------------这里根据你的表格有多少列while (flag < 8) {Cell cell = rowHead.getCell(flag);if (getRightTypeCell(cell).toString().trim().equals("单位名称")) {headMap.put("dwmc", flag);}if (getRightTypeCell(cell).toString().trim().equals("单位属性")) {headMap.put("dwsx", flag);}if (getRightTypeCell(cell).toString().trim().equals("单位性质")) {headMap.put("dwxz", flag);}if (getRightTypeCell(cell).toString().trim().equals("单位负责人")) {headMap.put("dwfzr", flag);}if (getRightTypeCell(cell).toString().trim().equals("联系电话")) {headMap.put("lxdh", flag);}if (getRightTypeCell(cell).toString().trim().equals("单位地址")) {headMap.put("dwdz", flag);}if (getRightTypeCell(cell).toString().trim().equals("节点信息")) {headMap.put("jdxx", flag);}if (getRightTypeCell(cell).toString().trim().equals("组织机构编码")) {headMap.put("zzjgbm", flag);}flag++;}} catch (Exception e) {e.printStackTrace();System.out.println("表头不合规范,请修改后重新导入");}// 获得数据的总行数int totalRowNum = sheet.getLastRowNum();// 要获得属性String unitsName = ""; //单位名称String unitsProperty = ""; //单位属性String unitsCharacter = ""; //单位性质String agent = ""; //单位负责人String contactTel = ""; //联系电话String unitsAddress = ""; //单位地址String nodeData = ""; //节点信息String organizationCode = ""; //组织机构编码if (0 == totalRowNum) {System.out.println("Excel内没有数据!");}Cell cell_1 = null, cell_2 = null, cell_3 = null, cell_4 = null, cell_5 = null, cell_6 = null, cell_7 = null, cell_8 = null;// 获得所有数据for (int i = 1; i <= totalRowNum; i++) {// 获得第i行对象Row row = sheet.getRow(i);try {cell_1 = row.getCell(headMap.get("dwmc"));cell_2 = row.getCell(headMap.get("dwsx"));cell_3 = row.getCell(headMap.get("dwxz"));cell_4 = row.getCell(headMap.get("dwfzr"));cell_5 = row.getCell(headMap.get("lxdh"));cell_6 = row.getCell(headMap.get("dwdz"));cell_7 = row.getCell(headMap.get("jdxx"));cell_8 = row.getCell(headMap.get("zzjgbm"));if (cell_2 == null || cell_2.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_2 = cell_1;}if (cell_3 == null || cell_3.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_3 = cell_1;}if (cell_4 == null || cell_4.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_4 = cell_1;}if (cell_5 == null || cell_5.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_5 = cell_1;}if (cell_6 == null || cell_6.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_6 = cell_1;}if (cell_7 == null || cell_7.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_7 = cell_1;}if (cell_8 == null || cell_8.getCellType() == HSSFCell.CELL_TYPE_BLANK) {cell_8 = cell_1;}} catch (Exception e) {e.printStackTrace();System.out.println("获取单元格错误");}try {if (cell_1 == null || cell_1.getCellType() == HSSFCell.CELL_TYPE_BLANK) {break;}// 单位名称unitsName = (String) getRightTypeCell(cell_1);// 单位属性unitsProperty = (String) getRightTypeCell(cell_2);// 单位性质unitsCharacter = (String) getRightTypeCell(cell_3);// 单位负责人agent = (String) getRightTypeCell(cell_4);// 联系电话contactTel = (String) getRightTypeCell(cell_5);// 单位地址unitsAddress = (String) getRightTypeCell(cell_6);// 节点信息nodeData = (String) getRightTypeCell(cell_7);// 组织机构编码organizationCode = (String) getRightTypeCell(cell_8);} catch (ClassCastException e) {e.printStackTrace();System.out.println("数据不全是数字或全部是文字!");}System.out.println("单位名称:" + unitsName + ",单位属性:" + unitsProperty + ",单位性质:" + unitsCharacter + ",单位负责人:" + agent+ ",联系电话:" +contactTel+ ",单位地址:" + unitsAddress + ",节点信息:" + nodeData + ",组织机构编码:" +organizationCode);//里面处理逻辑代码 }}页面这样写:
<div class="form-group"><label class="col-sm-3 control-label">上传文件</label><div class="col-sm-7"><input type="file" name="upExcel" id="ben" /></div></div>
<button class="btn btn-primary m-r-xs" id="submitBtn">提交</button>
//上传$("#submitBtn").click(function(){var diag = new Dialog();diag.Width = 200;diag.Height = 80;diag.InvokeElementId="shifougongxiang";var formData = new FormData($( "#toForm" )[0]);// diag.OKEvent = function(){// $( "#toForm" ).attr("method","post").attr("action","/Document/formExcel").submit(); $.ajax({ type:"POST", url:"/Document/formExcel", data:formData, async: false, cache: false, contentType: false, processData: false, success:function(data){// Dialog.alert(data); }, error:function(data){ alert("ERROR"); Dialog.alert(data); } });
这就是基本代码了,欢迎指导交流
0 0
- Excel批量导入数据库
- excel批量导入数据库
- excel批量导入数据库
- excel批量导入到数据库
- Excel批量导入到数据库
- excel数据批量导入到Mysql数据库
- java批量导入excel到Mysql数据库
- 网页版excel数据批量导入数据库
- excel批量导入数据到数据库
- 多种方法实现Excel批量导入数据库
- excel数据批量导入mongodb数据库
- java 实现Excel批量导入数据库 及生成excel
- excel批量导入数据
- excel数据批量导入
- excel批量导入数据
- excel批量导入数据
- excel批量导入数据
- 批量导入excel入库
- php false null 0 array string
- yum配置及安装
- mysql数据库删除数据后,数据自增id断点不连续
- Oracle中常用函数
- G-catch that cow
- excel批量导入数据库
- Linux中在终端捕获程序的返回值(return 0和exit(0))
- 方法覆盖与方法重载
- 华为拉低了中国IT业的操守
- HDU2896 病毒侵袭 AC自动机
- Java的反射机制
- IT痴汉的工作现状53-连长的小暴脾气
- 北师大,数据结构
- JFinal+MySql实现登录注册功能