Microsoft.Office.Interop.Excel

Per necessità aziendale dovevo importare dei dati contenuti in documenti excel (.xls e/o .xlsx) in un text file temporaneo. Dato il numero di documenti (uno al mese per gli ultimi 5 anni) e dei fogli contenuti in ciascuno di essi (uno per ogni giorno del mese), per un totale di 1.835 fogli, tutti aventi la stessa struttura, ho pensato di scrivere una piccola applicazione (nota per Raf: ebbene si, ora uso solo e sempre WPF, anche per le cazzatine come questa):

 image image

La cosa è stata "abbastanza" facile, anche per un matusa come me, se non fosse per il fatto che non avevo mai usato l'object model di Excel e che gogglando (e peggio ancora nell'help microsoft) c'è poca roba e molto datata. Con un po' di fatica e con l'aiuto di Alle, ho capito che:

  • Bisogna (ovviamente) inserire un riferimento alla library Microsoft.Office.Interop.Excel
  • Aggiungere (ovviamente) una using Excel = Microsoft.Office.Interop.Excel
  • Sapere che in c# non è consentito omettere i parametri nei metodi chiamati, a differenza del VB, per cui aprire un workbook si fa così:
1 Excel.Application excel = new Excel.Application(); 2 Excel.Workbook workbook = excel.Workbooks.Open(fromFilePath, 3 missing, missing, missing, missing, missing, missing, missing, 4 missing, missing, missing, missing, missing, missing, missing);

dove missing va definito così:

1 private object missing = Type.Missing;

per chi vuole approfondire l'argomento, rimando alla library MSDN: Understanding Optional Parameters in Office Solutions.

Un'ultima cosa: non fate come me, che ho dimenticato di usare excel.Quit() ritrovandomi in breve tempo con 12 processi EXCEL.exe nel task manager! A parte gli scherzi, è importante ricordare che con Interop noi avviamo una istanza (che possiamo rendere visibile o meno) di Excel, e questa istanza rimane attiva anche alla chiusura della nostra applicazione. Una successiva esecuzione del nostro programma aprirà una nuova istanza di Excel, e così via. E' necessario terminare esplicitamente l'istanza di Excel con il metodo Microsoft.Office.Interop.Excel.Application.Quit().

posted @ martedì 16 settembre 2008 04:14

Print
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011