Java讀取Excel文件并寫入數(shù)據(jù)庫的示例代碼
從指定路徑的Excel文件中讀取數(shù)據(jù),跳過第一行(通常為標(biāo)題行),并將每一行的數(shù)據(jù)映射到實體類對象的屬性中。最終,將所有數(shù)據(jù)收集到列表中。
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; //企業(yè)名稱
private String plate; // 板塊
private String industry; // 行業(yè)
private String companyCode; // 統(tǒng)一社會信用代碼
}2、實現(xiàn)方法
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文件路徑讀取數(shù)據(jù),并返回一個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; // 跳過第一行(標(biāo)題行)
}
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) {
// 根據(jù)自己需求,實現(xiàn)自定義異常處理機(jī)制
e.printStackTrace();
}
return entityDtosList;
}
// 根據(jù)單元格類型獲取單元格的值
private String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
// 可選:將日期轉(zhuǎn)換為格式化的日期字符串
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 如果想將所有類型的單元格統(tǒng)一轉(zhuǎn)換為字符串類型,注釋掉上面的getCellValue方法,調(diào)用該方法即可
//private String getCellValue(Cell cell) {
// if (cell == null) {
// return "";
// }
// cell.setCellType(CellType.STRING);
// return cell.getStringCellValue();
//}
}3、根據(jù)最終返回的entityDtosList列表,使用MyBatisPlus的批量插入方法或其他方法,將數(shù)據(jù)保存到數(shù)據(jù)庫。
到此這篇關(guān)于Java讀取Excel文件并寫入數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)Java讀取Excel文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實現(xiàn)讀取Excel文件功能(EasyExcel初使用)
- 使用Java讀取Excel文件數(shù)據(jù)的方法詳解
- java?freemarker實現(xiàn)動態(tài)生成excel文件
- Java使用POI實現(xiàn)excel文件的導(dǎo)入和導(dǎo)出
- Java使用POI解析帶圖片的excel文件(簡潔好用!)
- Java實現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)
- java解析Excel文件的方法實例詳解
- Java實現(xiàn)Excel文件轉(zhuǎn)PDF(無水印無限制)
- Java實現(xiàn)Excel文件加密解密的示例代碼
相關(guān)文章
MyEclipse8.6首次運行maven項目圖標(biāo)上沒有小M的標(biāo)識怎么解決
myeclipse8.6導(dǎo)入maven項目后識別為普通java項目,即項目圖標(biāo)上沒有小M的標(biāo)識。這時是無法直接運行的,怎么解決這一問題呢?下面小編給大家?guī)砹私鉀Q方案,需要的朋友參考下吧2016-11-11
Java連接Mysql數(shù)據(jù)庫詳細(xì)代碼實例
這篇文章主要介紹了Java連接Mysql數(shù)據(jù)庫詳細(xì)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
ocp開閉原則_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了ocp開閉原則的相關(guān)資料,ocp開閉原則指導(dǎo)我們?nèi)绾谓⒁粋€穩(wěn)定的、靈活的系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Spring?Boot?快速使用?HikariCP?連接池配置詳解
Spring Boot 2.x 將其作為默認(rèn)的連接池組件,項目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模塊后,HikariCP 依賴會被自動引入,這篇文章主要介紹了Spring?Boot使用HikariCP連接池配置詳解,需要的朋友可以參考下2023-06-06
使用mybatis切片實現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程
數(shù)據(jù)權(quán)限控制需要對查詢出的數(shù)據(jù)進(jìn)行篩選,對業(yè)務(wù)入侵最少的方式就是利用mybatis或者數(shù)據(jù)庫連接池的切片對已有業(yè)務(wù)的sql進(jìn)行修改,本文給大家介紹了使用mybatis切片實現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程,需要的朋友可以參考下2024-07-07

