Java實(shí)現(xiàn)導(dǎo)入csv的示例代碼
前言
大概內(nèi)容:本文是在springboot項(xiàng)目中新建一個(gè)子模塊專門用于執(zhí)行定時(shí)任務(wù)讀取本地window的csv文件,下面是實(shí)際操作步驟;
文檔樣例

一、引入依賴
pom.xml中引入關(guān)鍵依賴
<dependencies>
<!--csv文件操作-->
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
<!-- io常用工具類 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>下面的依賴根據(jù)需要自行選擇
<!-- Lombok
主要常用的注解有:@Data,@Getter,@Setter,@Slf4j
@Data注解:在JavaBean中使用,它包含getter、setter、toString、equals、hashCode方法,即當(dāng)使用當(dāng)前注解時(shí),會(huì)自動(dòng)生成@Data包含的所有方法;
@getter注解:在JavaBean中使用,此注解會(huì)生成對(duì)應(yīng)的getter方法;
@setter注解:在JavaBean中使用,此注解會(huì)生成對(duì)應(yīng)的setter方法;
@NoArgsConstructor注解:在JavaBean中使用,使用此注解會(huì)生成對(duì)應(yīng)的無參構(gòu)造方法;
@AllArgsConstructor注解:在JavaBean中使用,使用此注解會(huì)生成對(duì)應(yīng)的有參構(gòu)造方法;
@ToString注解:在JavaBean中使用,使用此注解會(huì)自動(dòng)重寫對(duì)應(yīng)的toStirng方法;
@EqualsAndHashCode注解:在JavaBean中使用,使用此注解會(huì)自動(dòng)重寫對(duì)應(yīng)的equals方法和hashCode方法;
@Slf4j:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了slf4j打印日志框架時(shí)使用該注解,會(huì)簡(jiǎn)化日志的打印流程,只需調(diào)用info方法即可;
@Log4j:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了log4j打印日志框架時(shí)使用該注解,會(huì)簡(jiǎn)化日志的打印流程,只需調(diào)用info方法即可;
-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<!--工具類-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.3</version>
</dependency>
<!--springboot依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>二、application.yml配置
這里注意path的路徑
# Spring配置
spring:
port: 9002
servlet:
# 應(yīng)用的訪問路徑
context-path: /dq-shieldaccess
path:
#盾構(gòu)機(jī)csv文件路徑
csv: F:\dq\r.csv
三、啟動(dòng)類
具體實(shí)現(xiàn)類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 注釋: 入口
*
* @author yangyongzhuo 2022/11/18 9:17
*/
@SpringBootApplication
public class ShieldAccessApplication {
public static void main(String[] args) {
SpringApplication.run(ShieldAccessApplication.class, args);
System.out.println("(????)?? 盾構(gòu)數(shù)據(jù)接入程序 啟動(dòng)成功 ?(′?`?)? \n");
}
}四、具體實(shí)現(xiàn)
這是定時(shí)任務(wù)類,如不需要定時(shí)只需關(guān)注具體實(shí)現(xiàn)代碼
import cn.hutool.core.date.DateUtil;
import com.csvreader.CsvReader;
import com.manager.shieldaccess.entity.CsvEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
/**
* 注釋: 盾構(gòu)數(shù)據(jù)接入控制器
*
* @author yangyongzhuo 2022/11/17 20:01
*/
@Slf4j
@Configuration
@EnableScheduling
public class ShieldAccessTask {
@Value("${path.csv}")
private String excelPath;
/**
* 每十秒執(zhí)行一次
*/
private final String CRON_10SEC = "0/10 * * * * ?";
/**
* 注釋: 用于定時(shí)讀取盾構(gòu)數(shù)據(jù)
*
* @return java.util.Map<java.lang.String, java.lang.Object>
* @author yangyongzhuo 2022/11/18 9:31
*/
@Scheduled(cron = CRON_10SEC)
public Map<String, Object> importData() {
Map<String, Object> map = new HashMap<>();
CsvReader reader = null;
try {
CsvEntity csvEntity = null;
reader = new CsvReader(excelPath, ',', Charset.forName("UTF-8"));
int sum = 0;
//以每一行的形式去讀取,此代碼意思為前兩行不讀,只讀第三行,封裝對(duì)象
while (reader.readRecord()) {
++sum;
if (sum > 2) {
csvEntity = new CsvEntity(reader.get(0), reader.get(1), reader.get(2), reader.get(3),
reader.get(4), reader.get(5), reader.get(6), reader.get(7), reader.get(8), reader.get(9));
map.put("executeTime", DateUtil.date());
map.put("data", csvEntity);
}
}
//開始:在這里寫Mysql入庫的代碼
//結(jié)束
} catch (Exception e) {
log.error("讀取文件異常:{}", DateUtil.date());
e.printStackTrace();
} finally {
reader.close();
}
return map;
}
}
這是創(chuàng)建的接收文件類
import com.manager.shieldaccess.util.read.Excel;
import java.io.Serializable;
/**
* 注釋: csv文件對(duì)象
* @return
*
* @author yangyongzhuo 2022/11/17 19:32
*/
public class CsvEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String RingNo;
private String RecordDate;
private String RecordTime;
private String SystemCondition;
@Excel("導(dǎo)向里程,m")
private String param1;
@Excel("導(dǎo)向俯仰角,° ")
private String param2;
@Excel("導(dǎo)向滾動(dòng)角,° ")
private String param3;
@Excel("導(dǎo)向前盾垂直偏差,mm")
private String param4;
@Excel("導(dǎo)向尾盾水平偏差,mm")
private String param5;
@Excel("導(dǎo)向尾盾水平偏差,mm")
private String param6;
@Excel("導(dǎo)向尾盾垂直偏差,mm")
private String param7;
@Excel("導(dǎo)向水平傾度,mm/m")
private String param8;
@Excel("導(dǎo)向豎直傾度,mm/m")
private String param9;
}
備注注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 注釋: 備注注解
*
* @author yangyongzhuo 2022/11/18 10:56
*/
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Excel {
String value() default "";
}
以上就是Java實(shí)現(xiàn)導(dǎo)入csv的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Java導(dǎo)入csv的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決Jenkins集成SonarQube遇到的報(bào)錯(cuò)問題
本文給大家分享Jenkins集成SonarQube遇到的報(bào)錯(cuò)問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07
spring cloud gateway使用 uri: lb://方式配置時(shí),服務(wù)名的特殊要求
這篇文章主要介紹了spring cloud gateway使用 uri: lb://方式配置時(shí),服務(wù)名的特殊要求,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
java中將一個(gè)實(shí)體類復(fù)制到另一個(gè)實(shí)體類的3種方法示例
這篇文章主要給大家介紹了關(guān)于java中將一個(gè)實(shí)體類復(fù)制到另一個(gè)實(shí)體類的3種方法,所謂實(shí)體類就是一個(gè)擁有Set和Get方法的類,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
jcl與jul?log4j1?log4j2?logback日志系統(tǒng)機(jī)制及集成原理
這篇文章主要介紹了jcl與jul?log4j1?log4j2?logback的集成原理,Apache?Commons-logging?通用日志框架與日志系統(tǒng)的機(jī)制,有需要的朋友可以借鑒參考下2022-03-03
idea中使用SonarLint進(jìn)行代碼規(guī)范檢測(cè)及使用方法
這篇文章主要介紹了idea中使用SonarLint進(jìn)行代碼規(guī)范檢測(cè),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換
這篇文章主要介紹了Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
org.springframework.beans.BeanInstantiationException異常解決
本文主要介紹了org.springframework.beans.BeanInstantiationException異常解決,大多數(shù)情況下,這個(gè)異常是由于簡(jiǎn)單的配置錯(cuò)誤或者代碼問題導(dǎo)致的,下面就來具體解決一下2024-03-03

