Usuário com melhor resposta
Perde primeira linha ao ler arquivo do Excel

Pergunta
-
Pessoal,
Tenho o seguinte metodo para importar informacoes de uma planilha do Excel:public static DataSet XlsxToDataSet(string File) { DataSet ds = new DataSet(); OleDbDataAdapter MyCommand; OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + File + ";Extended Properties=Excel 12.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Plan1$]", MyConnection); MyCommand.TableMappings.Add("Table", "Table"); MyCommand.Fill(ds); MyConnection.Close(); return ds; }
O que esta acontecendo é que a primeira linha do arquivo Excel nao esta sendo importada. Alguem sabe o que poderia esta causando o problema?
Obrigado pela atenção.
Abs!
Respostas
-
Olá Marcelo,
Neste caso, o ADO.Net encara que a primeira linha das planilhas corresponde ao nome das colunas.
Se vc olhar os nomes das colunas do DataTable gerado vc verá que o nome das colunas corresponde aos valores da primeira linha.
public static DataSet XlsxToDataSet(string File) { DataSet ds = new DataSet(); OleDbDataAdapter MyCommand; OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + File + ";Extended Properties=Excel 12.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Plan1$]", MyConnection); MyCommand.TableMappings.Add("Table", "Table"); MyCommand.Fill(ds); MyConnection.Close(); foreach (DataColumn item in ds.Tables[0].Columns) {
// Nome das colunas Console.WriteLine(item.ColumnName); } return ds; }
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Marcelo Moreira Souza sexta-feira, 11 de maio de 2012 19:57
-
Marcelo você pode colocar uma propriedade na sua connectionstring chamada HDR, ela indica se no seu arquivo excel a primeira linha é o nome das colunas ou não:
"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.
http://connectionstrings.com/excel
Exemplo de connextionstring com HDR:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended Properties="Excel 12.0;HDR=NO";
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator sexta-feira, 11 de maio de 2012 20:34
Todas as Respostas
-
Olá Marcelo,
Neste caso, o ADO.Net encara que a primeira linha das planilhas corresponde ao nome das colunas.
Se vc olhar os nomes das colunas do DataTable gerado vc verá que o nome das colunas corresponde aos valores da primeira linha.
public static DataSet XlsxToDataSet(string File) { DataSet ds = new DataSet(); OleDbDataAdapter MyCommand; OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + File + ";Extended Properties=Excel 12.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Plan1$]", MyConnection); MyCommand.TableMappings.Add("Table", "Table"); MyCommand.Fill(ds); MyConnection.Close(); foreach (DataColumn item in ds.Tables[0].Columns) {
// Nome das colunas Console.WriteLine(item.ColumnName); } return ds; }
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Marcelo Moreira Souza sexta-feira, 11 de maio de 2012 19:57
-
-
Marcelo você pode colocar uma propriedade na sua connectionstring chamada HDR, ela indica se no seu arquivo excel a primeira linha é o nome das colunas ou não:
"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.
http://connectionstrings.com/excel
Exemplo de connextionstring com HDR:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended Properties="Excel 12.0;HDR=NO";
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator sexta-feira, 11 de maio de 2012 20:34