加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Apache > 正文

Apache POI操作分批导入MySQL数据库

发布时间:2023-02-20 10:45:32 所属栏目:Apache 来源:互联网
导读:poi介绍: Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。 POI使用到的相关maven依赖坐标如下: dependency groupIdorg.apache.poi/g
  poi介绍:
 
  Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。
 
  POI使用到的相关maven依赖坐标如下:
 
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.14</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
  </dependency>
  POI的相关操作结果
 
  HSSF - 提供读写Microsoft Excel XLS格式档案的功能
  XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能
  HWPF - 提供读写Microsoft Word DOC格式档案的功能
  HSLF - 提供读写Microsoft PowerPoint格式档案的功能
  HDGF - 提供读Microsoft Visio格式档案的功能
  HPBF - 提供读Microsoft Publisher格式档案的功能
  HSMF - 提供读Microsoft Outlook格式档案的功能
 
  1、POI操作入门案例
 
  1.1、从Excel文件读取数据1
  使用POI可以从一个已经存在的Excel文件中读取数据
 
  前提需要建立一个需要读取的表格数据进行读取
 
  /**
   * 使用poi读取表格数据
   * @throws Exception
   */
  @Test
  public void test1() throws Exception {
      // 1、加载指定的文件进行读取
      XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream("C:UserszhongDesktoppoi.xlsx"));
      // 2、读取表格中的Sheet页,通过索引决定
      XSSFSheet sheetAt = excel.getSheetAt(0);
      // 3、读取Sheet页中的行数据
      for (Row row : sheetAt) {
          // 4、读取每一行数据的单元格数据(如果涉及到类型装转换的可能出现报错消息,后期通过代码进行判断即可)
          for (Cell cell : row) {
              System.out.print(cell+"   ");
          }
          System.out.println();
      }
      // 5、关闭读取文件的流
      excel.close();
  }
  输出结果如下:
 
  姓名   省份   城市   
  张三   广东   高州   
  李四   四川   成都   
 
  POI操作Excel表格封装了几个核心对象:
 
  XSSFWorkbook:工作簿
  XSSFSheet:工作表
  Row:行
  Cell:单元格
 
 
  1.2、从Excel文件读取数据2
  还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:

  /**
   * 使用poi读取文件的第二种方式
   * @throws Exception
   */
  @Test
  public void test2() throws Exception {
      // 1、加载指定的文件进行读取
      XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream("C:UserszhongDesktoppoi.xlsx"));
      // 2、读取表格中的Sheet页,通过索引决定
      XSSFSheet sheetAt = excel.getSheetAt(0);
      // 3、获取当前工作表中最后一个行号,注意行号是从0开启的
      int lastRowNum = sheetAt.getLastRowNum();
      // 4、遍历获取到的行号
      for (int i = 0; i <= lastRowNum; i++) {
          // 5、根据行号获取到每一行的数据
          XSSFRow row = sheetAt.getRow(i);
          // 6、获取到当前最后一个单元格索引
          short lastCellNum = row.getLastCellNum();
          // 7、遍历当前的单元格获取到具体的数据
          for (int j = 0; j < lastCellNum; j++) {
              // 获取到单元格的对象
              XSSFCell cell = row.getCell(j);
              // 输出获取到的数据
              System.out.print(cell + "   ");
          }
          System.out.println();
      }
      // 8、释放资源
      excel.close();
  }
 
  1.3、向Excel文件写入数据
  使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘
 
  /**
   * poi写出数据到磁盘
   */
  @Test
  public void test3() throws Exception {
      // 1、创建工作簿
      XSSFWorkbook excel = new XSSFWorkbook();
      // 2、创建工作簿中的表对象
      XSSFSheet sheet = excel.createSheet("创建表");
      // 3、创建第一行(表头)
      XSSFRow row1 = sheet.createRow(0);
      // 4、在行中创建单元格数据
      row1.createCell(0).setCellValue("姓名");
      row1.createCell(1).setCellValue("省份");
      row1.createCell(2).setCellValue("城市");
      row1.createCell(3).setCellValue("年龄");
      // 5、创建第二行
      XSSFRow row2 = sheet.createRow(1);
      // 6、创建第6行的数据
      row2.createCell(0).setCellValue("张三");
      row2.createCell(1).setCellValue("辽宁");
      row2.createCell(2).setCellValue("上海");
      row2.createCell(3).setCellValue("50");
      // 7、创建一个字节输出流,将数据保存到本地
      FileOutputStream fileOutputStream = new FileOutputStream(new File("C:UserszhongDesktopaaa.xlsx"));
      excel.write(fileOutputStream);
      fileOutputStream.flush();
      // 8、关闭输出
      excel.close();
      System.out.println("数据导出成功");
  }
 
  2、使用POI批量导入数据到MySQL数据库
  创建一个数据库的表t_ordersetting

  -- auto-generated definition
  create table t_ordersetting
  (
      id           int auto_increment
          primary key,
      orderDate    date null comment '约预日期',
      number       int  null comment '可预约人数',
      reservations int  null comment '已预约人数'
  )
      charset = utf8;

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读