excel导入数据库,省市县导入数据库

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 21:37   87   0

需要添加的依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
    <scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>2.6.0</version>
</dependency>
<!-- poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.9</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.1</version>
</dependency>

代码:

package com.XX.XX.util;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Description:读取Excel数据
 */
public class ExcelData {
    private XSSFSheet sheet;

    /**
     * 构造函数,初始化excel数据
     *
     * @param filePath  excel路径
     * @param sheetName sheet表名
     */
    ExcelData(String filePath, String sheetName) {
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(filePath);
            XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream);
            //获取sheet
            sheet = sheets.getSheet(sheetName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据行和列的索引获取单元格的数据
     *
     * @param row
     * @param column
     * @return
     */
    public String getExcelDateByIndex(int row, int column) {
        XSSFRow row1 = sheet.getRow(row);
        String cell = row1.getCell(column) == null ? "" : row1.getCell(column).toString();
        return cell;
    }

    /**
     * 根据某一列值为“******”的这一行,来获取该行第x列的值
     *
     * @param caseName
     * @param currentColumn 当前单元格列的索引
     * @param targetColumn  目标单元格列的索引
     * @return
     */
    public String getCellByCaseName(String caseName, int currentColumn, int targetColumn) {
        String operateSteps = "";
        //获取行数
        int rows = sheet.getPhysicalNumberOfRows();
        for (int i = 0; i < rows; i++) {
            XSSFRow row = sheet.getRow(i);
            String cell = row.getCell(currentColumn).toString();
            if (cell.equals(caseName)) {
                operateSteps = row.getCell(targetColumn).toString();
                break;
            }
        }
        return operateSteps;
    }

    //打印excel数据
    public void readExcelData() {
        //获取行数
        int rows = sheet.getPhysicalNumberOfRows();
        for (int i = 0; i < rows; i++) {
            //获取列数
            XSSFRow row = sheet.getRow(i);
            int columns = row.getPhysicalNumberOfCells();
            for (int j = 0; j < columns; j++) {
                String cell = row.getCell(j).toString();
                System.out.println(cell);
            }
        }
    }

    public static List<City> getDemos(){
        ExcelData sheet1 = new ExcelData("D:/XX/XX/abc.xlsx", "Sheet1");
        String provinceCode = "";
        String cityCode = "";
        String provinceNm = "";
        String cityNm = "";
        List<City> demos = new ArrayList<>();
        for (int k = 0; k < 3526; k++) {//3526行
            String excelDateByIndex = sheet1.getExcelDateByIndex(k, 0);
            City demo = new City(excelDateByIndex.substring(0, 6),
                    sheet1.getExcelDateByIndex(k, 1), sheet1.getExcelDateByIndex(k, 2),
                    sheet1.getExcelDateByIndex(k, 3));
            if (StringUtils.isNotBlank(demo.getProvinceNm())) {//省
                provinceNm = demo.getProvinceNm();
                provinceCode = demo.getCode();
                demo.setProvinceCode(provinceCode);
                demo.setLevel(0);
            } else if (StringUtils.isNotBlank(demo.getCityNm())) {//市
                cityNm = demo.getCityNm();
                cityCode = demo.getCode();
                demo.setProvinceNm(provinceNm);
                demo.setProvinceCode(provinceCode);
                demo.setCityCode(cityCode);
                demo.setLevel(1);
            } else {//区县
                demo.setProvinceNm(provinceNm);
                demo.setCityNm(cityNm);
                demo.setProvinceCode(provinceCode);
                demo.setCityCode(cityCode);
                demo.setCountyCode(demo.getCode());
                demo.setCountyNm(demo.getCountyNm());
                demo.setLevel(2);
            }
//            System.out.println(JSON.toJSONString(demo));
            demos.add(demo);
        }
        return demos;
    }
}
package com.XX.XX.util;

public class City {
    private Integer id;
    private String provinceCode;
    private String cityCode;
    private String countyCode;
    private String provinceNm;
    private String cityNm;
    private String countyNm;
    private Integer level;//0省,1市,2县

    private String code;

    public City(String code, String provinceNm, String cityNm, String countyNm) {
        this.provinceNm = provinceNm;
        this.cityNm = cityNm;
        this.countyNm = countyNm;
        this.code = code;
    }

    public City() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }

    public String getCityCode() {
        return cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }

    public String getCountyCode() {
        return countyCode;
    }

    public void setCountyCode(String countyCode) {
        this.countyCode = countyCode;
    }

    public String getProvinceNm() {
        return provinceNm;
    }

    public void setProvinceNm(String provinceNm) {
        this.provinceNm = provinceNm;
    }

    public String getCityNm() {
        return cityNm;
    }

    public void setCityNm(String cityNm) {
        this.cityNm = cityNm;
    }

    public String getCountyNm() {
        return countyNm;
    }

    public void setCountyNm(String countyNm) {
        this.countyNm = countyNm;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}

数据库:

 CREATE TABLE `citys` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `province_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '省级编码',
  `city_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '市级编码',
  `county_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '县级编码',
  `province_nm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '省名称',
  `city_nm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '市名称',
  `county_nm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '县名称',
  `level` tinyint(1) NOT NULL COMMENT '0省1市2县',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3527 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

excel文件:

https://download.csdn.net/download/can_not_miao/13065185

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP