Usuário com melhor resposta
ALGUNS DADOS NÃO SÃO EXIBIDOS NO DATAGRIDVIEW

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?
- Editado JehanKheller sábado, 4 de agosto de 2018 00:08
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.
- Marcado como Resposta Levi DomingosModerator segunda-feira, 10 de setembro de 2018 21:10
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.
-
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.
- Marcado como Resposta Levi DomingosModerator segunda-feira, 10 de setembro de 2018 21:10