SpringBoot导入和导出Csv文件(二十八)上

简介: SpringBoot导入和导出Csv文件(二十八)上

一. CSV 文件

以下内容,来自百度百科


一.一 CSV文件简介

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),


其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,


最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。


建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一


一.二 规则

1 开头是不留空,以行为单位。


2 可含或不含列名,含列名则居文件第一行。


3 一行数据不跨行,无空行。


4 以半角逗号(即,)作分隔符,列为空也要表达其存在。


5列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。


6文件读写时引号,逗号操作规则互逆。


7内码格式不限,可为 ASCII、Unicode 或者其他。


8不支持数字


9不支持特殊字符


一.三 Csv文件举例

image.png


文件形式 形如:

id,name,sex,age,description
1,两个蝴蝶飞_1,男,21,我是第1个,我的名字是:两个蝴蝶飞_1
2,两个蝴蝶飞_2,女,22,我是第2个,我的名字是:两个蝴蝶飞_2
3,两个蝴蝶飞_3,男,23,我是第3个,我的名字是:两个蝴蝶飞_3
4,两个蝴蝶飞_4,女,24,我是第4个,我的名字是:两个蝴蝶飞_4
5,两个蝴蝶飞_5,男,25,我是第5个,我的名字是:两个蝴蝶飞_5
6,两个蝴蝶飞_6,女,26,我是第6个,我的名字是:两个蝴蝶飞_6
7,两个蝴蝶飞_7,男,27,我是第7个,我的名字是:两个蝴蝶飞_7
8,两个蝴蝶飞_8,女,28,我是第8个,我的名字是:两个蝴蝶飞_8
9,两个蝴蝶飞_9,男,29,我是第9个,我的名字是:两个蝴蝶飞_9
10,两个蝴蝶飞_10,女,30,我是第10个,我的名字是:两个蝴蝶飞_10


二. hutool 关于Csv处理的工具


官网地址是: CSV文件处理工具-CsvUtil


在 pom.xml 中添加依赖

<!--添加hutool-all, 处理csv文件解析-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.10</version>
        </dependency>

在 cn.hutool.core.text.csv 包下


image.png


接下来,老蝴蝶简单讲解一下.


对应的官方文档地址是: https://apidoc.gitee.com/loolly/hutool/


二.一 读取

二.一 .一 CsvReadConfig

/** 是否首行做为标题行,默认false */
  protected boolean containsHeader;
  /** 是否跳过空白行,默认true */
  protected boolean skipEmptyRows = true;
  /** 每行字段个数不同时是否抛出异常,默认false */
  protected boolean errorOnDifferentFieldCount;
  /** 定义开始的行(包括),此处为原始文件行号 */
  protected long beginLineNo;
  /** 结束的行(包括),此处为原始文件行号 */
  protected long endLineNo = Long.MAX_VALUE-1;


在读取文件时,可以进行相应的配置.


注意,是否将首行默认为标题行 containsHeader 为 false


二.一.二 CsvReader

image.png


二.二 写入

二.二.一 CsvWriteConfig

写入文件时的配置

/**
  * 是否始终使用文本分隔符,文本包装符,默认false,按需添加
  */
  protected boolean alwaysDelimitText;
  /**
  * 换行符
  */
  protected char[] lineDelimiter = {CharUtil.CR, CharUtil.LF};   //对应的是  \r \n


二.二.二 CsvWriter

image.png

二.三 公共部分

二.三.一 总的封装数据 CsvData

public class CsvData implements Iterable<CsvRow>, Serializable {
  private static final long serialVersionUID = 1L;
    //标题行
  private final List<String> header;
    //行数据
  private final List<CsvRow> rows;
}


二.三.二 每一行数据对象 CsvRow

public final class CsvRow implements List<String> {
  /** 原始行号 */
  private final long originalLineNumber;
    //这一行的  标题和对应的索引位置  如 name 0  表示 name字段是在第0位,最开始的位置
  final Map<String, Integer> headerMap;
    // 这一行的  内容
  final List<String> fields;
}

image.png

二.三.三 工具类 CsvUtil

image.png

基本就这些常用的信息,可以满足日常开发的相关需求.


写几个常见的例子,就明白怎么使用了.


相关文章
|
8月前
|
XML Java Maven
springboot-多环境配置文件
本文介绍了如何创建开发和生产环境的配置文件,并在IDEA和Maven中进行配置。开发环境中,通过设置profile为`dev`来指定配置文件;生产环境中,使用Maven命令参数`-Pprod`打包并指定配置文件。公共配置可放在`application.yml`中统一管理。日志配置需确保`logback-spring.xml`中的profile正确,以保证日志正常输出。
481 4
springboot-多环境配置文件
|
9月前
|
存储 前端开发 Java
Springboot静态资源映射及文件映射
在Spring Boot项目中,为了解决前端访问后端存储的图片问题,起初尝试通过静态资源映射实现,但发现这种方式仅能访问打包时已存在的文件。对于动态上传的图片(如头像),需采用资源映射配置,将特定路径映射到服务器上的文件夹,确保新上传的图片能即时访问。例如,通过`addResourceHandler(&quot;/img/**&quot;).addResourceLocations(&quot;file:E:\\myProject\\forum_server\\&quot;)`配置,使前端可通过URL直接访问图片。
541 0
Springboot静态资源映射及文件映射
|
8月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
8月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
352 0
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
665 1
SpringBoot获取项目文件的绝对路径和相对路径
|
XML Java Kotlin
springboot + minio + kkfile实现文件预览
本文介绍了如何在容器中安装和启动kkfileviewer,并通过Spring Boot集成MinIO实现文件上传与预览功能。首先,通过下载kkfileviewer源码并构建Docker镜像来部署文件预览服务。接着,在Spring Boot项目中添加MinIO依赖,配置MinIO客户端,并实现文件上传与获取预览链接的接口。最后,通过测试验证文件上传和预览功能的正确性。
1206 4
springboot + minio + kkfile实现文件预览
|
网络协议 Java
springboot配置hosts文件
springboot配置hosts文件
195 11
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
3027 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
Java Maven Android开发
eclipse如何导入springboot项目
本文介绍了如何在Eclipse中导入Spring Boot项目。
448 1
eclipse如何导入springboot项目