none
ALGUNS DADOS NÃO SÃO EXIBIDOS NO DATAGRIDVIEW RRS feed

  • Pergunta

  • Olá.

    Estou enfrentando um problema incomum quanto à exibição de uma planilha *.xls em um DataGridView.

    Esta, é a estrutura da planilha:

    E esta, é o DataGridView exibindo a planilha:

    Note, que a primeira e segunda coluna é exibida no DataGridView, porém, as colunas que deveriam estar o Número do Documento e Valor, não é exibido.

    O Código que estou utilizando para exibir é o seguinte:

    private DataTable GetTabelaExcel(string arquivoExcel, string parametroBusca) { DataTable dataTable = new DataTable(); try { // pega a extensão do arquivo string Ext = Path.GetExtension(arquivoExcel); string connectionString = string.Empty; // verifica a versão do Excel pela extensão if (Ext == ".xls") { // para o Excel 97-2003 connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES'"; } else if (Ext == ".xlsx") { // para o Excel 2007 e superior connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES'"; } OleDbConnection oleDbConnection = new OleDbConnection(connectionString); OleDbCommand oleDbCommand = new OleDbCommand(); OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(); oleDbCommand.Connection = oleDbConnection; oleDbConnection.Open(); DataTable dtSchema; dtSchema = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string nomePlanilha = dtSchema.Rows[0]["TABLE_NAME"].ToString(); oleDbConnection.Close(); // le todos os dados da planilha para o Data Table oleDbConnection.Open(); oleDbCommand.CommandText = "SELECT * FROM [" + nomePlanilha + parametroBusca + "]"; oleDbDataAdapter.SelectCommand = oleDbCommand; oleDbDataAdapter.Fill(dataTable); oleDbConnection.Close(); } catch (Exception ex) { throw ex; } return dataTable; }

    private void CarregarDadosConsisaNet()
    {
      // Converte os dados do Excel para um DataTable
            DataTable dataTable = GetTabelaExcel(planilhaConsisaNet, string.Empty);
            dataGridViewConsisaNet.DataSource = dataTable;
    }

    Alguém poderia me dar uma ideia do por que isso está ocorrendo?

    sexta-feira, 3 de agosto de 2018 14:10

Respostas

  • Olá Felipe.

    Sim e não.

    Não sei o por que. Mas somente nesta planilha acontece isso.

    O que fiz foi trocar:

    stringConexao = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES'";

    Por:

    stringConexao = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES;IMEX=1'";

    Se eu li bem, a propriedade IMEX, define a forma com que é lida a planilha. No caso '1', ela é lida como texto. Não entendi muito bem, mas está funcionando corretamente.

    Muito obrigado pelo contato e interesse nesta questão.

    terça-feira, 21 de agosto de 2018 17:42

Todas as Respostas

  • Boa noite, 

    Conseguiu algum avanço no caso? 

    Se ainda não o que precisa?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 17 de agosto de 2018 22:40
    Moderador
  • Olá Felipe.

    Sim e não.

    Não sei o por que. Mas somente nesta planilha acontece isso.

    O que fiz foi trocar:

    stringConexao = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES'";

    Por:

    stringConexao = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + arquivoExcel + "; Extended Properties = 'Excel 8.0;HDR=YES;IMEX=1'";

    Se eu li bem, a propriedade IMEX, define a forma com que é lida a planilha. No caso '1', ela é lida como texto. Não entendi muito bem, mas está funcionando corretamente.

    Muito obrigado pelo contato e interesse nesta questão.

    terça-feira, 21 de agosto de 2018 17:42