co.com.smartcode.bitcom.managedbeans.crud.utils.ExcelUtils.java Source code

Java tutorial

Introduction

Here is the source code for co.com.smartcode.bitcom.managedbeans.crud.utils.ExcelUtils.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.smartcode.bitcom.managedbeans.crud.utils;

import co.com.smartcode.bitcom.entidades.Marca;
import co.com.smartcode.bitcom.entidades.Producto;
import co.com.smartcode.bitcom.entidades.Seccion;
import co.com.smartcode.bitcom.entidades.Subseccion;
import java.io.ByteArrayInputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

/**
 *
 * @author USUARIO
 */
public class ExcelUtils {

    public static List<Producto> getProductosFromXls(byte[] bytes) {
        List<Producto> productos = new ArrayList<>();
        try {
            HSSFWorkbook workbook = new HSSFWorkbook(new ByteArrayInputStream(bytes));
            HSSFSheet sheet = workbook.getSheetAt(0);

            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext()) {
                Producto producto = new Producto();
                Row row = rowIterator.next();
                String nombre = row.getCell(0).getStringCellValue();
                producto.setNombre(nombre);
                String referencia = getString(row, 1);
                producto.setReferencia(referencia);
                if (row.getCell(2) != null) {
                    String nombreMarca = row.getCell(2).getStringCellValue();
                    if (nombreMarca != null && nombreMarca.trim().length() > 0) {
                        Marca marca = new Marca();
                        marca.setNombre(nombreMarca);
                        producto.setMarca(marca);
                    }
                }
                if (row.getCell(3) != null) {
                    String imagen = row.getCell(3).getStringCellValue();
                    producto.setImg(imagen);
                }
                BigDecimal precio = null;
                try {
                    String precioString = getString(row, 4);
                    precio = new BigDecimal(precioString);
                    producto.setPrecio(precio);
                } catch (Exception e) {
                    continue;
                }
                if (row.getCell(5) != null) {
                    BigDecimal precioOferta = null;
                    try {
                        String precioString = getString(row, 5);
                        precioOferta = new BigDecimal(precioString);
                        producto.setPrecioOferta(precioOferta);
                    } catch (Exception e) {
                    }
                }

                if (producto.getPrecioOferta() == null) {
                    producto.setPrecioOferta(new BigDecimal("0"));
                }

                if (row.getCell(6) != null) {
                    String descripcion = row.getCell(6).getStringCellValue();
                    producto.setDescripcion(descripcion);
                }

                if (row.getCell(7) != null) {
                    String especificaciones = row.getCell(7).getStringCellValue();
                    producto.setEspecificaciones(especificaciones);
                }
                if (row.getCell(8) != null) {
                    String nombreSeccion = row.getCell(8).getStringCellValue();
                    if (nombreSeccion != null && nombreSeccion.trim().length() > 0) {
                        String[] split = nombreSeccion.split("-");
                        if (split.length == 2) {
                            Seccion seccion = new Seccion();
                            seccion.setNombre(split[0]);
                            Subseccion subseccion = new Subseccion();
                            subseccion.setNombre(split[1]);
                            subseccion.setSeccion(seccion);
                            producto.setSubseccion(subseccion);
                        }
                    }
                }
                productos.add(producto);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return productos;
    }

    private static String getString(Row row, int i) {
        Cell cell = row.getCell(i);
        switch (cell.getCellType()) {
        case Cell.CELL_TYPE_NUMERIC:
            DecimalFormat format = new DecimalFormat("#");
            return format.format(cell.getNumericCellValue());
        case Cell.CELL_TYPE_STRING:
            return cell.getStringCellValue();
        }
        return null;
    }
}