Jump to content

Ler ficheiro Excel com DataSet e DataTableReader


Recommended Posts

Posted (edited)

Boas pessoal, este post não é acerca de nenhuma dúvida que eu tenha, pelo contrário, apenas decidi partilhar uma forma de ler um ficheiro Microsoft Excel usando um DataSet e um DataTableReader. A razão para isto é que eu estava precisar de o fazer e fiz umas pesquisas pela internet mas o código que encontrei não usava o DataTableReader. Mas usando o DataTableReader tornamos o código muito menos extenso, portanto decidi postar aqui a minha forma de ler o ficheiro, espero que possa ajudar alguém que possa vir a precisar.

E aqui está o código que lê o ficheiro Excel:

String folhaCalculo = "Nome_da_folha_de_Calculo";
	 OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + caminho_para_o_ficheiro + ";Extended Properties=Excel 12.0;");
	 con.Open();
	 DataSet excelDataSet = new DataSet();
	 OleDbDataAdapter query = new OleDbDataAdapter(" SELECT * FROM [" + nome_da_folha_de_calculo + "$]", con);
	 DataTable dataTable = new DataTable();
	 query.Fill(dataTable);
	 DataTableReader tblReader = new DataTableReader(dataTable);
	 while (tblReader.Read())
	 {
// A primeira célula de cada coluna não é lida como dados, mas sim como o identificador dessa coluna
<RichTextBox>.AppendText(tblReader["Nome_Da_Primeira_Célula_Da_Coluna"].ToString());
}
	 con.Close();

Para ler ficheiros .xlsx é necessário descarregar o ACE da Microsoft para ler a partir do ficheiro Excel, que pode ser facilmente descarregado deste link:

http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

E usa-se a connection string que usei em cima: "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + <caminho_para_o_ficheiro> + ";Extended Properties=Excel 12.0;"

Esta funciona mesmo para o Office 2010

Para ler ficheiros .xls usa-se o Jet, também da Microsoft, mas que não é necessário descarregar e a connection string:

"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" + <caminho_para_o_ficheiro> + ";Extended Properties=""Excel 8.0;HDR=YES;"""

Penso que está tudo e que não há erros.

Espero que este post possa vir a servir de ajuda.

Edited by Pedro B

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.