Java讀取Excel文件并寫入數(shù)據(jù)庫(kù)的示例代碼
從指定路徑的Excel文件中讀取數(shù)據(jù),跳過第一行(通常為標(biāo)題行),并將每一行的數(shù)據(jù)映射到實(shí)體類對(duì)象的屬性中。最終,將所有數(shù)據(jù)收集到列表中。
1、實(shí)體類代碼
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)一社會(huì)信用代碼
}2、實(shí)現(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ù),并返回一個(gè)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ù)自己需求,實(shí)現(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 ""; // 對(duì)于空白和其他類型
}
}
// 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ù)庫(kù)。
到此這篇關(guān)于Java讀取Excel文件并寫入數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Java讀取Excel文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)現(xiàn)讀取Excel文件功能(EasyExcel初使用)
- 使用Java讀取Excel文件數(shù)據(jù)的方法詳解
- java?freemarker實(shí)現(xiàn)動(dòng)態(tài)生成excel文件
- Java使用POI實(shí)現(xiàn)excel文件的導(dǎo)入和導(dǎo)出
- Java使用POI解析帶圖片的excel文件(簡(jiǎn)潔好用!)
- Java實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)
- java解析Excel文件的方法實(shí)例詳解
- Java實(shí)現(xiàn)Excel文件轉(zhuǎn)PDF(無水印無限制)
- Java實(shí)現(xiàn)Excel文件加密解密的示例代碼
相關(guān)文章
關(guān)于Mybatis插入對(duì)象時(shí)空值的處理
這篇文章主要介紹了關(guān)于Mybatis插入對(duì)象時(shí)空值的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
解決feignclient調(diào)用服務(wù),傳遞的中文數(shù)據(jù)成???問題
這篇文章主要介紹了解決feignclient調(diào)用服務(wù),傳遞的中文數(shù)據(jù)成???問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
解決mybatisPlus 中的field-strategy配置失效問題
這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Spring?AOP實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了Spring?AOP如何實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)具有一定的借鑒價(jià)值,需要的可以參考一下2023-01-01
Apache Calcite進(jìn)行SQL解析(java代碼實(shí)例)
Calcite是一款開源SQL解析工具, 可以將各種SQL語句解析成抽象語法樹AST(Abstract Syntax Tree), 之后通過操作AST就可以把SQL中所要表達(dá)的算法與關(guān)系體現(xiàn)在具體代碼之中,今天通過代碼實(shí)例給大家介紹Apache Calcite進(jìn)行SQL解析問題,感興趣的朋友一起看看吧2022-01-01
Java最常用的6個(gè)簡(jiǎn)單的計(jì)算題
本篇文章給大家整理的在JAVA中最常用到的簡(jiǎn)單的計(jì)算題,對(duì)此有興趣的朋友可以測(cè)試參考下。2018-02-02

