Blog (9)
Komentarze (25)
Recenzje (2)

Office Automation VS OpenXML SDK

@lukasz.developerOffice Automation VS OpenXML SDK30.11.2010 00:51

Hej,

Dynamiczne generowanie dokumentów jest funkcjonalnością, którą czasem chcielibyśmy dodać w swoim programie. Jeśli np.: implementujemy aplikację wspomagającą redagowanie tekstu warto byłoby umożliwić eksport stworzonego dokumentu do formatu obsługiwanego przez Worda w celu dalszej edycji.

Kiedy już podejmiemy decyzję o dodaniu możliwości wygenerowania dokumentu, zaczniemy poszukiwać sposobu jego implementacji. Możliwości są różne i zależą od formatu pliku, który chcemy uzyskać. Wśród dostępnych rozwiązań warte uwagi wydaje się użycie mechanizmu automatyzacji udostępnianego przez pakiet Office lub stworzenie dokumentów w oparciu OpenXML SKD. W tym artykule postaram się przybliżyć zalety i wady każdego z nich. Będę się opierał na informacjach dotyczących głównie generowania dokumentów Worda, ponieważ z nim miałem głównie do czynienia :).

Automation for Office (Office Interop)

Jeśli posiadasz zainstalowany pakiet Office, możesz do generacji dokumentów wykorzystać API, które udostępnia np.: Word. Obsługa może wydawać się początkowo dość niewygodna, szczególnie ze względu na dużą ilość argumentów przyjmowanych przez poszczególne metody.

Już podczas nauki podstaw można zauważyć dużą analogię kolejnych metod do operacji wykonywanych przez użytkownika. Dzięki temu podczas implementacji rozwiązań można wykorzystywać do pomocy samego Worda :). Wystarczy nagrać makro realizujące daną funkcjonalność i przeczytać wygenerowany kod. Z jego pomocą znacznie łatwiej stworzyć odpowiedni własny kod w implementowanej aplikacji.

Wadą mechanizmu Office Automation jest wymóg posiadania pakietu Office na komputerze docelowym, na którym będzie uruchamiana nasza aplikacja. Nie twierdzę, że wadą jest posiadanie Office'a, bo sam go używam i zwykle podobają mi się jego możliwości. Niewygodne jest natomiast wymaganie posiadania pakietu przez osobę, która być może go nie ma, a chciałaby skorzystać z naszego programu. W takim przypadku zamiast kupić go, żeby używać naszej aplikacji, wybierze raczej alternatywę, która takiego wymogu nie posiada. Konieczność posiadania Office'a wynika z faktu, że posługując się Office Automation w swojej aplikacji, uruchamiamy tak naprawdę proces odpowiedniego programu z pakietu Office, który wykonuje kolejno operacje odpowiadające metodom wywoływanym z wnętrza programu.

Inną wadę może stanowić również nieduża szybkość działania, szczególnie podczas operacji na tabelach (wygenerowanie zaledwie kilkunastu stron z tabelami może zająć nawet kilka minut). Trzeba o tym pamiętać projektując sposób generowania (np.: używając szablonów i ograniczając liczbę operacji na tabelach), co może pozwolić na znaczne przyspieszenie szybkości działania. Istnieją również sposoby pozwalające zwiększyć wydajność tego mechanizmu np.: poprzez zmianę pewnych opcji konfiguracyjnych. W zależności od konkretnego przypadku szybkość nie musi więc być jego wadą.

Generowania dokumentów za pomocą Office Automation powinno się też (poza pewnymi uzasadnionymi przypadkami) unikać w aplikacjach serwerowych. Wymagany jest oczywiście zakup pakietu do zainstalowania na serwerze, jednak problem tkwi w braku przystosowania tej metody generacji dokumentów do środowiska serwerowego. Taki scenariusz użycia nie jest zalecany ani wspierany przez Microsoft. Z tego względu nawet w pełni działające rozwiązanie może np.: przestać poprawnie funkcjonować po aktualizacji systemu. Na tej stronie możemy zapoznać się z bardziej szczegółowymi informacjami o komplikacjach, które mogą wystąpić podczas używania Office Automation w środowisku serwerowym.

