Skip to main content

Posts

Showing posts with the label office

Windows 2008 Server + Office 2007 = InteropServices.COMException (0x800A03EC): Microsoft Office Excel cannot access the file

Mi-am prins astazi urechile cu urmatoarea eroare: InteropServices.COMException (0x800A03EC): Microsoft Office Excel cannot access the file Aceasta eroare era ascunsa in spatele unei erori de tip NullReferenceException. Eroare aparea pe linia de cod car facea open la un excel. myBooks.Open(fileName, 0, true, missing, missing, missing, true, missing, missing, missing, missing, missing, missing, missing. missing); Ce era cel mai curios ca acest lucru se intampla doar in productie, pe un Windows Server 2008 pe 64b (x64). Aceasta problema nu aparea pe nici o masina de dezvoltare cu Windows 7, nici pe build machine sau pe masina de testare. Am incercat sa i-au pe rand diferite cauze la aceasta problema. Am verificat daca nu cumva excel-ul este deja deschis de un alt proces. Fisierul nostru nu era deschis de nici un alt proces. Path-ul spre fisier era corect, nu era nici o problema de drepturi de acces pe fisierul dat. Cautand o posibila cauza am gasit o cauza destul de ciudata, care in...

(3) How to use Office in Silverlight applications

Lista postări despre Office interop pe Silverlight: Part 1 Part 2 Part 3 Si iată ca am ajuns la ultimul post din seria de 3 posturi despre Office Interop pe Silverlight. Am rămas dator cu doua topice: cum sa închidem un proces office; cum sa scriem unit teste; Pentru a putea închide procesul pe care îl avem pornit ajunge sa apelam direct metoda Quit(). Atenție, când se apelează aceasta metoda orice modificare deja făcuta nu o sa fie salvata. Pentru a putea face și save trebuie sa apelam și metoda metoda de salvare: excelApp.Save(); excelApp.Quit(); In cazul în care dorim sa închidem doar un document separat putem sa apelam la metoda Close , care poate sa fie accesibila pentru fiecare document separat. Testarea automata a unei aplicații care lucrează direct cu interop-ul de Office este destul de dificila. De exemplu cum putem sa testam dacă un document a fost deschis și este vizibil user-ului? Trebuie sa verificam ca avem în Windows o fereastra deschisa (lista de procese pornite în Win...

(2) How to use Office in Silverlight applications

Lista postări despre Office interop pe Silverlight: Part 1 Part 2 Part 3 In postul precedent am povestim despre problemele pe care le putem avea când încercam sa folosim API de Office pe Silverlight. Astăzi o sa discutam despre modul în care care trebuie configurat proiectul pentru a putea sa folosim API de Office și cum putem sa executam câteva funcții de baza. Pentru a putea apela API de Office pe Silverlight este nevoie sa setam aplicația sa ruleze Out of the brower (OOB) și sa cu permisiuni elevate. Aceste setări trebuie setate pe proiectul de Silverlight care conține App.xml. Click dreapta pe proiect în tab-ul Silverlight checkbox-ul "Enable running application out of the brower" sa fie check-uit iar în setările pentru out of the brower aveti grija sa check-uit și "Require Elevated trust when running outside the browser". Pentru a putea sa accesam API de Office (COM-uri in general) din Silverlight o sa fim nevoiți sa lucram cu obiecte de tip dynamic. Crearea ...

(1) How to use Office in Silverlight applications.

Lista postări despre Office interop pe Silverlight: Part 1 Part 2 Part 3 Acesta este primul post dintr-o serie de trei sau patru posturi în care o sa discutam despre Silverlight și interop (Office interop). Dupa cum știm Silverlight suporta integrarea cu Office prin intermediul la interop, dar înainte sa ne aruncam cu capul în fata în API si sa vedem ce putem face o sa prezint ce nu putem face din Silverlight. Nu avem acces la API-ul de Office in totalitate. Chiar daca in teorie folosim COM-urile de Office nu o sa putem apela orice metoda. De exemplu din cauza modului in care o aplicație Silverlight ruleaza pe o masina, nu o sa putem face pe client new la un nou document. Dar acest lucru este cauzat direct de Silverlight, care nu ne permite sa generam fisiere pe client (in modul in care Office-ul are nevoie). O solutie la aceasta problema este crearea fisierului pe server, iar apoi sa il copiem pe client. Putem sa avem templaturi care sa le copiem pe client si prin duplicarea lor sa r...