ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Apache POI操作批量导入MySQL数据库
[打印本页]
作者:
惊雷无声
时间:
2022-6-25 11:53
标题:
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 int null comment '可预约人数',
reservations int null comment '已预约人数'
)
charset = utf8;
复制代码
3、批量导入数据测试
在上传模板上制作数据,然后进行导入,先导入新的数据再导入修改后日期不变的数据再次上传数据
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4