2011-06-21 4 views
14

Stworzyliśmy aplikację, która wykorzystuje Office 2007 (Excel 2007) do odczytu danych z arkusza programu Excel. Jednak. Zauważyłem, że gdy chcę wdrożyć aplikację w systemie z zainstalowanym pakietem Office 2003, ulega awarii, ponieważ inne PIA (i inne biblioteki dll) muszą być odniesione do tej wersji pakietu Office.obsługuje różne wersje Office z Office Automation

Czy muszę skompilować różne wersje mojej aplikacji, aby móc obsługiwać różne wersje pakietu Office lub czy istnieje bardziej eleganckie rozwiązanie tego problemu?

Używam Visual Studio 2010 (C#) i platformy .Net 4.0.

Odpowiedz

18

Podczas korzystania z platformy .NET 4 można używać "osadzonych" PIA (inaczej "Brak PIA"). Zmień opcję na odnośniku Office, aby "Embed Interop Types" miał wartość True.

Dopóki używasz tylko funkcji pakietu Office, które są obsługiwane na komputerze, na którym chcesz wdrożyć, powinieneś być w porządku.

Oznacza to również, że: - Nie trzeba się martwić o sam PIA nie jest obecny na komputerze docelowym - Wszelkie metody lub właściwości, które są typu w oryginalnym interfejsem COM VARIANT są teraz reprezentowane za pomocą dynamic w kodzie, co może uprościć twoje życie

+0

To uczyniłoby moje życie 2 lata temu o wiele łatwiejsze. Pisanie dodatków vsto w wersji vs05 było kłopotliwe. – asawyer

+0

To rozwiązało mój problem. Dziękuję Ci bardzo. – Chris

0

Możesz odwoływać się do kwestionariuszy PIA dla wielu wersji pakietu Office i wykombinować w czasie wykonywania, z którego przekierowujesz połączenia.

+0

To jest dokładnie to, czego nie należy robić: http://blogs.msdn.com/b/andreww/archive/2007/06/15/can-you-build-one -add-in-for-for-multiple-versions-of-office.aspx – Andy

+0

To jest naprawdę dobry pomysł **. Chciałem to również zrobić, ponieważ w mojej firmie mamy zainstalowane systemy z różnymi wersjami Office. I chciałem, aby moje aplikacje obsługiwały ** dowolną ** wersję. – Bitterblue