Java解析Excel并把数据保存到数据库中
来源:互联网 发布:高校网络舆情工作方案 编辑:程序博客网 时间:2024/05/22 12:15
Java解析Excel,采用的Apache的poi,其实不难,需求是把每一列的数据解析出来,因为每一列的数据不等,解析Excel是一行一行的解析的,其实根据列解析也不违背,只不过需要判断下数据是否为空,先获得某一列,然后一行行的解析下去。保存到数据库采用mybatis,因为参数是list,所以这边用批量插入。工程已经上传到GitHub上,传送门:https://github.com/loupXing/looper
解析Excel的代码
package com.ymm.util;import java.io.FileInputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.apache.log4j.Logger;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import com.ymm.dao.AreaDao;import com.ymm.dao.impl.AreaDaoImpl;import com.ymm.entity.CityDistrict;import com.ymm.entity.DistrictStreet;import com.ymm.entity.ProvinceCity;public class ReadExcel{ private static final Logger LOGGER = Logger.getLogger(ReadExcel.class); private static List<ProvinceCity> provinceCities = new ArrayList<ProvinceCity>(); private static List<CityDistrict> cityDistricts = new ArrayList<CityDistrict>(); private static List<DistrictStreet> districtStreets = new ArrayList<DistrictStreet>(); /** * 读取Excel * * @param filePath * @param sheetInex */ public static void loadExcel(String filePath) { LOGGER.debug("enter loadExcel,filePath:" + filePath); InputStream in = null; Workbook workbook = null; Sheet sheet = null; try { in = new FileInputStream(filePath); workbook = WorkbookFactory.create(in); for (int i = 1; i < 4; i++) { sheet = workbook.getSheetAt(i); getSheetData(sheet, i); } } catch (Exception e) { e.printStackTrace(); LOGGER.error("load excel failed,desc:::" + e, e); } } private static void getSheetData(Sheet sheet, int sheetInex) { AreaDao areaDao = new AreaDaoImpl(); int rowNum = sheet.getLastRowNum(); // 获取第一行 Row rowFirst = sheet.getRow(0); Row row = null; Cell cell = null; String cellValue = null; int firstCellNum = rowFirst.getLastCellNum(); String firstValue = null; String lastValue = null; for (int i = sheetInex == 1 ? 2 : 0; i <= firstCellNum; i++) { for (int j = 0; j <= rowNum; j++) { row = sheet.getRow(j); if (null != row) { cell = row.getCell(i); if (null != cell) { cellValue = cell.getStringCellValue(); if ((null != cellValue) && !"".equals(cellValue)) { int indexN = cellValue.indexOf("N"); String subValue = cellValue.substring(0, indexN); if (j == 0) { firstValue = subValue; lastValue = cellValue; continue; } if (sheetInex == 1) { ProvinceCity provinceCity = new ProvinceCity(); provinceCity.setProvince(firstValue); provinceCity.setProvince_n(lastValue); provinceCity.setCity(subValue); provinceCity.setCity_n(cellValue); provinceCities.add(provinceCity); } if (sheetInex == 2) { CityDistrict cityDistrict = new CityDistrict(); cityDistrict.setCity(firstValue); cityDistrict.setCity_n(lastValue); cityDistrict.setDistrict(subValue); cityDistrict.setDistrict_n(cellValue); cityDistricts.add(cityDistrict); } if (sheetInex == 3) { DistrictStreet districtStreet = new DistrictStreet(); districtStreet.setDistrict(firstValue); districtStreet.setDistrict_n(lastValue); districtStreet.setStreet(subValue); districtStreet.setStreet_n(cellValue); districtStreets.add(districtStreet); } } } } } } if (sheetInex == 1) { LOGGER.debug("provinceCities:" + provinceCities); areaDao.insertProvinceCity(provinceCities); } if (sheetInex == 2) { LOGGER.debug("cityDistricts:" + cityDistricts); areaDao.insertCityDistrict(cityDistricts); } if (sheetInex == 3) { LOGGER.debug("districtStreets:" + districtStreets); areaDao.insertDistrictStreet(districtStreets); } } }
0 0
- Java解析Excel并把数据保存到数据库中
- 解析XML文档,并把数据存到数据库中
- java解析xml并把节点值存储到数据库中
- 用jsp将xml文件解析到网页显示,并把数据提交保存到数据库
- 如何对dataset中进行修改并把修改后的数据保存到数据库中?
- 上传,解析Excel文件并保存数据到数据库
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- java实现excel文件上传并解析内容保存到数据库中
- 快速将excel数据保存到Oracle数据库中
- SSH将Excel中的数据读入保存到数据库中
- 用Jsoup写一个简单的爬虫,并把从网页上面爬下的数据保存到数据库中
- Java实现查询数据保存到Excel表中
- 读取Excel数据,保存到数据库
- C#读取Excel和txt文件数据并把数据分别一次性添加到Mysql数据库
- SAX解析XML并把节点值保存到相应的对象中
- JDBC保存EXCEL数据到数据库(3.POI保存Excel数据到数据库)
- 将List数据保存到Excel中
- flex 保存datagrid数据到excel中
- Differences Between the NDB and InnoDB Storage Engines
- 《大型数据库作业2》客户端的配置与应用
- 实现简易的Struts.xml解析[内含反射的理解]
- mysql建立索引时中的length什么用
- 查询mysql中重复数据的方法
- Java解析Excel并把数据保存到数据库中
- EnumResourceNames枚举资源
- caffe学习笔记14-caffe可视化特征与权重
- linux cfs调度器_理论模型
- hiho一下 第140周-清理海报(DAG+dfs)
- IP头、TCP头、UDP头
- 问题总结一
- LeetCode 53. Maximum Subarray 题解
- scrapy框架拓展:为download_middleware添加用户代理池