GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - houbb/csv: The csv read/write tool based on java annotation.(基于 java 注解的 CSV 文件读写框架工具。)

BranchesTags
Open more actions menu

Latest commit

 

History

47 Commits
47 Commits

Folders and files

NameName
Last commit message
Last commit date
doc
doc
 
 
src
src
 
 
.coveralls.yml
.coveralls.yml
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
CHANGE_LOG.md
CHANGE_LOG.md
 
 
LICENSE.txt
LICENSE.txt
 
 
README.md
README.md
 
 
cgit.bat
cgit.bat
 
 
cgit.sh
cgit.sh
 
 
pom.xml
pom.xml
 
 
release.bat
release.bat
 
 
release.sh
release.sh
 
 
release_rm.sh
release_rm.sh
 
 

Repository files navigation

csv

CSV 是基于 java 注解的 csv 读写框架,让你更加优雅方便的操作 csv。

Maven Central Build Status Open Source Love

相关框架

Apache commons-csv

super-csv

简单看了下,这两个框架提供的特性都非常的基础。

创作原由

以前觉得 csv 文件的读写非常简单,就懒得封装。

最近一个月写了两次 csv 文件相关的东西,发现要处理的细节还是有的,还浪费比较多的时间。

比如:

  1. UTF-8 中文编码使用 excel 打开乱码,因为缺少 BOM 头。

  2. 不同类型字段转化为字符串,顺序的指定,head 头的指定,如果手写都会很繁琐。

  3. 读取的时候最后 , 后无元素,split 会缺失等。

为了解决上述问题,此框架应运而生。

特性

  • Fluent 流式写法

  • 基于 java 注解,支持自定义的转换和灵活配置

  • 内置 8 大基本类型以及 String 类型转换

  • 解决 Excel 直接打开,utf-8 乱码问题

  • 支持集合、数组、Map 的存取

  • 支持对象中内嵌其他对象

  • 支持特殊字符转义

v0.1.0 变更

  • 枚举值映射

支持快速简单的枚举值映射

快速开始

环境

jdk7+

maven 3.x

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>csv</artifactId>
    <version>0.2.0</version>
</dependency>

朴素的读写

直接转换为 string list.

final String path = "stringlist.csv";
final String target = "stringlist2.csv";

List<List<String>> dataList = CsvStringListHelper.read(path);
System.out.println(dataList);

CsvStringListHelper.write(target, dataList);
  • stringlist.csv
id,name,age
1,"user,1",10
2,"user,1",201
  • dataList 字符串列表
[[id, name, age], [1, user,1, 10], [2, user,1, 201]]

示例代码

写入

详情参考 CsvHelperWriterTest.java

final String path = "src\\test\\resources\\helper.csv";

CsvHelper.write(buildCommonList(), CsvWriters.filePath(path));
  • 文件生成
name,age,score,money,sex,level,id,status,coin
你好,10,60.0,200.0,true,4,1,Y,1

读取

详情参考 CsvHelperReaderTest.java

  • 读取文件
final String path = "src\\test\\resources\\common.csv";

List<User> userList = CsvHelper.read(path, User.class);
Assert.assertEquals("[User{name='你好', age=10, score=60.0, money=200.0, sex=true, level=4, id=1, status=Y, coin=1}]", userList.toString());
  • 读取字符串列表

也支持直接读取字符串列表。

List<String> lines = Arrays.asList("name,age,score,money,sex,level,id,status,coin",
                "你好,10,60.0,200.0,true,4,1,Y,1");

List<User> userList = CsvHelper.read(lines, User.class);
Assert.assertEquals("[User{name='你好', age=10, score=60.0, money=200.0, sex=true, level=4, id=1, status=Y, coin=1}]", userList.toString());

对象信息

其中使用的属性如下:

  • User.java

演示基本类型的转换

public class User {

    private String name;

    private int age;

    private float score;

    private double money;

    private boolean sex;

    private short level;

    private long id;

    private char status;

    private byte coin;

    //Getter & Setter & toString()
}
  • 对象列表构建
    /**
     * 构建通用测试列表
     * @return 列表
     */
    private List<User> buildCommonList() {
        User user = new User();
        short s = 4;
        byte b = 1;
        user.age(10)
        .name("你好")
        .id(1L)
        .score(60)
        .coin(b)
        .level(s)
        .money(200)
        .sex(true)
        .status('Y');
        return Arrays.asList(user);
    }

拓展阅读

01-CSV 引导类方法说明

02-CSV 字段注解的使用

03-CSV 集合相关支持

04-CSV 内嵌对象使用

05-CSV 内嵌对象使用

后期 road-map

  • 引入 @Order 注解或者新增 order() 注解属性

避免 java 反射存在的字段顺序和声明顺序不一致问题

  • 使用 converter 项目统一优化

读写转换等操作统一复用。

About

The csv read/write tool based on java annotation.(基于 java 注解的 CSV 文件读写框架工具。)

Topics

csvcsv-exportcsv-importcsv-javacsv-readerjava-annotationsjdk7

Resources

Readme
Apache-2.0 license
Activity

Stars

28 stars

Watchers

1 watching

Forks

7 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.