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; (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |