Mapeo de Java Beans a CSV usando OpenCSV

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.

  1. 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.
  2. Asignación de JavaBeans a CSV
    A continuación se muestra el procedimiento paso a paso para asignar Java Beans a CSV.
    1. Cree una instancia de Writer para escribir datos en el archivo CSV.
      Writer writer = Files.newBufferedWriter(Paths.get(file_location));
    2. Cree una Lista de objetos que se necesitan escribir en el archivo CSV.
    3. 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.
      
    4. 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();
      
    5. 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);
      

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:

  1. 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 + "]";
        }
    }
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *