OpenCSV提供了将CSV文件映射到Java bean列表的类。CsvToBean类用于将CSV数据映射到JavaBeans。CSV数据可以解析为bean,但需要做的是定义映射策略,并将该策略传递给CsvToBean以将数据解析为bean。HeaderColumnNameTranslateMappingStrategy是将列id映射到JavaBean属性的映射策略。
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文件。
- 将CSV映射到JavaBeans 将CSV映射到JavaBeans是一个简单易行的过程。只需遵循以下几个步骤:
- 使用列id和bean属性之间的映射创建Hashmap。
Map mapping = new HashMap(); mapping.put("column id ", "javaBeanProperty");
然后添加csv文件的所有列id及其相应的javabean属性。
- 创建HeaderColumnNameTranslateMappingStrategy对象传递映射hashmap到setColumnMapping方法。
HeaderColumnNameTranslateMappingStrategy strategy = new HeaderColumnNameTranslateMappingStrategy(); strategy.setType(JavaBeanObject.class); strategy.setColumnMapping(mapping);
- 创建CSVReade和CsvToBean类的对象
String csvFilename = "data.csv"; CSVReader csvReader = new CSVReader(new FileReader(csvFilename)); CsvToBean csv = new CsvToBean();
- 调用CsvToBean类的parse方法并传递HeaderColumnNameTranslateMappingStrategy和CSVReader对象。
List list = csv.parse(strategy, csvReader);
- 使用列id和bean属性之间的映射创建Hashmap。
例子: 让我们将包含学生数据的csv文件转换为具有属性名称、RollNo、部门、结果和指针的学生对象。
StudentData.csv: name, rollno, department, result, cgpa amar, 42, cse, pass, 8.6 rohini, 21, ece, fail, 3.2 aman, 23, cse, pass, 8.9 rahul, 45, ee, fail, 4.6 pratik, 65, cse, pass, 7.2 raunak, 23, me, pass, 9.1 suvam, 68, me, pass, 8.2
首先创建一个具有属性Name、RollNo、Department、Result和Pointer的Student类。然后创建一个将csv数据映射到JavaBeans对象的主类。
程序:
- 大学生JAVA
public
class
Student {
private
static
final
long
serialVersionUID = 1L;
public
String Name, RollNo, Department, Result, Pointer;
public
String getName()
{
return
Name;
}
public
void
setName(String name)
{
Name = name;
}
public
String getRollNo()
{
return
RollNo;
}
public
void
setRollNo(String rollNo)
{
RollNo = rollNo;
}
public
String getDepartment()
{
return
Department;
}
public
void
setDepartment(String department)
{
Department = department;
}
public
String getResult()
{
return
Result;
}
public
void
setResult(String result)
{
Result = result;
}
public
String getPointer()
{
return
Pointer;
}
public
void
setPointer(String pointer)
{
Pointer = pointer;
}
@Override
public
String toString()
{
return
"Student [Name="
+ Name +
", RollNo="
+ RollNo + ",
Department
=
" + Department + "
,
Result = " + Result
+
", Pointer="
+ Pointer +
"]"
;
}
}
- csvtobean。JAVA
import
java.io.*;
import
java.util.*;
import
com.opencsv.CSVReader;
import
com.opencsv.bean.CsvToBean;
import
com.opencsv.bean.HeaderColumnNameTranslateMappingStrategy;
public
class
csvtobean {
public
static
void
main(String[] args)
{
// Hashmap to map CSV data to
// Bean attributes.
Map<String, String> mapping =
new
HashMap<String, String>();
mapping.put(
"name"
,
"Name"
);
mapping.put(
"rollno"
,
"RollNo"
);
mapping.put(
"department"
,
"Department"
);
mapping.put(
"result"
,
"Result"
);
mapping.put(
"cgpa"
,
"Pointer"
);
// HeaderColumnNameTranslateMappingStrategy
// for Student class
HeaderColumnNameTranslateMappingStrategy<Student> strategy =
new
HeaderColumnNameTranslateMappingStrategy<Student>();
strategy.setType(Student.
class
);
strategy.setColumnMapping(mapping);
// Create castobaen and csvreader object
CSVReader csvReader =
null
;
try
{
csvReader =
new
CSVReader(
new
FileReader
(
"D:\EclipseWorkSpace\CSVOperations\StudentData.csv"
));
}
catch
(FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CsvToBean csvToBean =
new
CsvToBean();
// call the parse method of CsvToBean
// pass strategy, csvReader to parse method
List<Student> list = csvToBean.parse(strategy, csvReader);
// print details of Bean object
for
(Student e : list) {
System.out.println(e);
}
}
}
输出 :
Student [Name=amar, RollNo=42, Department=cse, Result=pass, Pointer=8.6] Student [Name=rohini, RollNo=21, Department=ece, Result=fail, Pointer=3.2] Student [Name=aman, RollNo=23, Department=cse, Result=pass, Pointer=8.9] Student [Name=rahul, RollNo=45, Department=ee, Result=fail, Pointer=4.6] Student [Name=pratik, RollNo=65, Department=cse, Result=pass, Pointer=7.2] Student [Name=raunak, RollNo=23, Department=me, Result=pass, Pointer=9.1] Student [Name=suvam, RollNo=68, Department=me, Result=pass, Pointer=8.2]
参考: OpenCSV文档 , CsvTOBean文档 , 映射策略
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END