Zaletą implementacji rozwiązania w oparciu o ten mechanizm generacji dokumentów jest niewątpliwie zapewnienie zgodności z danym formatem pliku, a także dostępność wszystkich formatów obsługiwanych przez odpowiednią aplikację. Liczbę dostępnych formatów można zwiększyć np.: poprzez instalację odpowiedniego dodatku do Office'a, dostępnego na stronie Microsoftu uzyskujemy możliwość zapisu w formatach PDF i XPS.

OpenXML SDK

W pakiecie Office 2007 występujące we wcześniejszych wersjach domyślne formaty zapisu, jak *.doc, *.xls, *.ppt zostały zastąpione przez odpowiedniki z końcówką x (*.docx, *.xlsx, *.pptx). Różnica nie sprowadza się jednak tylko do dodania nowej literki na końcu rozszerzenia :P. W przeciwieństwie do swoich poprzedników nowe formaty są oparte na skompresowanym zestawie struktur XMLowych, co pozwala łatwo modyfikować je bez specjalnego API (są to archiwa ZIP, które można otworzyć np.: programem 7-zip dostępnym na łamach portalu) :). W celu ułatwienia programistom operowania na strukturach dokumentów wydane zostało OpenXML SDK, które dostarcza typowane klasy odpowiadające różnym elementom zawartym w pliku, jak tabele, nagłówki, style itp.

Ze strony Microsoftu pobrać można również narzędzie pozwalające na podgląd struktury wybranego dokumentu. Nawigując po jej drzewie możemy wyświetlać dokumentację poszczególnych elementów, odpowiadające mu poddrzewo w postaci XML, a także kod programu potrzebny do jego odtworzenia. Możemy więc np.: stworzyć dokument w Wordzie i zobaczyć jak został wygenerowany, aby później odwzorować taką strukturę podczas dynamicznej generacji.

Wadami, które zauważyłem przed czas korzystania z tego sposobu generacji dokumentów są czasem mylące informacje, które można znaleźć w sieci szukając rozwiązań konkretnych problemów wynikające być może z różnic pomiędzy SDK w wersji 1 oraz 2.

OpenXML SDK w wersji 2.0 oraz narzędzie umożliwiające podgląd dokumentów można pobrać ze strony Microsoftu. Ponadto z tej strony można pobrać oficjalnie udostępniony zestaw snippetów, które mogą dodatkowo ułatwić implementację w typowych przypadkach.

Podsumowanie

Moim zdaniem wygoda implementacji rozwiązań w obu przypadkach jest zbliżona, jednak XMLowa struktura w drugim przypadku pozwala łatwiej zapanować nad tworzonym dokumentem, co przemawia na korzyść tego rozwiązania.

OpenXML SDK może generować dokumenty szybko i nie wymaga zainstalowanego Office'a na komputerze, na którym nasz program będzie uruchamiany. Jego wadą jest możliwość wygenerowania dokumentów tylko w nowych formatach Office'a, formatach zgodnych z OpenXML (jak *.docx, *.xlsx oraz *.pptx).

Jeśli natomiast jednym z wymagań jest wygenerowanie dokumentów w starszym formacie i nie posiadamy odpowiedniego konwertera, Office Automation wydaje się być dobrym wyborem.

Możliwym rozwiązaniem jest również np.: wygenerowanie dokumentu za pomocą OpenXML SDK i późniejsze użycie Office Automation w celu konwersji gotowego już pliku do wybranego formatu.

Mam nadzieję, że informacje tu zebrane pomogą dokonać właściwego wyboru osobom, które chcą zawrzeć funkcjonalność związaną z generacją dokumentów w tworzonych przez siebie aplikacjach.

Pozdrawiam,

Łukasz

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.