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 int null comment '可预约人数',
- reservations int null comment '已预约人数'
- )
- charset = utf8;
复制代码 3、批量导入数据测试
在上传模板上制作数据,然后进行导入,先导入新的数据再导入修改后日期不变的数据再次上传数据
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |