Problema com Apache POI [Resolvido]

Boa noite galera.

Antes de qualquer coisa, gostaria de agradecer a todos por sempre me ajudarem de forma direta e indiretamente.

Primeiramente vou explicar o que cada código faz:

O código abaixo é de uma classe DAO que lista os dados do banco que posteriormente serão apresentados em um JTable.

Classe DAO:


package br.com.wmsreport.DAO;

import br.com.wmsreport.modelos.CanalAzul;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class CanalAzulDAO {

    public String sql() {
        String sql = "SELECT ROWNUMBER() OVER() AS LINHA"
                + ", C.REF_NO AS DELIVERY"
                + ", C.USER_COL_2 AS NOTA"
                + ", C.OUTB_DATE AS OUTDATA"
                + ", C.NOTA_POST_DATE NOTADATA"
                + ", A.ITEM_CD AS PRODUTO"
                + ", D.DESC AS DESCRICAO"
                + ", A.PRDT_SER_NO AS SERIAL"
                + ", D.DIV_CD AS DIVISAO "
                + "FROM GWMS.TWMS_IB_LOT_SER A"
                + ", GWMS.TWMS_OB_OUTB_D B"
                + ", GWMS.TWMS_OB_OUTB_H C"
                + ", GWMS.TWMS_MA_ITEM   D "
                + "WHERE A.OUTB_NO = B.OUTB_NO "
                + "AND A.OUTB_DETL_NO = B.OUTB_DETL_NO "
                + "AND A.WH_CD = B.WH_CD "
                + "AND A.ITEM_CD = B.ITEM_CD "
                + "AND B.WH_CD = C.WH_CD "
                + "AND B.OUTB_NO = C.OUTB_NO "
                + "AND B.ITEM_CD = D.ITEM_CD "
                + "AND A.IOB_INVN_CD = 'OUT' "
                + "AND B.OUTB_DETL_SCD = '8' "
                + "AND A.DEL_YN = 'N' "
                + "AND B.DEL_YN = 'N' "
                + "AND C.DEL_YN = 'N' "
                + "AND D.DIV_CD = 'G1' "
                + "AND A.WH_CD = ? "
                + "AND C.OUTB_DATE = ?";
        return sql;
    }

    public List<CanalAzul> listarTabela(String filtro[]) {

        List<CanalAzul> lista = new ArrayList<CanalAzul>();
        try {
            Connection conn = ConexaoDB.getConnection();
            PreparedStatement stmt = conn.prepareStatement(sql());
            stmt.setString(1, filtro[0]);
            stmt.setString(2, filtro[1]);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                CanalAzul canalazul = new CanalAzul();
                canalazul.setLinha(rs.getString("LINHA"));
                canalazul.setDelivery(rs.getString("DELIVERY"));
                canalazul.setNota(rs.getString("NOTA"));
                canalazul.setOutdata(rs.getString("OUTDATA"));
                canalazul.setNotadata(rs.getString("NOTADATA"));
                canalazul.setProduto(rs.getString("PRODUTO"));
                canalazul.setDescricao(rs.getString("DESCRICAO"));
                canalazul.setSerial(rs.getString("SERIAL"));
                canalazul.setDivisao(rs.getString("DIVISAO"));
                lista.add(canalazul);
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        return lista;
    }
}

Esta classe faz o papel de exportar os dados para um planilha do excel utilizando a biblioteca Apache POI:

Classe de exportação

package br.com.wmsreport.exports;

import br.com.wmsreport.DAO.CanalAzulDAO;
import br.com.wmsreport.modelos.CanalAzul;
import br.com.wmsreport.wmsreport.Menu;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class CanalAzulReport {

    public String CanalAzulReport() {

        Menu menu = new Menu();
        String CanalAzulReport = "ExportFolder/CanalAzulReport.xlsx";
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet report = workbook.createSheet("CanalAzul");
        FileOutputStream arquivo = null;

        try {
            arquivo = new FileOutputStream(new File(CanalAzulReport));
            CanalAzulDAO dao = new CanalAzulDAO();
            List<CanalAzul> lista = dao.listarTabela(menu.campoCanalAzul());

            XSSFRow row = report.createRow(0);
            Cell cell0 = row.createCell(0);
            Cell cell1 = row.createCell(1);
            Cell cell2 = row.createCell(2);
            Cell cell3 = row.createCell(3);
            Cell cell4 = row.createCell(4);
            Cell cell5 = row.createCell(5);
            Cell cell6 = row.createCell(6);
            Cell cell7 = row.createCell(7);
            Cell cell8 = row.createCell(8);
            
            cell0.setCellValue("LINHA");            
            cell1.setCellValue("DELIVERY");           
            cell2.setCellValue("NOTA");           
            cell3.setCellValue("NOTADATA");           
            cell4.setCellValue("OUTDATA");            
            cell5.setCellValue("PRODUTO");            
            cell6.setCellValue("DESCRIÇÃO");            
            cell7.setCellValue("SERIAL");            
            cell8.setCellValue("DIVISÃO");

            
            XSSFCellStyle estiloFixo = workbook.createCellStyle();
            XSSFFont fonte = workbook.createFont();
            fonte.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
            estiloFixo.setAlignment(XSSFCellStyle.ALIGN_CENTER);
            estiloFixo.setFillBackgroundColor(HSSFColor.GREEN.index);
            estiloFixo.setFont(fonte);
            estiloFixo.setBorderBottom(XSSFCellStyle.BORDER_DOTTED);
            estiloFixo.setBorderLeft(XSSFCellStyle.BORDER_DOTTED);
            estiloFixo.setBorderRight(XSSFCellStyle.BORDER_DOTTED);
            estiloFixo.setBorderTop(XSSFCellStyle.BORDER_DOTTED);
            
            cell0.setCellStyle(estiloFixo);
            cell1.setCellStyle(estiloFixo);
            cell2.setCellStyle(estiloFixo);
            cell3.setCellStyle(estiloFixo);
            cell4.setCellStyle(estiloFixo);
            cell5.setCellStyle(estiloFixo);
            cell6.setCellStyle(estiloFixo);
            cell7.setCellStyle(estiloFixo);
            cell8.setCellStyle(estiloFixo);
            
            report.autoSizeColumn(0);
            report.autoSizeColumn(1);
            report.autoSizeColumn(2);
            report.autoSizeColumn(3);
            report.autoSizeColumn(4);
            report.autoSizeColumn(5);
            report.autoSizeColumn(6);
            report.autoSizeColumn(7);
            report.autoSizeColumn(8);
            
            XSSFCellStyle estiloVariavel = workbook.createCellStyle();
            estiloVariavel.setAlignment(XSSFCellStyle.ALIGN_CENTER);
            estiloVariavel.setFillBackgroundColor(HSSFColor.GREEN.index);
            estiloVariavel.setBorderBottom(XSSFCellStyle.BORDER_DOTTED);
            estiloVariavel.setBorderLeft(XSSFCellStyle.BORDER_DOTTED);
            estiloVariavel.setBorderRight(XSSFCellStyle.BORDER_DOTTED);
            estiloVariavel.setBorderTop(XSSFCellStyle.BORDER_DOTTED);

            int i = 1;
            for (CanalAzul canalazul : lista) {
                XSSFRow linha = report.createRow(i);
                linha.createCell(0).setCellValue(canalazul.getLinha());
                linha.createCell(1).setCellValue(canalazul.getDelivery());
                linha.createCell(2).setCellValue(canalazul.getNota());
                linha.createCell(3).setCellValue(canalazul.getOutdata());
                linha.createCell(4).setCellValue(canalazul.getNotadata());
                linha.createCell(5).setCellValue(canalazul.getProduto());
                linha.createCell(6).setCellValue(canalazul.getDescricao());
                linha.createCell(7).setCellValue(canalazul.getSerial());
                linha.createCell(8).setCellValue(canalazul.getDivisao());
                
                linha.getCell(0).setCellStyle(estiloVariavel);                
                linha.getCell(1).setCellStyle(estiloVariavel);                
                linha.getCell(2).setCellStyle(estiloVariavel);                
                linha.getCell(3).setCellStyle(estiloVariavel);                
                linha.getCell(4).setCellStyle(estiloVariavel);               
                linha.getCell(5).setCellStyle(estiloVariavel);               
                linha.getCell(6).setCellStyle(estiloVariavel);                
                linha.getCell(7).setCellStyle(estiloVariavel);               
                linha.getCell(8).setCellStyle(estiloVariavel);
                i++;
            }
            workbook.write(arquivo);


        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Erro ao exportar arquivo");
        } finally {
            try {
                arquivo.flush();
                arquivo.close();

            } catch (IOException ex) {
                Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
        Runtime run = Runtime.getRuntime();
        try {
            run.exec("RunDLL32.EXE shell32.dll,ShellExec_RunDLL " + "d:\\Projetos\\WMSReport\\ExportFolder\\CanalAzulReport.xlsx");
        } catch (IOException ex) {
            Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
        }
        return CanalAzulReport;
    }
}

Este código abaixo é utilizado somente para chamar o método de exportação:

Classe view

  private void btExportarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        CanalAzulReport canalazul = new CanalAzulReport();
        canalazul.CanalAzulReport();
    }                                          

Este método abaixo é utilizado somente para listar os campos formulário da classe View:

Classe view

    
    public String[] campoCanalAzul() {
        String campoCanalAzul[] = new String[10];
        campoCanalAzul[0] = comboCanalAzul.getSelectedItem().toString();
        SimpleDateFormat formato = new SimpleDateFormat("yyyyMMdd");
        try {
            campoCanalAzul[1] = formato.format(CanalAzulData.getDate());
        } catch (Exception ex) {
        }
        return campoCanalAzul;
    }

Agora vem o problema…

Eu já consegui exportar todos os dados para o excel, mas fui formatar a planilha e deu pau. Removi todas as formatações, mas mesmo assim não consigo exportar.
Utilizo o Apache POI 3.9, porém já testei com 3.8 e 3.6, e não obtive sucesso.

Acredito que seja problema de lógica, pois consigo exportar a planilha normalmente somente com os títulos que informei de forma fixa na classe de exportação, já os dados de persistência, não aparecem na planilha do excel.

Já tentei de tudo, se alguém tiver ideia, agradeço. O problema deve estar no “for” da classe de exportação.

Abraços e agradeço desde já.

Ninguém tem idéia do que pode ter acontecido???

Bom dia pessoal, ainda não consegui solucionar este problema. Se alguém puder me ajudar… Abraços.

Problema solucionado reconfigurando a variável de ambiente para o jdk mais atual que já estava instalado na maquina.