由于项目中使用到了该部分功能,所以将代码贴出来,给后来人参考
1.下载Jar包
该方法需要调用一个名为javacsv.jar的包,下载地址为
http://central.maven.org/maven2/net/sourceforge/javacsv/javacsv/2.0/javacsv-2.0.jar
2.代码部分
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import light.mvc.pageModel.sys.StudentForTest;
import com.csvreader.CsvWriter;
public static <T> void writeCSV(Collection<T> dataset,String csvFilePath,String[] csvHeaders) {
try {
// 定义路径,分隔符,编码
CsvWriter csvWriter = new CsvWriter(csvFilePath, ';', Charset.forName("UTF-8"));
// 写表头
csvWriter.writeRecord(csvHeaders);
// 写内容
//遍历集合
Iterator<T> it = dataset.iterator();
while (it.hasNext()) {
T t = (T) it.next();
//获取类属性
Field[] fields = t.getClass().getDeclaredFields();
String[] csvContent=new String[fields.length];
for (short i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
try {
Class tCls = t.getClass();
Method getMethod = tCls.getMethod(getMethodName,new Class[] {});
Object value = getMethod.invoke(t, new Object[] {});
if (value == null) {
continue;
}
//取值并赋给数组
String textvalue=value.toString();
csvContent[i]=textvalue;
//System.out.println("fieldname="+fieldName+"||getMethodname="+getMethodName+"||textvalue="+textvalue);
}catch (Exception e) {
e.getStackTrace();
}
}
//迭代插入记录
csvWriter.writeRecord(csvContent);
}
csvWriter.close();
System.out.println("<--------CSV文件写入成功-------->");
} catch (IOException e) {
e.printStackTrace();
}
}
3.测试代码
**javaBean类**
public class StudentForTest{
private int age;
private String email;
private String name;
private String phone;
private String sex;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
Main方法
public static void main(String[] args) {
StudentForTest s=new StudentForTest();
s.setAge(21);
s.setEmail("11");
s.setName("yaochongwei");
s.setPhone("157");
s.setSex("1");
StudentForTest s1=new StudentForTest();
s1.setAge(22);
s1.setEmail("11");
s1.setName("yaochongwei");
s1.setPhone("157");
s1.setSex("0");
List<StudentForTest> l=new ArrayList<StudentForTest>();
l.add(s);
l.add(s1);
String csvFilePath = "D://yaochongwei.csv";
String[] csvHeaders = { "年龄", "邮件", "姓名","手机","性别" };
writeCSV(l,csvFilePath,csvHeaders);
}