读写csv可以用exce4j框架
读写csv最简便的框架 exce4j
mvn依赖包
com.github.crab2died
Excel4J
2.1.4-Final2
读写操作
读 需要一个bean对象
List listStudent2s= ExcelUtils.getInstance().readCSV2Objects("csvtest_test2.csv", Student2.class);
写 需要一个bean对象
ExcelUtils.getInstance().exportObjects2CSV(list, Student2.class, "csvtest_test2.csv");
详细代码如下
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.io.FileUtils;
import com.github.crab2died.ExcelUtils;
import com.github.crab2died.annotation.ExcelField;
import com.github.crab2died.exceptions.Excel4JException;
import com.testfan.csv.convetor.DateConvertible;
public class Student2 {
@ExcelField(title = "学号", order = 1)
private Long id;
@ExcelField(title = "姓名", order = 2)
private String name;
@ExcelField(title = "入学日期", order = 3, writeConverter =DateConvertible.class, readConverter =DateConvertible.class )
private Date date;
@ExcelField(title = "班级", order = 4)
private Integer classes;
@ExcelField(title = "是否开除", order = 5)
private boolean expel;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Integer getClasses() {
return classes;
}
public void setClasses(Integer classes) {
this.classes = classes;
}
public boolean isExpel() {
return expel;
}
public void setExpel(boolean expel) {
this.expel = expel;
}
public Student2(Long id, String name, Date date, Integer classes, boolean expel) {
this.id = id;
this.name = name;
this.date = date;
this.classes = classes;
this.expel = expel;
}
public Student2() {
}
@Override
public String toString() {
return "Student2{" +
"id=" + id +
", name='" + name + '\'' +
", date=" + date +
", classes=" + classes +
", expel='" + expel + '\'' +
'}';
}
//excel4j 最新版本支持 csv 注解
public static void main(String[] args) throws Excel4JException{
List list = new ArrayList();
list.add(new Student2(1000001L, "张三", new Date(), 1, true));
list.add(new Student2(1010002L, "古尔丹", new Date(), 2, false));
list.add(new Student2(1010003L, "蒙多(被开除了)", new Date(), 6, true));
list.add(new Student2(1010004L, "萝卜特", new Date(), 3, false));
list.add(new Student2(1010005L, "奥拉基", new Date(), 4, false));
list.add(new Student2(1010006L, "得嘞", new Date(), 4, false));
list.add(new Student2(1010007L, "瓜娃子", new Date(), 5, true));
list.add(new Student2(1010008L, "战三", new Date(), 4, false));
list.add(new Student2(1010009L, "李四", new Date(), 2, false));
//删除csvtest_test2.csv文件
try {
FileUtils.forceDelete(new File("csvtest_test2.csv"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//写入csv
ExcelUtils.getInstance().exportObjects2CSV(list, Student2.class, "csvtest_test2.csv");
//读取csv
List listStudent2s= ExcelUtils.getInstance().readCSV2Objects("csvtest_test2.csv", Student2.class);
for (Student2 student2 : listStudent2s) {
System.out.print(student2);
System.out.println();
}
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.github.crab2died.converter.ReadConvertible;
import com.github.crab2died.converter.WriteConvertible;
public class DateConvertible implements WriteConvertible,ReadConvertible{
SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd_HH_mm:ss");
@Override
public Object execWrite(Object object) {
if(object instanceof Date) {
Date date =(Date)object;
return format.format(date);
}
return object;
}
@Override
public Object execRead(String object) {
try {
return format.parse(object);
} catch (ParseException e) {
//e.printStackTrace();
}
return object;
}
}
读的效果
Student2{id=1000001, name='张三', date=Thu Aug 06 15:38:09 CST 2020, classes=1, expel='true'}
Student2{id=1010002, name='古尔丹', date=Thu Aug 06 15:38:09 CST 2020, classes=2, expel='false'}
Student2{id=1010003, name='蒙多(被开除了)', date=Thu Aug 06 15:38:09 CST 2020, classes=6, expel='true'}
Student2{id=1010004, name='萝卜特', date=Thu Aug 06 15:38:09 CST 2020, classes=3, expel='false'}
Student2{id=1010005, name='奥拉基', date=Thu Aug 06 15:38:09 CST 2020, classes=4, expel='false'}
Student2{id=1010006, name='得嘞', date=Thu Aug 06 15:38:09 CST 2020, classes=4, expel='false'}
Student2{id=1010007, name='瓜娃子', date=Thu Aug 06 15:38:09 CST 2020, classes=5, expel='true'}
Student2{id=1010008, name='战三', date=Thu Aug 06 15:38:09 CST 2020, classes=4, expel='false'}
Student2{id=1010009, name='李四', date=Thu Aug 06 15:38:09 CST 2020, classes=2, expel='false'}
写的效果