Vlákno názorů k článku
Sun a IBM vytvořili ODF API
od Michal Smrž -
SpreadsheetDocument spreadsheetDocument = new SpreadsheetDocument();
spreadsheetDocument.New();
Table table = new...
To se dá pochopit. Akorát se zas ksichtím nad ukecaností C#. Budu netrpělivě vyhlížet Python variantu (ale pochybuji, že přijde, respektive z oficiálních míst).
Kupodivu obdobně jde vytvářet dokumenty MS Office pomocí OLE Automation již 13 let ;)
Ukecané to je, ale jde o demonstrační příklad. Nikdo vás nenutí používat spreadsheetDocument, paragraph a fText. Navíc ve VS máte IntelliSense, takže vám nehrozí, že se upíšete.
Jak přes OLE jednoduchým způsobem vytvořím a naformátuji v internetové aplikaci na headless serveru DOC dokument bez nainstalované MS Office, dokonce v jiném OS než Windows? Možná to jde, v OLE se nijak výrazně neorientuji (minimálně padá ta možnost multiplatformosti).
Předpokládám, že vše z toho lze v ODF Toolkitu dosáhnout.
Headless server není problém (používáte OLE server, k tomu netřeba UI). Vyjma toho může být Office na jiném stroji (DCOM). Z jiných OS asi půjde MacOS, protože je pro něj MS Office (ovšem nevím, jestli půjde o OLE, nebo něco jiného). Ostatní platformy mohou použít remote server, na kterém MS Office běží, pokud mají implementaci DCOM. Pro Linux by nějaká implementace snad měla existovat, tohle nesleduji. Údajně třeba zde: http://www.softwareag.com/corporate/products/wm/am/downloads/download_exxdcom.asp . A samozřejmě je tu možnost napsat nějaký wrapper, pokud není jiného zbytí. Podle mě je ale tvorba dokumentů MS Office na platformě, na které tento SW neběží, poměrně zbytečná věc.
Aha, takže místo volání funkcí formátovací knihovny potřebuji OLE Server, připojení na stroj s běžící MS Office, u důležitějších řešení zdvojené kvůli high availability (což samozřejmě používáme). Tedy řešit další vrstvu komplexnosti a potenciální nespolehlivosti/chyb (i v případě virtualizace) kvůli pouhému vytvoření textového souboru/spreadsheetu.
Obrázek o technologickém srovnání OLE a knihovny si již každý udělá sám. Jinak díky moc autorům POI, pro základní věci nám úplně postačuje. Díky POI bylo pro nás jednodušší vytvářet XLS, než ODS. Nyní se situace doufejme vyrovná.
"Aha, takže místo volání funkcí formátovací knihovny potřebuji OLE Server, připojení na stroj s běžící..."
Prostě "SOA pičo!" :-D
Ne, služby jsou samozřejmě fajn, ale tady je to zbytečné, pokud se jedná o volání nějaké statické funkce, resp. knihovny, není žádoucí dělat věci složitější a nutně přesouvat zpracování dokumentu na jiný stroj a tahat to po síti.
Když máme open source knihovnu na ODF, tak si ty dokumenty můžeme generovat lokálně, nebo funkcionalitu zabalit třeba do nějakého EJB a tahat to po síti, když budeme chtít.
OLE Server není serverová služba, natož stroj. Jde o OLE server application, tedy aplikaci, která poskytuje služby přes OLE. A takovými servery jsou aplikace MS Office. Jinými slovy: potřebujete MS Office.
O technickém srovnání OLE Automation s čímkoliv jiným si můžete udělat obrázek nejdříve ve chvíli, kdy budete rozumět názvosloví. Doporučuji ještě znát koncept OLE, a mít s ním alespoň minimální zkušenost. Můžet si třeba napsat triviální skrip, který vytvoří dokument Wordu. Link níže ukazuje postup pro Word 6.0 (i pro Windows 3.1), a stejný postup funguje i pro Word 2007. http://support.microsoft.com/kb/108043
Ve skutečnosti je směšně jednoduché nechat třeba vytvořit dokument Wordu podle šablony, a doplnit text do záložek. A dokonce i uživatel může šablonu otevřít ve Wordu, upravit, a aplikace pak bude generovat odlišné dokumenty. Opravdu nevím, co může být ještě jednodušší, než OLE Automation.