Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/csvPublic

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

License

NotificationsYou must be signed in to change notification settings

houbb/csv

Repository files navigation

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

Maven CentralBuild StatusOpen 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.

finalStringpath ="stringlist.csv";finalStringtarget ="stringlist2.csv";List<List<String>>dataList =CsvStringListHelper.read(path);System.out.println(dataList);CsvStringListHelper.write(target,dataList);
  • stringlist.csv
id,name,age1,"user,1",102,"user,1",201
  • dataList 字符串列表
[[id, name, age], [1, user,1, 10], [2, user,1, 201]]

示例代码

写入

详情参考CsvHelperWriterTest.java

finalStringpath ="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

  • 读取文件
finalStringpath ="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

演示基本类型的转换

publicclassUser {privateStringname;privateintage;privatefloatscore;privatedoublemoney;privatebooleansex;privateshortlevel;privatelongid;privatecharstatus;privatebytecoin;//Getter & Setter & toString()}
  • 对象列表构建
/**     * 构建通用测试列表     * @return 列表     */privateList<User>buildCommonList() {Useruser =newUser();shorts =4;byteb =1;user.age(10)        .name("你好")        .id(1L)        .score(60)        .coin(b)        .level(s)        .money(200)        .sex(true)        .status('Y');returnArrays.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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp