网站首页 > java教程 正文
文介绍了一种使用Java编程语言从本地Excel文件中读取数据的方法。通过利用Apache POI库,实现了对Excel文件的读取、解析及数据处理流程。文章详细展示了如何创建文件流、工作簿、表单及行,并对每行数据进行遍历,根据不同的数据类型转换为相应的Java类型。此外,还介绍了如何将解析后的数据存储到数据库中。
@GetMapping("/uploadExcel")
public void uploadExcel() throws Exception {
AreaEntity areaEntity = new AreaEntity();
List<AreaEntity> list = new ArrayList<>();
//文件路径
String path = "C:\\Users\\Administrator\\Downloads\\";
//获取文件流
FileInputStream inputStream = new FileInputStream(path + "Excel下载 .xls");
//创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//根据索引获取表
HSSFSheet sheet = workbook.getSheetAt(0);
//获取excel数据多少行数据(数据行数=总行数-表头行数)
int lastRowNum = sheet.getLastRowNum();
for (int i = 1; i < lastRowNum; i++) {
HSSFRow row = sheet.getRow(i);
//判断行非空
if (row != null) {
//获取列数
int cells = row.getPhysicalNumberOfCells();
for (int j = 0; j < cells; j++) {
HSSFCell cell = row.getCell(j);
//判断列非空
if (cell != null) {
//匹配列的数据类型
int cellType = cell.getCellType();
String value = null;
switch (cellType) {
case HSSFCell.CELL_TYPE_STRING: //字符串
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN: //布尔
value = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK: //空
break;
case HSSFCell.CELL_TYPE_NUMERIC: //数字(日期、普通数字)
if (HSSFDateUtil.isCellDateFormatted(cell)) { //日期
Date date = cell.getDateCellValue();
value = new DateTime(date).toString("yyyy-MM-dd");
} else {
//不是日期格式,防止数字过长
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
value = cell.toString();
}
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
}
switch (j){
case 0 : areaEntity.setId(Integer.parseInt(value));
case 1 : areaEntity.setAreaid(value);
case 2 : areaEntity.setArea(value);
case 3 : areaEntity.setCityid(value);
}
}
}
}
//保存数据库
areaService.save(areaEntity);
}
}
猜你喜欢
- 2025-06-28 若依框架中实现Excel浮动图片和WPS内嵌式图片的批量导入功能
- 2025-06-28 还在为 Spring Boot3 整合 Easy Excel 发愁?一文搞定!
- 2025-06-28 Python写入Excel表格模块:xlwt介绍
- 2025-06-28 Android 优雅的读写Excel(读写安卓data)
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)