private String[] rowToStringArray(Row row) {
   stringCache.clear();
   for (Cell cell : CollectionUtils.asIterable(row.iterator())) {
     while (stringCache.size() < cell.getColumnIndex()) stringCache.add(""); // handle empty cells
     stringCache.add(formatter.formatCellValue(cell, evaluator));
   }
   return stringCache.toArray(new String[stringCache.size()]);
 }
Beispiel #2
0
  private List<ItemPlanilhaDownload> lerPlanilha(
      String path, Object workbook, Object sheet, Veiculo veiculo)
      throws IOException, ParseException {

    // formatar a data da planilha para o Obj
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    // Formatar a Hora da Planilha para o objeto
    SimpleDateFormat shf = new SimpleDateFormat("HH:mm:ss");

    FileInputStream fisPlanilha = null;

    // Lista de veiculos da planilha
    List<ItemPlanilhaUpload> lista = new ArrayList<ItemPlanilhaUpload>();

    ItemPlanilhaUpload item = new ItemPlanilhaUpload();

    File file = new File(path);
    fisPlanilha = new FileInputStream(file);
    Iterator<Row> rowIterator = null;

    if (workbook instanceof XSSFWorkbook) {
      workbook = new XSSFWorkbook(fisPlanilha);
      sheet = ((XSSFWorkbook) workbook).getSheet("Passagens de Pedágio");
      // retorna todas as linhas da planilha 0 (aba 1)
      rowIterator = ((XSSFSheet) sheet).iterator();
    } else {
      workbook = new HSSFWorkbook(fisPlanilha);
      sheet = ((HSSFWorkbook) workbook).getSheet("Passagens de Pedágio");
      // retorna todas as linhas da planilha 0 (aba 1)
      rowIterator = ((HSSFSheet) sheet).iterator();
    }

    // varre todas as linhas da planilha 0
    while (rowIterator.hasNext()) {

      // recebe cada linha da planilha
      Row row = rowIterator.next();

      if (row.getRowNum() == 0) {
        continue;
      }

      // pegamos todas as celulas desta linha
      Iterator<Cell> cellIterator = row.iterator();

      // varremos todas as celulas da linha atual
      while (cellIterator.hasNext()) {

        // criamos uma celula
        Cell cell = cellIterator.next();

        if (cell.getColumnIndex() == 0) {
          item.setPlaca(cell.getStringCellValue());
        } else if (cell.getColumnIndex() == 2) {
          item.setCategoria(Integer.valueOf(cell.getStringCellValue()));
        } else if (cell.getColumnIndex() == 3) {

          item.setData(sdf.parse(cell.getStringCellValue()));

        } else if (cell.getColumnIndex() == 4) {

          item.setHora(shf.parse(cell.getStringCellValue()));

        } else if (cell.getColumnIndex() == 5) {
          item.setConcessionaria(cell.getStringCellValue());
        } else if (cell.getColumnIndex() == 6) {
          item.setPraca(cell.getStringCellValue());
        }
        if (cell.getColumnIndex() == 7) {
          if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
            item.setValor(cell.getNumericCellValue());
          } else {
            item.setValor(0.0);
          }
          lista.add(item);
          item = new ItemPlanilhaUpload();
        }
      }
    }
    fisPlanilha.close();
    return this.makeTheMagic(lista, veiculo);
  }
  /**
   * @param planilha objeto do tipo Planilha que contém todos os dados necessários para facilitar a
   *     operação na planilha
   */
  public void processaPlanilha(Planilha planilha) throws NegocioException {
    List<Desembolso> dadosParaSalvar = new ArrayList();
    int linha = 0;
    Double d;
    try {

      // cria um workbook = planilha toda com todas as abas
      XSSFWorkbook workbook = new XSSFWorkbook(planilha.getFile());

      // recuperamos apenas a aba mandada
      XSSFSheet sheet = workbook.getSheetAt(planilha.getNumeroDaPlanilha() - 1);

      // retorna todas as linhas da planilha selecioada
      Iterator<Row> rowIterator = sheet.iterator();

      // varre todas as linhas da planilha selecionada
      while (rowIterator.hasNext() && linha < planilha.getUltimaLinha()) {
        linha++;

        // recebe cada linha da planilha
        Row row = rowIterator.next();

        // andar as linhas que serão ignoradas no início
        if (row.getRowNum() < planilha.getUltimaLinha()) {
          continue;
        }

        // pegamos todas as celulas desta linha
        Iterator<Cell> cellIterator = row.iterator();

        // responsavel por definir qual coluna esta sendo trabalhada no intante
        int coluna = 1;

        Cell cell;

        Desembolso desembolso = new Desembolso();
        // varremos todas as celulas da linha atual
        while (cellIterator.hasNext()) {
          // criamos uma celula
          cell = cellIterator.next();

          // TODO O CÓDIGO DE PERSISTENCIA AQUI!!

          switch (coluna) {
            case ColunasDesembolso.GRUPO:
              desembolso.setGrupo(cell.getStringCellValue());
              break;
            case ColunasDesembolso.PREFIXO_SUPER_INTENDENCIA:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setPrefixoSuperintendencia(cell.getStringCellValue());
              break;
            case ColunasDesembolso.NOME_SUPER_INTENDENCIA:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setNomeSuperintendencia(cell.getStringCellValue());
              break;
            case ColunasDesembolso.PREFIXO_REGIONAL:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setPrefixoRegional(cell.getStringCellValue());
              break;
            case ColunasDesembolso.NOME_AGENCIA:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setNomeAgencia(cell.getStringCellValue());
              break;
            case ColunasDesembolso.ORCAMENTO_PROPOSTO_ACUMULADO:
              desembolso.setOrcamentoPropostoAcumulado(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.REALIZADO_ATUAL:
              desembolso.setRealizadoAtual(this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.PERCENTUAL_ATINGIMENTO_UM:
              desembolso.setPercentualAtingimentoUm(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.REALIZADO_D_MENOS_UM:
              desembolso.setRealizadoDmenosUm(this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.NECESSIDADE_DIA_MENOS_UM:
              cell.setCellType(Cell.CELL_TYPE_NUMERIC);
              desembolso.setNecessidadeDiaDmenosUm(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.META_CONTATOS_ACUMULADA:
              cell.setCellType(Cell.CELL_TYPE_NUMERIC);
              desembolso.setMetaContatosAcumulada(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.REALIZADO_CONTATOS_MES:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setRealizadoContatosMes(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.PERCENTUAL_ATINGIMENTO_CONTATOS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setPercentualAtingimentoContatos(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.CONTATOS_D_MENOS_UM:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setContatosDmenosUm(this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.CONTATOS_D_MENOS_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setContatosDmenosDois(this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.PREFIXO_REPETE:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setPrefixoRepete(cell.getStringCellValue());
              break;
            case ColunasDesembolso.AGENCIA_REPETE:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setAgenciaRepete(cell.getStringCellValue());
              break;
            case ColunasDesembolso.CODIDGO_CARTEIRA:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setCodigoCarteira(cell.getStringCellValue());
              break;
            case ColunasDesembolso.CARTEIRA:
              cell.setCellType(Cell.CELL_TYPE_STRING);
              desembolso.setCarteira(cell.getStringCellValue());
              break;
            case ColunasDesembolso.ORCAMENTO_PROPORCIONAL_ACUMULADO_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setOrcamentoProporcionalAcumuladoDois(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.REALIZADO_ATUAL_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setRealizadoAtualDois(this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.PERCENTUAL_ATINGIMENTO_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setPercentualAgintimentoDois(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.META_CONTATOS_ACUMULADA_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setMetaContatosAcumuladaDois(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.REALIZADO_CONTATOS_MES_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setRealizadoContatosMesDois(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
            case ColunasDesembolso.PERCENTUAL_ATINGIMENTO_CONTATOS_DOIS:
              cell.setCellType(cell.CELL_TYPE_NUMERIC);
              desembolso.setPercentualAtingimentoContatosDois(
                  this.doubleToBigDecimal(cell.getNumericCellValue()));
              break;
          }

          System.out.println("valor = " + cell.toString());

          coluna++;
        }
        dadosParaSalvar.add(desembolso);
      }
      this.salvar(dadosParaSalvar);

    } catch (FileNotFoundException ex) {
      throw new NegocioException("Arquivo com Erro Tente novamente!!");
    } catch (IOException ex) {
      throw new NegocioException("Arquivo com Erro Tente novamente!!");
    }
  }