Jump to content
Sign in to follow this  
BlitzMX

de Excel para DatagreedView

Recommended Posts

BlitzMX

Editado a Bold.

Boa noite

Tenho um ficheiro que quero importar para um DataGreedView exactamente como está.

Ficheiro: c:\temp.xlsx

Folha: "Sheet1"

Coluna: A:A ou mais.

Consegui aos poucos interpretar o código e fui escrevendo comentários para entender o que vai acontecendo linha a linha.

Tudo parece funcionar mas nada aparece dentro do DatagreedView1.

Alguém pode ajudar?

Código que já tenho:

// Abre janela para selecionar ficheiro a importar.
	 OpenFileDialog ofImport = new OpenFileDialog();
	 // Define propriedades para a janela de selecionar ficheiro.
	 ofImport.Title = "Select file";
	 ofImport.InitialDirectory = @"c:\";
	 // ofImport.FileName = "temp.xlsx";
	 ofImport.Filter = "Excel Sheet(*.xlsx)|*.xlsx|All Files(*.*)|*.*";
	 ofImport.FilterIndex = 1;
	 ofImport.RestoreDirectory = true;

	 if (ofImport.ShowDialog() == DialogResult.OK)
	 {
		 // Define Caminho completo para ficheiro em STRING.
		 string path = System.IO.Path.GetFullPath(ofImport.FileName);
		 // Define pedido a fazer em forma de STRING.
		 string query = "SELECT * FROM [sheet1$]";

		 // Define ligação como nova ligação OleDB.
		 OleDbConnection conn = new OleDbConnection();
		 // Define linha de comunicação com todos os dados recuperados até aqui.
		 conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ofImport.FileName + ";Extended Properties=" + "\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";
		 // Define adaptador para pedido "query" (tipo string) ao adaptador que comunica com o ficheiro excel através da ligação CONN definida anteriormente.
		 OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
		 DataSet dataSet = new DataSet();

		 adapter.Fill([b]dataset[/b]);
		 dataGridView1.DataSource = [b]dataset[/b];

	 }
	 else
	 {
		 ofImport.Dispose();
	 }

Edited by BlitzMX

Share this post


Link to post
Share on other sites
bioshock

Como isto é para ler via Excel, pode ser diferente, mas troca as tuas linhas actuais por estas:

DataSet dataSet = new DataSet();
adapter.Fill(dataset, "[sheet1$]");
dataGridView1.DataSource = dataSet.Tables[0];

Share this post


Link to post
Share on other sites
BlitzMX

Como isto é para ler via Excel, pode ser diferente, mas troca as tuas linhas actuais por estas:

DataSet dataSet = new DataSet();
adapter.Fill(dataset, "[sheet1$]");
dataGridView1.DataSource = dataSet.Tables[0];

Funcionou impecavelmente....

Não quero abusar mas onde posso encontrar informação para agora trabalhar em cima deste DataGreedView1?

Quero:

- Eliminar colunas que não preciso.

- Verificar dados célula a célula (Presumo que deva precisar de um for loop qualquer até que as células estejam vazias).

- Por cada célula meter o dado numa variável e depois usa-la para outras finalidades.

Muito Obrigado

O que é Portugues é Bom, em mais lado nenhum me conseguiram responder a isto de forma tão simples e eficaz.

Edited by BlitzMX

Share this post


Link to post
Share on other sites
BlitzMX

Preciso de correr as células todas de uma determinada coluna, ler os dados e usa-los para outra coisa.

Encontrei isto:

string str;
str = DataGridView.SelectedRows[0].Cells[0].Value.ToString();
txtIdOrdem.Text = str;

ERRO: Error 1 An object reference is required for the non-static field, method, or property 'System.Windows.Forms.DataGridView.SelectedRows.get' D:\Documents and Settings\p053733\Desktop\Visual Studio 2010\EXCEL-ACL\EXCEL-ACL\Form1.cs 104 19 EXCEL-ACL

Edited by BlitzMX

Share this post


Link to post
Share on other sites
BlitzMX

Preciso de correr as células todas de uma determinada coluna, ler os dados e usa-los para outra coisa.

Encontrei isto:

string str;
str = DataGridView.SelectedRows[0].Cells[0].Value.ToString();
txtIdOrdem.Text = str;

ERRO: Error 1 An object reference is required for the non-static field, method, or property 'System.Windows.Forms.DataGridView.SelectedRows.get' D:\Documents and Settings\p053733\Desktop\Visual Studio 2010\EXCEL-ACL\EXCEL-ACL\Form1.cs 104 19 EXCEL-ACL

Já encontrei.

string str = Convert.ToString(DataGridView1.Rows[0].Cells[0].Value);
txtIdOrdem.Text = str;

Ou melhor ainda:

txtIdOrdem.Text = Convert.ToString(DataGridView1.Rows[0].Cells[0].Value);

Edited by BlitzMX

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×
×
  • 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.