C #: Come posso aprire e chiudere una cartella di lavoro di Excel?
-
20-09-2019 - |
Domanda
Qualcuno sa come aprire semplicemente e chiudere una cartella di lavoro di Excel?
Non ho bisogno di leggere i dati dal file, ho solo bisogno di aprire e chiudere. (*)
Sto indovinando che avrò bisogno di fare riferimento all'assemblea Microsoft.Office.Interop.Excel.
* Motivo: Ho già configurato le informazioni tabella pivot con una libreria 3rd party (Aspose). Ora ho bisogno di leggere la tabella pivot generato.
Purtroppo, la libreria Aspose non può generare la tabella pivot in fase di esecuzione. Ha bisogno di qualcuno che aprire il file con Excel in modo che Excel può generare i valori della tabella pivot.
Soluzione
dopo riferimento Microsoft.Office.Interop.Excel anche fare in modo di ripulire la fine.
using Excel = Microsoft.Office.Interop.Excel;
Excel.ApplicationClass _Excel;
Excel.Workbook WB;
Excel.Worksheet WS;
try
{
_Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
WB = _Excel.Workbooks.Open("FILENAME",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
//do something
}
catch (Exception ex)
{
WB.Close(false, Type.Missing, Type.Missing);
throw;
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);
}
Altri suggerimenti
Un rapido Google mi dà questo progetto codice:
Si consiglia di utilizzare System.Diagnostics.Process per avviare, monitorare e chiudere Excel. Questo sito offre una buona introduzione: http://www.thescarms.com/dotnet/Process.aspx , tra cui l'esecuzione di una finestra invisibile e l'invio di input ad esso.