OpenCSV proporciona clases para asignar archivos CSV a una lista de Java-beans. La clase CsvToBean se utiliza para asignar datos CSV a JavaBeans. Los datos CSV se pueden analizar en un bean, pero lo que se requiere hacer es definir la estrategia de mapeo y pasar la estrategia a CsvToBean para analizar los datos en un bean. HeaderColumnNameTranslateMappingStrategy es la estrategia de asignación que asigna la identificación de la columna a la propiedad del bean Java.
- Primero agregue OpenCSV al proyecto.
- Para el proyecto maven, incluya la dependencia maven de OpenCSV en el archivo pom.xml.
<
dependency
>
<
groupId
>com.opencsv</
groupId
>
<
artifactId
>opencsv</
artifactId
>
<
version
>4.1</
version
>
</
dependency
>
- Para Gradle Project, incluya la dependencia de OpenCSV.
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
- Puede descargar OpenCSV Jar e incluirlo en la ruta de clase de su proyecto.
- Para el proyecto maven, incluya la dependencia maven de OpenCSV en el archivo pom.xml.
- Mapear CSV a JavaBeans
Mapear un CSV a JavaBeans es un proceso simple y fácil. Solo sigue estos dos pasos:- Cree un Hashmap con mapeo entre la identificación de la columna y la propiedad del bean.
Map mapping = new HashMap(); mapping.put("column id ", "javaBeanProperty");
Luego agregue toda la identificación de la columna del archivo csv con su propiedad javabean correspondiente.
- Cree el objeto HeaderColumnNameTranslateMappingStrategy y pase el mapeo hashmap al método setColumnMapping.
HeaderColumnNameTranslateMappingStrategy strategy = new HeaderColumnNameTranslateMappingStrategy(); strategy.setType(JavaBeanObject.class); strategy.setColumnMapping(mapping);
- Crear el objeto de la clase CSVReade y CsvToBean
String csvFilename = "data.csv"; CSVReader csvReader = new CSVReader(new FileReader(csvFilename)); CsvToBean csv = new CsvToBean();
- Llame al método de análisis de la clase CsvToBean y pase los objetos HeaderColumnNameTranslateMappingStrategy y CSVReader.
List list = csv.parse(strategy, csvReader);
- Cree un Hashmap con mapeo entre la identificación de la columna y la propiedad del bean.
Ejemplo: vamos a convertir un archivo csv que contiene datos de Estudiante en objetos de Estudiante que tengan el atributo Nombre, RollNo, Departamento, Resultado, Puntero.
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
Primero cree una clase de estudiante con los atributos Nombre, RollNo, Departamento, Resultado, Puntero. Luego, cree una clase principal que asigne datos csv al objeto JavaBeans.
Programas:
- Estudiante.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);
}
}
}
Salida :
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]
Referencia: documentación de OpenCSV , documentación de CsvTOBean , MappingStrategy
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA