|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
[VB] Estrarre dati da Excel
Ho un foglio di Excel, e vorrei estrarre dei dati da una colonna ben precisa per poi archiviarli in un Database.
es: Nella colonna "A" ci sono elencati i "Nomi" Nella colonna "B" ci sono elencati i "Cognomi" Con VB.NET, come posso creare un Ciclo "WHILE" o "FOR" oppure un "DataSet" che mi estragga i dati da Excel ??? Poi li archivio nel mio Database...!!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Sono riuscito a connettermi al foglio di EXCEL, ora vorrei fare un "SELECT" ma non trovo informazioni sufficenti, mi date una mano ???
Vorrei fere un SELECT * FROM ??? oppure: selezionare la colonna interessata tipo: SELECT A FROM ??? ??? stanno per "non so cosa mettere" Aiuto!!! Codice:
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\x\aaa.xls;" & _
"Extended Properties=""Excel 8.0;HDR=No""")
conn.Open()
Dim comm As New OleDbCommand("SELCT * FROM -cosa metto???-", conn)
Dim read As OleDbDataReader
read = comm.ExecuteReader
read.Read()
MsgBox(read("-cosa metto???-"))
read.Close()
conn.Close()
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
In "FROM" devi indicare la tabella/tabelle interessate dalla query. Ad es. se vuoi estrarre tutti i dati dalla colonna pippo nella tabella pluto, basta che esegui "select pippo from pluto"
Non mi chiedere però se gli oggetti che stai usando sono corretti, questo non lo so.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Tu mi stai dicendo come fare una semplice Query, io sto' parlando di una query su un foglio di EXCEL, quindi:
per nometabella cosa si intende??? e per nome cella cosa si intende ??? |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Ah credevo che dovevi prendere i dati da un db esterno
Provato con il nome del foglio?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Devi per forza connetterti come un DB? Altrimenti potresti in maniera abbastanza facile così:
Codice:
Sub SelectCells()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(FileName:="c:\My Documents\TestBook1.xls")
Set xlSheet = xlBook.ActiveSheet
xlApp.Visible = True
MsgBox(xlSheet.cells[0,0])
End Sub
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
ok sei un grande, solo un ultima cosa ,
quale Namesystem devo importare ??? Imports ??? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Ma mi apre un foglio di Excel !!!
Io vorrei Usare Excel proprio come un Database Leggere i campi Scrivere i campi Eliminare i campi ma non aprirlo per visualizzare il risultato ho dovuto modificare la : MsgBox(xlSheet.Cells(1, 1)) ma mi da ancora un errore: Informazioni aggiuntive: Impossibile convertire l'argomento "Prompt" nel tipo "String". allora io ho fatto: MsgBox(xlSheet.Cells(1, 1).ToString) e quindi mi da: System._ComObject Come devo fare??? |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Devi spulciarti un pò di documentazione sul vba di Excel, ricordo solo che accedere alle celle non è affatto difficile. Io gestivo (modificavo) addirittura i grafici...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Io non programmo in VB ma mi sono interessato all'automation con Excel tramite C#... anyway:
per non farlo aprire: xlApp.visible= false; in generale non penso sia necessario importare un namespace poiché il VB.NET istanzia direttamente l'oggetto COM non gestito (infatti se ti va tutto questo è la riprova...); se vuoi lavorare con codice gestito (con C# ho fatto così) devi scaricarti da microsoft gli oxppia che sono i wrapper gestiti agli oggetti COM. Poi guardati la documentazione di Excel che si trova più o meno qua: "E:\Programmi\Microsoft Office\Office10\1040\VBAXL10.CHM" Se non c'è devi installartela da Office ("Documentazione VBA" o qualcosa del genere). Lì trovi tutto il DOM di Excel con il quale puoi lavorare tranquillamente. Naturalmente come diceva ilsensine puoi modificare anche i grafici (leggi doc). per modificare una cella semplicemente: xlSheet.Cells[1,1]="Pippo" Ciaociao Soalle |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
oppss sì.... l'ho scritto un po' troppo C or Java-like...
ho trovato anche questo: Dim xlApp as Excel.Application Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Add xlApp.Sheets(1).Cells(1.1).Select xlApp.ActiveCell.Value = 10 cerca sul sito MS Office XP automation... |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Guarda l'allegato......
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Considera che VB non lo conosco... ma penso appunto che si debbano usare le ( )....
Poi VB è case-sensitive? Se sì, Cells va con la maiuscola... |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Fermi tutti, mi viene un sospetto...credo che "Cells" ritorni un oggetto composto da un insieme di celle, forse bisogna usare qualche altro metodo (prova Range, tratto da un esempio postato da Aragon qualche post più in basso)
Che schifo, non mi ricordo più nulla...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
beh non ci giurerei... forse è un metodo alternativo per selezionare più celle...
Ho trovato anche questo: xlSheet.Range(xlSheet.Cells(1,1), xlSheet.Cells(3,3)).Value = 1000 |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Direi risolto l'arcano...
Set xlBook = xlApp.Workbooks.Add() xlBook.Worksheets(1).Cells(1, 1).Value = "Hello" xlBook.SaveAs "C:\Book1.xls" xlBook.Close Set xlBook = Nothing e così per leggere una cella suppongo bisogna usare: MsgBox(xlBook.Worksheets(1).Cells(1, 1).Value) |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Non e' Case sensitivo VB e neppure VB.NET
PS. IO SONO IN VB.NET ...!!! le parentesi vanno tonde non quadre in VB... questo e' un esempi del codoce che uso per inserire i campi in modalita' uno ad uno: Codice:
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add
oSheet = oBook.Worksheets(1)
oSheet.Range("A1").Value = "Nome"
oSheet.Range("B1").Value = "Cognome"
oSheet.Range("A1:B1:C1:D1").Font.Bold = True
oSheet.Range("A2").Value = "Mario"
oSheet.Range("B2").Value = "Rossi"
oBook.SaveAs("c:\x\" & "aaa.xls")
oSheet = Nothing
oBook = Nothing
oExcel.Quit()
oExcel = Nothing
GC.Collect()
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
cmq mi ero scritto un piccolo howto sugli oggetti com di excel, visto che conosco bene la mia memoria. Stasera cerco di ritrovarlo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:48.


















