Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao ler linha de planilha Excel


rtavix

Pergunta

Pessoal, estou com o seguinte problema no meu código, eu não estou conseguindo gravar a primeira linha da planilha Excel, porém eu consigo gravar somente da segunda linha adiante, quando eu faço a consulta no meu banco de dados não aparece o nome da pessoa da primeira linha, que no caso se chama interessado lá no banco de dados, somente da segunda a diante que grava. Printei as imagens para vocês poderem visualizar na prática, consigo ler os três registros da planilha, porém não consigo gravar o da primeira linha, pega somente da segunda linha adiante galera. postarei meu código, preciso finalizar isso até quarta, queria ver se alguém pode me ajudar. Alguém sabe o que posso aplicar para resolver olhando meu código? Vou postar também meu código para ficar melhor a entender. No interessado mostra como tipo nulo e dá o seguinte erro:

NHibernate.Exceptions.GenericADOException: could not insert: [SDPJDominio.Domain.Interessado#19516][SQL: INSERT INTO sdpj_interessado (TIP_INTERESSADO, CPF_CNPJ_INTERESSADO, NME_INTERESSADO, DSC_ENDERECO, NUM_ENDERECO, DSC_COMPLEMENTO, NUM_CEP, COD_BAIRRO, COD_MUNICIPIO, COD_INTERESSADO) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] ---> Oracle.DataAccess.Client.OracleException:

ORA-01400: não é possível inserir NULL em ("U_SDP"."SDPJ_INTERESSADO"."NME_INTERESSADO")

 

Meu código:

 

 protected void importar_Click(object sender, EventArgs e)
        {

            DataTable Dados = new DataTable();

            if (selecionarArquivo.HasFile)
            {
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
                else
                {
                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);
                        Dados = DadosExcel(Excel);

                        var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
                        registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);

                        int quantidade_por_pagina = 100;
                        int total_de_paginas;
                        int qtd_total_registros = registrosValidos.Count();
                        total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);


                        bool layoutValido = VerificaLayout(Dados);



                        if (!layoutValido)
                            ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                        else
                        {
                            VerificacaoPreliminar(registrosValidos);

                            List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();


                            for (int i = 0; i < total_de_paginas; i++)
                            {
                                var pagina = i;

                                var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);


                                var data_rows_divididos = linhasPorPagina.SplitList(10);


                                foreach (var aaa in data_rows_divididos)
                                {
                                    TarefasParalelas.Add(ProcessamentoTabela(aaa));
                                }
                            }


                            foreach (var tarefa in TarefasParalelas)
                                tarefa.Start();


                            System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());


                            ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                            if (listaGravarProcInter.Count != 0)
                            {
                                var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
                                foreach (ProcessoInteressado item in ListaSemDuplicados)
                                {
                                   
                                    
                                    aplProcessoInteressado.salvar(item);
                                }
                            }

                            if (listaLogsAuditoria.Count != 0)
                            {
                                foreach (var item in listaLogsAuditoria)
                                {
                                    aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                }
                            }
                            else
                            {
                                logimportacao.Visible = true;
                                loglbl.Text = log.ToString();
                                //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                                ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                            }

                            /*else
                            {
                                logimportacao.Visible = true;
                                loglbl.Text = log.ToString();
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                            }*/
                        }
                    }
                }
            }

        }

        private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam)
        {
            Action<object> processamento = (dados) =>
            {

                NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.Teste().OpenSession());

                foreach (var linha in (IEnumerable<DataRow>)dados)
                {

                    List<Processo> listaProcessoExistente = new List<Processo>();
                    Processo processo = null;
                    Interessado interessado = new Interessado();


                    if (!arquivoInvalidado)

                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '30%';</script>");
                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros q tem interessados duplicados.
                    this.ValidaDuplicidadeInteressado();


                    if (!linha.ItemArray[1].ToString().Equals(""))
                        processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[1].ToString());
                    if (processo == null)
                    {
                        if (!linha.ItemArray[2].ToString().Equals(""))
                            processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[2].ToString());
                    }



                    if (linha.ItemArray[7].ToString().Length == 14)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                    if (linha.ItemArray[7].ToString().Length == 18)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));
                   


                    if (processo != null)
                    {

                        List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                        if (listaprocinter.Exists(o => o.Interessado == interessado))
                            log.Append("O interessado informado na linha " + (1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
                        
                      
                        setProcInter(processo, interessado, linha);
                    }
                    else
                    {
                        //Novo Processo - 6.3
                        processo = new Processo();

                        processo.Interessado = interessado;

                        processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                        processo.RenunciaCredito = "N";
                        processo.Situacao = new AplSituacao().ConsultarPorId(1);
                        processo.HonorarioDativo = "S";
                        processo.Reclamado = new AplReclamado().buscaItem(2);
                        processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                        processo.TipoProcesso = "O";
                        if (linha.ItemArray[5].ToString().Contains("juizado"))
                            processo.Tribunal = new AplTribunal().buscaItem(71);
                        else
                            processo.Tribunal = new AplTribunal().buscaItem(3);
                        processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                        VaraExecucao vara = new VaraExecucao();
                        if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                        {
                            List<VaraExecucao> listaVaraComarca = aplVaraExecucao.ConsultarPorNomeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                            if (listaVaraComarca.Count != 0)
                            {

                                if (linha.ItemArray[4].ToString().Equals(""))
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                }
                                else
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                }
                            }
                        }
                        if (vara != null && vara.Codigo != 0)
                        {
                            processo.VaraExecucao = vara;
                        }
                        else
                        {
                            logimportacao.Visible = true;
                            loglbl.Text = log.ToString();
                            ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                        }



                        var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
                        aplProcesso.gravar(processo);


                        /*aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                                + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                                + processo.Tribunal.NomeTribunal + ".", DateTime.Now);*/
                        //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");*/

                        setProcInter(processo, interessado, linha);
                    }

                }

                ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.Teste());
                if (sessao != null)
                {
                    if (sessao.Transaction != null && sessao.Transaction.IsActive)
                    {
                        sessao.Transaction.Rollback();
                    }
                    else
                    {
                        //sessao.Flush();
                    }
                    sessao.Close();
                }

            };

            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;
        }

        private Interessado setInteressado(DataRow linha)
        {
            Interessado interessado = new Interessado();
            AplMunicipio aplMunicipio = new AplMunicipio();
            AplBairro aplBairro = new AplBairro();


            interessado.Nome = linha.ItemArray[6].ToString().ToUpper();

            if (!linha.ItemArray[8].ToString().Equals(""))
                interessado.Endereco = linha.ItemArray[8].ToString().ToUpper();
            if (!linha.ItemArray[9].ToString().Equals(""))
                interessado.Numero = interessado.Complemento = linha.ItemArray[9].ToString();
            if (!linha.ItemArray[10].ToString().Equals(""))
                interessado.Complemento = linha.ItemArray[10].ToString().ToUpper();
            if (!linha.ItemArray[13].ToString().Equals(""))
            {
                //Municipio municipio = aplMunicipio.ConsultarPorNome(linha.ItemArray[13].ToString().ToUpper());
                Municipio municipio = this.listaMunicipios.Find(m => Utilitarios.RemoveAcentos(m.Nome).ToUpper() == Utilitarios.RemoveAcentos(linha.ItemArray[13].ToString()).ToUpper());
                if (municipio == null)
                {
                    municipio = new Municipio();
                    municipio.Estado = new AplEstado().buscaItem(1);
                    municipio.Nome = linha.ItemArray[13].ToString().ToUpper();

                    //obter lista sem registros duplicados (Robson)
                    var ListaSemDuplicados = listaMunicipios.Distinct().ToList();
                    aplMunicipio.gravar(municipio);
                }

                interessado.Municipio = municipio;// aplMunicipio.ConsultarPorNome(ds.Tables[0].Rows[i].ItemArray[13].ToString().ToUpper());

                if (!String.IsNullOrEmpty(linha.ItemArray[11].ToString()))
                {
                    //Bairro bairro = aplBairro.ConsultarPorNomeCodMunicipio(linha.ItemArray[11].ToString().ToUpper(), municipio.Codigo);
                    List<Bairro> listaBairro = aplBairro.ListaPorIdMunicipio(municipio.Codigo);
                    Bairro bairro = listaBairro.Find(b => Utilitarios.RemoveAcentos(b.Descricao).ToUpper() == Utilitarios.RemoveAcentos(linha.ItemArray[11].ToString()).ToUpper());
                    if (bairro == null)
                    {
                        bairro = new Bairro();
                        bairro.CodMunicipio = municipio;
                        bairro.Descricao = linha.ItemArray[11].ToString().ToUpper();
                        //obter lista sem registros duplicados (Robson)
                        var ListaSemDuplicados = listaBairro.Distinct().ToList();
                        aplBairro.gravar(bairro);
                    }
                    interessado.Bairro = bairro;// aplBairro.ConsultarPorNomeCodMunicipio(ds.Tables[0].Rows[i].ItemArray[11].ToString().ToUpper(), municipio.Codigo);
                }
            }
            if (!linha.ItemArray[12].ToString().Equals(""))
                interessado.Cep = linha.ItemArray[12].ToString();
            if (!linha.ItemArray[7].ToString().Equals(""))
                if (linha.ItemArray[7].ToString().Length == 14)
                {
                    interessado.CPF_CNPJ = AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString());
                    interessado.Tipo = 1;
                }
                else if (linha.ItemArray[7].ToString().Length == 18)
                {
                    interessado.CPF_CNPJ = AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString());
                    interessado.Tipo = 2;
                }
                else
                {
                    log.Append("O CPF/CNPJ informado na célula H" + ( 1) + " está em um formato incorreto. Favor corrigir a planilha. <br>");
                    arquivoInvalidado = true;
                }

            return interessado;

 

1250583.jpg

1250586.jpg

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...