/ / Viac C # Automatizácia do Excelu - c #, .net, excel, ms-office, office-interop

Viac C # Automatizácia do programu Excel - c #, .net, excel, ms-office, office-interop

Spustí sa tak nový zošit programu Excel:

        Excel.Application oXL;
Excel._Workbook oWB;

oXL = new Excel.Application();
oXL.Visible = true;

oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));

Čo však chce niekto ...

- "GetObject" (v známom paradigme automatizácie) do zošita, ktorý je už naložený a otvorený na obrazovke ?, alebo

- prístup a zapisovanie údajov do uzavretého zošita podľa názvu cesty?

Obidva sú realizovateľné podľa starých noriem. Výhodne aj keď som "nie je výberom práve teraz. Vďaka za pomoc.

odpovede:

2 pre odpoveď č. 1

Existujúcu inštanciu programu Excel môžete získať pomocou:

Marshal.GetActiveObject("Excel.Application")

To bude hodiť COMException, ak nie je spustená žiadna inštancia programu Excel.

Jeden pád automatizácie inštancie programu Excel, ktorá je viditeľná, je, že vaše hovory môžu zlyhať, pretože program Excel je zaneprázdnený. Možno budete musieť implementovať IMessageFilter vyhnúť sa tomuto problému.

Pokiaľ ide o prístup k uzavretému zošita podľa cesty - musíte otvoriť zošit:

oXL.Workbooks.Open(...)