Utilizzare Excel da Visual Basic Net (Parte II)
Pagina 2 di 2
Inserimento dei valori nelle celle
Mi creo un array il quale mi servirà per valorizzare alcune celle (posso utilizzare anche un dataset o altro), la proprietà name dell’oggetto sheet imposta il nome del foglio, la proprietà cells permette di identificare una cella, la quale a sua volta ha delle proprietà (grassetto, dimensione carattere, ecc) che tramite l’assegnazione del numero di colonne e riga possiamo impostare.
Come si vede di seguito il codice dev’essere simile a quello riportato qui di seguito:
contatore di excel
Dim IntConta As Integer
'eventuali titolo array
Dim StrTitoloExcel() As String = {"Cognome" , "Nome" , "Voto" , "Città"}
'Imposto il nome del foglio
XlshDati.Name = “Esempio"
'valorizzo la prima riga
For IntConta = 0 To 3
With XlshDati.Cells(1, IntConta + 1)
'inserisco il valore
.value = StrTitoloExcel(IntConta)
'lo rendo in grassetto
.font.bold = True
'gli do la dimensione
.font.size = 14
'rendo la cella di dimensioni uguali al testo (autosize)
.EntireColumn.autofit()
End With
Next
'variabile che gestisce i dati anzichè un array possiamo utilizzare un dataset
Dim StrNomi(3, 4) As String
'per la colonna cognome
StrNomi(0, 1) = "Foti"
StrNomi(1, 1) = "Mattei"
StrNomi(2, 1) = "Foti"
'colonna nome
StrNomi(0, 2) = "Olga"
StrNomi(1, 2) = "Emanuele"
StrNomi(2, 2) = "Pino"
'per la colonna voti
StrNomi(0, 3) = "8"
StrNomi(1, 3) = "6"
StrNomi(2, 3) = "4"
'per la colonna città
StrNomi(0, 4) = "Reggio Calabria"
StrNomi(1, 4) = "Roma"
StrNomi(2, 4) = "Milano"
'variabile per la gestione delle righe
Dim IntContaRighe, IntContaColonne As Integer
'Ciclo per ogni riga
For IntContaRighe = 0 To 3
'ciclo per ogni colonna dove ci sono i dati
For IntContaColonne = 1 To 4
'le matrici inziano con 0 per ciò più due per le righe di excel
With XlshDati.Cells(IntContaRighe + 2, IntContaColonne)
.value = StrNomi(IntContaRighe, IntContaColonne)
.EntireColumn.autofit()
End With
Next
Next
Inserimento del grafico
A questo punto siamo arrivati alla parte più complessa, quella di inserire un grafico.
Per prima cosa dobbiamo selezionare i valori che ci interessano, tramite il metodo select dell’oggetto workbook, fatto ciò, dobbiamo inserire un grafico e indicare il tipo di grafico tramite la funzione SetSourceData a questo punto dobbiamo indicare in quale foglio di excel dev’èssere inserito (nuovo o sullo stesso) tramite la funzione location . Sarà nostro interesse aggiungere titoli, legende, ecc.
Come si vede di seguito il codice dev’essere simile a quello riportato qui di seguito:
'Seleziono i dati da utilizzare nel grafico
XlwbDati.Sheets("Dev Esempio").range("C2:C4" , "B2:B4").select()
With XlshDati.Application
'aggiungo un grafico
.Charts.Add()
'il tipo di grafico
.ActiveChart.ChartType = Excel.XlChartType.xl3DColumnClustered
'i dati per il grafico
.ActiveChart.SetSourceData(Source:=XlwbDati.Sheets("Esempio").range("C2:C4" , "B2:B4") _
, PlotBy:="xlColumns")
'Indico la leggenda
.ActiveChart.SeriesCollection(1).Name = "=""Voti"""
'Imposto il grafico nella pagine corrente
.ActiveChart.Location(Where:=Excel.XlChartLocation.xlLocationAsObject, Name:="Esempio")
'Imposto Il titolo del grafico
.ActiveChart.HasTitle = True
.ActiveChart.ChartTitle.Characters.Text = "Esempio"
'Imposto l'etichettà per l'asse x
.ActiveChart.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary).HasTitle = True
.ActiveChart.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary).AxisTitle.Characters.Text = "Nomi"
'imposto l'echtetta per l'asse y
.ActiveChart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary).HasTitle = True
.ActiveChart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary).AxisTitle.Characters.Text = "Voti"
End With
Tramite il metodo SaveAs dell’oggetto application, salvo il file:
'salvo il file
XlaDati.ActiveWorkbook.SaveAs(Environment.CurrentDirectory & "EsempioExcel.xls" , , , , , , Excel.XlSaveAsAccessMode.xlExclusive)
Conclusioni
Questo articolo a fornito alcune tecniche di come utilizzare i prodotti microsoft office (nel nostro caso excel) da qualsiasi applicazione scritta in Visual basic.Net. MA nulla esclude che si possono fare operazioni più complesse o utilizzare contemporaneamente più prodotti office.
- Articolo precedente Utilizzare Excel da Visual Basic Net (Parte I)
- Articolo successivo Creazione di componenti aggiuntivi per Excel con Visual Basic