Java实现导入csv的示例代码

 更新时间:2024年03月19日 11:37:53   作者:IT行业小趴菜  
这篇文章主要为大家详细介绍了Java实现导入csv的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下

前言

大概内容:本文是在springboot项目中新建一个子模块专门用于执行定时任务读取本地window的csv文件,下面是实际操作步骤;

文档样例

一、引入依赖

pom.xml中引入关键依赖

	<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>

下面的依赖根据需要自行选择

        <!-- Lombok
        主要常用的注解有:@Data,@Getter,@Setter,@Slf4j
        @Data注解:在JavaBean中使用,它包含getter、setter、toString、equals、hashCode方法,即当使用当前注解时,会自动生成@Data包含的所有方法;
        @getter注解:在JavaBean中使用,此注解会生成对应的getter方法;
        @setter注解:在JavaBean中使用,此注解会生成对应的setter方法;
        @NoArgsConstructor注解:在JavaBean中使用,使用此注解会生成对应的无参构造方法;
        @AllArgsConstructor注解:在JavaBean中使用,使用此注解会生成对应的有参构造方法;
        @ToString注解:在JavaBean中使用,使用此注解会自动重写对应的toStirng方法;
        @EqualsAndHashCode注解:在JavaBean中使用,使用此注解会自动重写对应的equals方法和hashCode方法;
        @Slf4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
        @Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用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:
    # 应用的访问路径
    context-path: /dq-shieldaccess

path:
  #盾构机csv文件路径
  csv: F:\dq\r.csv

三、启动类

具体实现类

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("(♥◠‿◠)ノ゙  盾构数据接入程序 启动成功   ლ(´ڡ`ლ)゙  \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;

/**
 * 注释: 盾构数据接入控制器
 *
 * @author yangyongzhuo 2022/11/17 20:01
 */
@Slf4j
@Configuration
@EnableScheduling
public class ShieldAccessTask {

    @Value("${path.csv}")
    private String excelPath;
    /**
     * 每十秒执行一次
     */
    private final String CRON_10SEC = "0/10 * * * * ?";

    /**
     * 注释: 用于定时读取盾构数据
     *
     * @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;
            //以每一行的形式去读取,此代码意思为前两行不读,只读第三行,封装对象
            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入库的代码
				
            //结束
        } catch (Exception e) {
            log.error("读取文件异常:{}", DateUtil.date());
            e.printStackTrace();
        } finally {
            reader.close();
        }
        return map;
    }
}

这是创建的接收文件类

import com.manager.shieldaccess.util.read.Excel;

import java.io.Serializable;

/**
* 注释: csv文件对象
* @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("导向里程,m")
   private String param1;
   @Excel("导向俯仰角,° ")
   private String param2;
   @Excel("导向滚动角,° ")
   private String param3;

   @Excel("导向前盾垂直偏差,mm")
   private String param4;
   @Excel("导向尾盾水平偏差,mm")
   private String param5;
   @Excel("导向尾盾水平偏差,mm")
   private String param6;
   @Excel("导向尾盾垂直偏差,mm")
   private String param7;
   @Excel("导向水平倾度,mm/m")
   private String param8;
   @Excel("导向竖直倾度,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实现导入csv的示例代码的详细内容,更多关于Java导入csv的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot配置文件的加载位置实例详解

    SpringBoot配置文件的加载位置实例详解

    springboot采纳了建立生产就绪spring应用程序的观点。 在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。接下来通过本文给大家介绍SpringBoot配置文件的加载位置,感兴趣的朋友一起看看吧
    2018-09-09
  • IntelliJ IDEA使用tomcat和jetty配置详解

    IntelliJ IDEA使用tomcat和jetty配置详解

    这篇文章主要介绍了IntelliJ IDEA使用tomcat和jetty配置详解,以便进一步地开发和调试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • java查找字符串中的包含子字符串的个数实现代码

    java查找字符串中的包含子字符串的个数实现代码

    下面小编就为大家带来一篇java查找字符串中的包含子字符串的个数实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • JPA如何使用findBy方法自定义查询

    JPA如何使用findBy方法自定义查询

    这篇文章主要介绍了JPA如何使用findBy方法自定义查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 深入了解Java SpringBoot自动装配原理

    深入了解Java SpringBoot自动装配原理

    在使用springboot时,很多配置我们都没有做,都是springboot在帮我们完成,这很大一部分归功于springboot自动装配。本文将详细为大家讲解SpringBoot的自动装配原理,需要的可以参考一下
    2022-03-03
  • JDK源码之Vector与HashSet解析

    JDK源码之Vector与HashSet解析

    HashSet、HashMap、ArrayList、LinkedList、Vector这几个在Java编程中经常用到,他们之间有很多联系,有很多相通的地方,我们这次先了解一下Vector与HashSet
    2021-06-06
  • SpringBoot整合Thymeleaf的方法

    SpringBoot整合Thymeleaf的方法

    这篇文章主要介绍了SpringBoot整合Thymeleaf的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下,希望能够帮助到你
    2021-07-07
  • SpringBoot从繁至简的框架基础教程

    SpringBoot从繁至简的框架基础教程

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置
    2022-10-10
  • Java中线程的基本方法使用技巧

    Java中线程的基本方法使用技巧

    这篇文章主要介绍了Java中线程的基本方法使用技巧,需要的朋友可以参考下
    2017-09-09
  • Spring中@Scheduled功能的使用方法详解

    Spring中@Scheduled功能的使用方法详解

    @Scheduled 由Spring定义,用于将方法设置为调度任务,下面这篇文章主要给大家介绍了关于Spring中@Scheduled功能的使用方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论