Guide e Tutorials:indexed | ||||||||||||||||||||||||||||||
Lavorare con
gli oggetti Excel (undicesima parte) Come già visto nelle lezioni precedenti, i requisiti fondamentali per poter interagire con gli oggetti di Excel sono due: avere installato una copia di Microsoft Excel ed aver precedentemente caricato la libreria oggetti di Excel disponibile nella finestra di dialogo Riferimenti. Per una maggiore comprensione, la finestra si apre cliccando sulla voce Progetto del menu principale e selezionando dal menu Progetto che si aprirà, la voce Riferimenti che è quella accompagnata dall'icona dei libri. Basterà poi selezionare la voce Microsoft Excel Object Library per poter utilizzare tutti gli oggetti di cui la libreria in questione si compone. Come abbiamo potuto notare interagire con una sessione di Excel non va oltre le normali difficoltà del linguaggio, ma come ci si deve comportare se si desidera inserire un foglio di calcolo Excel nel proprio progetto? Può infatti risultare scomodo dover aprire un'applicazione esterna alla propria (tempi di caricamento, focus che passa da una finestra all'altra e così via). Vediamo quindi in questo articolo (che rappresenta una sorta di parentesi nel lungo discorso che stiamo affrontando) come utilizzare un contenitore OLE. OLE infatti non è altro che un recipiente dove inserire un oggetto di una classe qualsiasi. La classe dell'oggetto inseribile è definito dalla proprietà Class:
ed è rappresentata dal tipo di oggetto che si può importare nel contenitore. Alcune di queste classi sono: documento di testo, cartella Excel, foglio di calcolo Excel, documento Word, immagine bitmap, immagine jpeg e così via. Non è necessario tuttavia indicare il nome della classe perchè quando si indica il documento da importare, Visual Basic riconosce automaticamente a quale classe appartiene. Prima di continuare vediamo quindi i passi preliminari. Prima di tutto si dovrà importare sul piano il controllo OLE che ha la seguente icona: Una volta trascinato sul piano si aprirà una finestra nella quale scegliere il tipo di oggetto (o meglio la classe dell'oggetto) importabile nel contenitore OLE. Lavorando con i fogli di calcolo Excel, dovremo quindi scegliere la voce 'Foglio di lavoro di Microsoft Excel' come mostrato nella figura sotto: Adesso tutto è pronto per poter lavorare. La primissima cosa da fare è quella di importare un foglio di lavoro Excel esistente attraverso il metodo CreateLink. Tale metodo infatti permette di memorizzare e gestire effettivamente i dati dell'oggetto incorporato (il foglio di lavoro Excel) dall'applicazione in cui sono stati creati.
Dando già un primo avvio all'applicazione il foglio di calcolo dovrebbe essere visualizzato in questo modo: Naturalmente le dimensioni della sezione del foglio visualizzata dipendono da quelle del contenitore OLE. In ogni caso è possibile effettuare un ingrandimento attraverso la proprietà SizeMode alla quale assegnare una delle seguenti costanti:
Purtroppo però le operazioni possibili con il controllo OLE sono molto più limitate rispetto a quelle possibili utilizzando gli oggetti Excel.Application, Excel.Workbook ed Excel.Worksheet però nulla impedisce di rendere invisibile l'applicazione Excel e di visualizzare le modifiche compiute via via all'interno del contenitore OLE. Ad esempio, se prendiamo come riferimento il codice visto nello scorso articolo, quello cioè che permetteva la creazione di una curva di Bèzier, possiamo adattare il progetto in modo da rendere invisibile la sessione di lavoro Excel.Application (indicata come appExcel):
quindi creare la curva di Bèzier:
e quindi collegare il foglio di lavoro (che dev'essere esistente, quindi precedentemente salvato sul disco fisso) al contenitore OLE:
A questo punto il contenitore OLE visualizzerà la curva in questo modo: Che cosa accade però nel caso in cui s'impostino i punti in maniera differente? Si consideri il seguente caso:
dando l'avvio all'applicazione si visualizzerà sempre la curva mostrata sopra mentre i punti indicati in quest'ultimo codice ruotano la curva sull'asse orizzontale. Sarà quindi necessario creare un collegamento ad un file .xls aggiornato. E l'aggiornamento del file "bezier.xls" è possibile semplicemente con un salvataggio. Se infatti si aggiunge prima di richiamare il metodo CreateLink l'istruzione di salvataggio ed eventualmente si compie un aggiornamento del contenuto del controllo OLE attraverso il metodo Refresh:
il contenitore potrà visualizzare la nuova curva, in questo modo: Questo ragionamento vale naturalmente per tutte le modifiche che s'intendere compiere sul foglio di lavoro.
|