La necesidad de convertir Java Beans (Objetos) a un archivo CSV surge con mucha frecuencia y hay muchas formas de escribir Bean en un archivo CSV, pero una de las mejores formas de asignar Java Bean a CSV es mediante el uso de la biblioteca OpenCSV. En OpenCSV hay un nombre de clase StatefulBeanToCsvBuilder que ayuda a convertir Java Beans a CSV.
- La primera tarea es agregar la biblioteca 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.
- Asignación de JavaBeans a CSV
A continuación se muestra el procedimiento paso a paso para asignar Java Beans a CSV.- Cree una instancia de Writer para escribir datos en el archivo CSV.
Writer writer = Files.newBufferedWriter(Paths.get(file_location));
- Cree una Lista de objetos que se necesitan escribir en el archivo CSV.
- Usando ColumnPositionMappingStrategy asigne las columnas de los objetos creados a la columna de csv.
Este es un paso opcional. Si no se utiliza ColumnPositionMappingStrategy, el objeto se escribirá en csv con el mismo nombre de columna que el nombre de atributo del objeto.ColumnPositionMappingStrategy mappingStrategy = new ColumnPositionMappingStrategy(); mappingStrategy.setType(Employee.class); where Employee is the object to be mapped with CSV.
- Cree el objeto de la clase StatefulBeanToCsv llamando al método de compilación de la clase StatefulBeanToCsvBuilder después de la creación de StatefulBeanToCsvBuilder, con el objeto de escritura como parámetro. De acuerdo con el requerimiento, el usuario también puede proporcionar:
- ColumnPositionMappingStrategy con la ayuda de la función withMappingStrategy del objeto StatefulBeanToCsvBuilder.
- Separador del archivo csv generado con la ayuda de la función withSeparator del objeto StatefulBeanToCsvBuilder .
- withQuotechar del archivo csv generado con la ayuda de la función withQuotechar del objeto StatefulBeanToCsvBuilder .
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer) .withMappingStrategy(mappingStrategy) . withSeparator('#') .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER) .build();
- Después de crear el objeto de la clase StatefulBeanToCsv, puede agregar una lista de objetos u objetos al archivo csv con la ayuda del método de escritura del objeto StatefulBeanToCsv.
beanToCsv.write(Employeelist);
- Cree una instancia de Writer para escribir datos en el archivo CSV.
Ejemplo: En este ejemplo, vamos a crear la lista de Objeto de empleado que tiene atributos como Nombre, Edad, Empresa, Salario. Luego generaremos un archivo CSV Employees.csv que contiene objetos Employee.
Códigos:
- Empleado.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 + "
]";
}
}
- BeanToCSV.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();
}
}
}
Salida :
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"
Referencia: Documentación oficial de BeanToCsv
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA