com.br.uepb.bsc7.www.UI.ManipulaXLS.java Source code

Java tutorial

Introduction

Here is the source code for com.br.uepb.bsc7.www.UI.ManipulaXLS.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 com.br.uepb.bsc7.www.UI;

import com.br.uepb.bsc7.www.persistence.TesteInsereBD;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
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 Diego
 */
public class ManipulaXLS {

    HSSFWorkbook wb;
    ArrayList<String> dados = new ArrayList<>();

    //Tem acesso  Pasta de Trabalho
    /*private static HSSFWorkbook leArquivoXLS(String filename) throws IOException {
    FileInputStream fileInputStream = new FileInputStream(filename);
    try {
    return new HSSFWorkbook(fileInputStream);
    //Colocar um catch aqui?
    } finally {
    fileInputStream.close();
    }
    }*/

    public /*static*/ void leXLS(String filename) throws IOException {
        System.out.println("Mtodo leXLS chamado!");
        FileInputStream fileInputStream = new FileInputStream(filename);
        try {
            //Obtem acesso  pasta de trabalho
            wb = new HSSFWorkbook(fileInputStream);
            //Obtem acesso  planilha Plan1
            HSSFSheet s = wb.getSheet("Plan1");

            Iterator<Row> rowIterator = s.rowIterator();

            while (rowIterator.hasNext()) {
                System.out.println("Nova linha!");
                //Obtem acesso a cada linha de Plan1
                Row linha = rowIterator.next();

                Iterator<Cell> cellIterator = linha.cellIterator();

                while (cellIterator.hasNext()) {
                    //Obtem acesso a cada clula de cada linha de Plan1
                    Cell celula = cellIterator.next();
                    //System.out.println(celula.getStringCellValue());

                    //Adiciona o valor de cada clula ao ArrayList que ser passado a DAO
                    dados.add(celula.getStringCellValue());
                    //
                }

                //Chamada ao mtodo do BD que recebe o ArrayList (Deve estar em DAO)
                new TesteInsereBD().insereLinha(dados, dados.size());
                //Limpa o ArrayLista para preench-lo novamente
                dados.clear();
            }
            //Corrigir este catch com algo mais eficiente
        } catch (IOException ex) {
            System.out.println("Teste");
        }
    }

    //Verso sem JTable
    public /*static*/ void criaXLS1(String arqSaida, String nomePlan) throws IOException, NullPointerException {

        int numLinhas = 5;
        int numCelulas = 2;

        //Cria pasta de trabalho
        wb = new HSSFWorkbook();
        //Cria planilha
        HSSFSheet s = wb.createSheet(nomePlan);
        //wb.setSheetName(0, nomePlan);

        //Alterar para a quantidade de linhas retornada por cada relatrio
        for (int i = 0; i < numLinhas; i++) {

            //Cria a linha
            HSSFRow linha = s.createRow(i);

            //Alterar para a quantidade de clulas retornada por cada relatrio
            for (int j = 0; j < numCelulas; j++) {
                HSSFCell celula = linha.createCell(j);

                /*O valor passado deve ser de acordo com aquele recebido por cada relatrio, 
                            provavelmente String;*/
                //celula.setCellValue((String) tabela.getValueAt(i, j));
                celula.setCellValue(i + j);
            }
        }

        FileOutputStream fileOutputStream = new FileOutputStream(arqSaida + ".xls");
        try {
            wb.write(fileOutputStream);
            //Fecha o fileOutputStream
            //Melhorar este catch    
        } catch (IOException ex) {
            System.out.println("Teste");
        } finally {
            fileOutputStream.close();
            wb.close(); //Fecha a pasta de trabalho
        }
    }

    //Verso com JTable
    public /*static*/ void criaXLS(JTable tabela, String arqSaida, String nomePlan)
            throws IOException, NullPointerException {
        int numLinhas = tabela.getRowCount();
        int numCelulas = tabela.getColumnCount();

        //Cria pasta de trabalho
        wb = new HSSFWorkbook();
        //Cria planilha
        HSSFSheet s = wb.createSheet(nomePlan);
        //wb.setSheetName(0, nomePlan);

        //Alterar para a quantidade de linhas retornada por cada relatrio
        for (int i = 0; i < numLinhas; i++) {

            //Cria a linha
            HSSFRow linha = s.createRow(i);

            //Alterar para a quantidade de clulas retornada por cada relatrio
            for (int j = 0; j < numCelulas; j++) {
                HSSFCell celula = linha.createCell(j);

                /*O valor passado deve ser de acordo com aquele recebido por cada relatrio, 
                            provavelmente String;*/
                celula.setCellValue((String) tabela.getValueAt(i, j));
            }
        }

        FileOutputStream fileOutputStream = new FileOutputStream(arqSaida + ".xls");
        try {
            wb.write(fileOutputStream);
            //Fecha o fileOutputStream
            //Melhorar este catch    
        } catch (IOException ex) {
            System.out.println("Teste");
        } finally {
            fileOutputStream.close();
            wb.close(); //Fecha a pasta de trabalho
        }
    }

    public static void main(String[] args) {
        ManipulaXLS obj = new ManipulaXLS();
        String nomeArquivo = JOptionPane.showInputDialog("Digite o endereo");
        try {
            obj.leXLS(nomeArquivo);
        } catch (IOException ex) {
            Logger.getLogger(ManipulaXLS.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}