BlitzMX Posted June 12, 2013 at 10:09 PM Report #512477 Posted June 12, 2013 at 10:09 PM (edited) 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 June 13, 2013 at 10:09 AM by BlitzMX
bioshock Posted June 13, 2013 at 02:09 PM Report #512637 Posted June 13, 2013 at 02:09 PM 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];
BlitzMX Posted June 13, 2013 at 06:55 PM Author Report #512737 Posted June 13, 2013 at 06:55 PM (edited) 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 June 13, 2013 at 06:55 PM by BlitzMX
BlitzMX Posted June 13, 2013 at 07:07 PM Author Report #512741 Posted June 13, 2013 at 07:07 PM (edited) 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 June 13, 2013 at 07:42 PM by BlitzMX
BlitzMX Posted June 13, 2013 at 07:46 PM Author Report #512748 Posted June 13, 2013 at 07:46 PM (edited) 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 June 13, 2013 at 07:48 PM by BlitzMX
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now