Newsgroup: it.comp.lang.visual-basic
Titolo: Passaggio dati da DataGrid a Excel

Ciao, ho fatto una piccola applicazione che effettua una query su un DB
Oracle e mi mette i valori su una DataGrid. Dovrei a questo punto
passare questi dati ad un foglio Excel, in pratica cliccando su un
pulsante devo aprire Excel (fino a qui ci sono...) e passargli il
contenuto della datagrid. Gradirei un consiglio. Grazie
Lorenzo


 Bastet racconta in giro che

Visto che il Foglio Excel lo puoi considerare una griglia
la cosa viene molto facile
Cicli la tua Datagrid e
    all'interno cicli il Foglio Excel
        agendo direttamente sull'insieme Cells(x,y).Value=Valoredellagriglia
    fine ciclo Excel
fine ciclo Datagrid
spero che tu non abbia lanciato il foglio Excel con Shell però
altrimenti cambia tutto...;)
Esempio qui ti ho lasciato qualche esempio su come impostare
Font,Alignment,Bordi delle celle,Range
Tutte queste cosine sono registrabili da Macro all'interno di excel
Nota questo esempio non è funzionante...in ogni caso devi riadattarlo
Importante devi caricare il riferimento Object Library di Excel appropriato
nel tuo Progetto.
'Istanziamo la nostra applicazione Excel
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Item(1) 'Item(1) primo Foglio in Excel
'Incominciamo a lavorare con gli oggetti di Excel
xlSheet.Activate
xlSheet.Visible='qui puoi decidere se visualizzare o meno l'applicazione
Excel
'Disegna Bordo su Intestazione
 xlSheet.Range("B1:B7").BorderAround ColorIndex:=0, Weight:=xlThin
'Imposta la larghezza delle Colonne Header "A","B","C" ecc...
 xlSheet.Columns("A").ColumnWidth = xlSheet.Columns("A").ColumnWidth * 2.4
 xlSheet.Columns("B").ColumnWidth = xlSheet.Columns("B").ColumnWidth * 7
 xlSheet.Columns("C").ColumnWidth = xlSheet.Columns("C").ColumnWidth * 2.4
 xlSheet.Columns("D").ColumnWidth = xlSheet.Columns("D").ColumnWidth * 2.4
 xlSheet.Cells(1, 2).Value = "per esempio"
 xlSheet.Cells(2, 2).Value =
 xlSheet.Cells(3, 2).Value =
 xlSheet.Cells(4, 2).Value =
 xlSheet.Cells(5, 2).Value =
 xlSheet.Cells(6, 2).Value =
 xlSheet.Cells(7, 2).Value =
 'Allineamento di un Range
xlSheet.Range("B1:B7").HorizontalAlignment = xlCenter
 If lblini = "" Then
      xlSheet.Cells(8, 1).Value = "Elaborato il : " & Format(Now,
"dd/mm/yy")
 Else
      xlSheet.Cells(8, 1).Value = "Elaborato Dal : " & lblini & " al : " &
lblfin
 End If
 xlSheet.Cells(8, 1).Font.Bold = True
 'Setta Colore di Backgrounfd x celle specificate
  xlSheet.Cells(8, 1).Interior.ColorIndex = 35
  xlSheet.Cells(9, 3).Interior.ColorIndex = 35
  xlSheet.Cells(9, 4).Interior.ColorIndex = 35
'Assegno qualsiasi valore
  xlSheet.Cells(9, 3).Value = Flex1.TextMatrix(0, 1)
  xlSheet.Cells(9, 4).Value = Flex1.TextMatrix(0, 2)
  'Allineamento delle Celle
   xlSheet.Cells(9, 4).HorizontalAlignment = xlRight
   xlSheet.Cells(9, 3).HorizontalAlignment = xlRight
   'xlSheet.Columns(1).Width = 5000
'Veniamo ad un esempio di ciclo
 For x = 0 To Flex1.Rows -1
     xlSheet.Cells(x + 1, 1).Formula = Flex1.TextMatrix(x,0)
     'qui è solo per una colona se invece vuoi tutto
     'beh basta annidare un ulteriore ciclo per le colonne
     'For j=0 to Flex1.Cols-1
next
'Io ho usato una flex ma tu riadatti per il Datagrid
'Esempio Salvo il File
xlSheet.SaveAs FileName:="c:\" & App.EXEName
'Chiudo l'applicazione e libero la
'Memoria
xlBook.Close
xlApp.Workbooks.Close
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
Cerca se puoi una guida di riferimento alla programmazione in VBA
Salut
Alessandro
-- 
Morfeus®
Free Joint
 :PII

Grazie mille, sul sito ho trovato anche un'applicazione 'ToExcel' che può
tornarmi utile...
"Morfeus®" ha scritto:
