惊雷无声 发表于 2022-6-25 11:53:29

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

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

   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:\\Users\\zhong\\Desktop\\poi.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:\\Users\\zhong\\Desktop\\poi.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();
} 2.2.3、创建数据访问层接口和映射文件

/**
* 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:\\Users\\zhong\\Desktop\\aaa.xlsx"));
    excel.write(fileOutputStream);
    fileOutputStream.flush();
    // 8、关闭输出
    excel.close();
    System.out.println("数据导出成功");
} 数据访问层映射文件编写SQL语句
-- auto-generated definition
create table t_ordersetting
(
    id         int auto_increment
      primary key,
    orderDate    date null comment '约预日期',
    number       intnull comment '可预约人数',
    reservations intnull comment '已预约人数'
)
    charset = utf8; 3、批量导入数据测试

在上传模板上制作数据,然后进行导入,先导入新的数据再导入修改后日期不变的数据再次上传数据

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Apache POI操作批量导入MySQL数据库