首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
图数据库
›
Java读取Excel文件并写入数据库
返回列表
发新帖
Java读取Excel文件并写入数据库
[复制链接]
发表于 2024-8-6 12:55:43
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
从指定路径的Excel文件中读取数据,跳过第一行(通常为标题行),并将每一行的数据映射到实体类对象的属性中。终极,将所有数据网络到列表中。
1、实体类
代码
package com.code.boot.model;
import lombok.Data;
/**
* @Author: Gurucyy
* @date: 2024/03/23 09:47:05
* @Description: EntityDto
*/
@Data
public class EntityDto {
private String companyName; //企业名称
private String plate; // 板块
private String industry; // 行业
private String companyCode; // 统一社会信用
代码
}
复制
代码
2、实现方法
package com.code.boot.controller;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
// 从指定的Excel文件路径读取数据,并返回一个SuzhouDto列表
private List<EntityDto> readExcelData(String excelFilePath) {
List<EntityDto> entityDtosList = new ArrayList<>();
try (FileInputStream fileInputStream = new FileInputStream(new File(excelFilePath));
Workbook workbook = WorkbookFactory.create(fileInputStream)) {
Sheet sheet = workbook.getSheetAt(0);
boolean isFirstRow = true;
for (Row row : sheet) {
if (isFirstRow) {
isFirstRow = false;
continue; // 跳过第一行(标题行)
}
EntityDto entityDto = new EntityDto();
entityDto.setCompanyName(getCellValue(row.getCell(0)));
entityDto.setPlate(getCellValue(row.getCell(1)));
entityDto.setIndustry(getCellValue(row.getCell(2)));
entityDto.setCompanyCode(getCellValue(row.getCell(3)));
entityDtosList.add(entityDto);
}
} catch (Exception e) {
// 根据自己需求,实现自定义异常处理机制
e.printStackTrace();
}
return entityDtosList;
}
// 根据单元格类型获取单元格的值
private String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
// 可选:将日期转换为格式化的日期字符串
return cell.getDateCellValue().toString();
} else {
return Double.toString(cell.getNumericCellValue());
}
case BOOLEAN:
return Boolean.toString(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
default:
return ""; // 对于空白和其他类型
}
}
// todo 如果想将所有类型的单元格统一转换为字符串类型,注释掉上面的getCellValue方法,调用该方法即可
//private String getCellValue(Cell cell) {
// if (cell == null) {
// return "";
// }
// cell.setCellType(CellType.STRING);
// return cell.getStringCellValue();
//}
}
复制代码
3、根据终极返回的entityDtosList列表,使用MyBatisPlus的批量插入方法或其他方法,将数据保存到
数据库
。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
返回列表
浏览过的版块
开源技术
程序人生
小秦哥
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表