将JavaBean(对象)转换为CSV文件的需求非常普遍,将Bean写入CSV文件的方法有很多,但将JavaBean映射到CSV的最佳方法之一是使用OpenCSV库。在OpenCSV中有一个类名 StatefulBeanToCsvBuilder 这有助于将JavaBean转换为CSV。
null
- 第一项任务是 将OpenCSV库添加到项目中 .
- 对于maven项目,在pom中包含OpenCSV maven依赖项。xml文件。
<
dependency
>
<
groupId
>com.opencsv</
groupId
>
<
artifactId
>opencsv</
artifactId
>
<
version
>4.1</
version
>
</
dependency
>
- 对于Gradle项目,包括OpenCSV依赖项。
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
- 你可以下载 OpenCSV Jar 并包含在项目类路径中。
- 对于maven项目,在pom中包含OpenCSV maven依赖项。xml文件。
- 将JavaBeans映射到CSV 下面是将JavaBean映射到CSV的分步过程。
- 创建Writer实例,将数据写入CSV文件。
Writer writer = Files.newBufferedWriter(Paths.get(file_location));
- 创建需要写入CSV文件的对象列表。
- 使用ColumnPositionMapping策略将创建对象的列映射到csv的列。 这是一个可选步骤。如果未使用ColumnPositionMappingStrategy,则对象将以与对象的属性名相同的列名写入csv。
ColumnPositionMappingStrategy mappingStrategy = new ColumnPositionMappingStrategy(); mappingStrategy.setType(Employee.class); where Employee is the object to be mapped with CSV.
- 创建对象 州政府 创建StatefulBeanToCsvBuilder后,调用StatefulBeanToCsvBuilder类的生成方法,以writer对象为参数初始化。根据要求,用户还可以提供:
- 列位置映射策略 借助于 使用映射策略 StatefulBeanToCsvBuilder对象的函数。
- 借助于生成的csv文件的分隔符 带分离器 功能 StatefulBeanToCsvBuilder 对象
- withQuotechar 在 withQuotechar 功能 StatefulBeanToCsvBuilder 对象
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer) .withMappingStrategy(mappingStrategy) . withSeparator('#') .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER) .build();
- 创建StatefulBeanToCsv类的对象后,可以借助StatefulBeanToCsv对象的写入方法将对象或对象列表添加到csv文件中。
beanToCsv.write(Employeelist);
- 创建Writer实例,将数据写入CSV文件。
例子: 在本例中,我们将创建Employee对象的列表,该列表具有名称、年龄、公司、薪水等属性。然后我们将生成一个CSV文件。包含员工对象的csv。 代码:
- 受雇者JAVA
public
class
Employee {
public
String Name, Age, Company, Salary;
public
Employee(String name, String age,
String company, String salary)
{
super
();
Name = name;
Age = age;
Company = company;
Salary = salary;
}
@Override
public
String toString()
{
return
"Employee [Name="
+ Name + ",
Age=
" + Age + "
, Company=
" + Company + "
,
Salary=
" + Salary + "
]";
}
}
- Beantosv。JAVA
import
java.io.FileWriter;
import
java.io.Writer;
import
java.nio.*;
import
java.nio.file.Files;
import
java.nio.file.Paths;
import
java.util.*;
import
com.opencsv.bean.ColumnPositionMappingStrategy;
import
com.opencsv.bean.StatefulBeanToCsv;
import
com.opencsv.bean.StatefulBeanToCsvBuilder;
public
class
BeanToCSV {
public
static
void
main(String[] args)
{
// name of generated csv
final
String CSV_LOCATION =
"Employees.csv "
;
try
{
// Creating writer class to generate
// csv file
FileWriter writer =
new
FileWriter(CSV_LOCATION);
// create a list of employee
List<Employee> EmployeeList =
new
ArrayList<Employee>();
Employee emp1 =
new
Employee
(
"Mahafuj"
,
"24"
,
"HTc"
,
"75000"
);
Employee emp2 =
new
Employee
(
"Aman"
,
"24"
,
"microsoft"
,
"79000"
);
Employee emp3 =
new
Employee
(
"Suvradip"
,
"26"
,
"tcs"
,
"39000"
);
Employee emp4 =
new
Employee
(
"Riya"
,
"22"
,
"NgGear"
,
"15000"
);
Employee emp5 =
new
Employee
(
"Prakash"
,
"29"
,
"Sath"
,
"51000"
);
EmployeeList.add(emp1);
EmployeeList.add(emp2);
EmployeeList.add(emp3);
EmployeeList.add(emp4);
EmployeeList.add(emp5);
// Create Mapping Strategy to arrange the
// column name in order
ColumnPositionMappingStrategy mappingStrategy=
new
ColumnPositionMappingStrategy();
mappingStrategy.setType(Employee.
class
);
// Arrange column name as provided in below array.
String[] columns =
new
String[]
{
"Name"
,
"Age"
,
"Company"
,
"Salary"
};
mappingStrategy.setColumnMapping(columns);
// Creating StatefulBeanToCsv object
StatefulBeanToCsvBuilder<Employee> builder=
new
StatefulBeanToCsvBuilder(writer);
StatefulBeanToCsv beanWriter =
builder.withMappingStrategy(mappingStrategy).build();
// Write list to StatefulBeanToCsv object
beanWriter.write(EmployeeList);
// closing the writer object
writer.close();
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
输出 :
EmployeeData.csv CSV file contains:----- "Mahafuj", "24", "HTc", "75000" "Aman", "24", "microsoft", "79000" "Suvradip", "26", "tcs", "39000" "Riya", "22", "NgGear", "15000" "Prakash", "29", "Sath", "51000"
参考: BeanToCsv官方文件
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END