Czy istnieje Java API, które może tworzyć bogate dokumenty Word? [zamknięte]

Mam nową aplikację, nad którą będę pracował, gdzie muszę wygenerować dokument Word zawierający tabele, wykresy, spis treści i tekst. Jaki jest do tego dobry API? Jak jesteś pewien, że obsługuje wykresy, ToCs i tabele? Co kryje się za ich używaniem?

Niektóre wyjaśnienia:

  • nie mogę wydrukować pliku PDF, chcą Worda doc.
  • używają MS Word 2003 (lub 2007), a nie OpenOffice
  • Aplikacja działa na *nix app-server

Byłoby miło, gdybym mógł zacząć od szablonu doc i po prostu wypełnić kilka spacji tabelami, wykresami itp.

Edit: kilka dobrych odpowiedzi poniżej, każda z własnymi wadami, jeśli chodzi o moją obecną sytuację. Trudno wybrać od nich" ostateczną odpowiedź". Myślę, że zostawię to otwarte i liczę na lepsze rozwiązania.

Edit: projekt OpenOffice UNO wydaje się być najbliższy temu, o co prosiłem. Chociaż POI jest z pewnością bardziej mainstreamowe, jest zbyt niedojrzałe za to, czego chcę.

Author: SPottuit, 2008-10-15

16 answers

W 2007 roku mój projekt z powodzeniem wykorzystał OpenOffice.org interfejs s Universal Network Objects (Uno) do programowego generowania dokumentów kompatybilnych z MS-Word (*.doc), a także odpowiednie dokumenty PDF, z aplikacji internetowej Java (Struts / JSP framework).

OpenOffice UNO umożliwia także tworzenie wykresów, arkuszy kalkulacyjnych, prezentacji itp. Udało nam się dynamicznie budować zaawansowane dokumenty Word, w tym wykresy i tabele.

We uproszczony proces za pomocą szablonów dokumentów MS-Word z wkładkami zakładek, do których oprogramowanie wstawiało zawartość, można jednak budować dokumenty całkowicie od podstaw. Celem było, aby oprogramowanie generowało dokumenty raportowe, które mogłyby być udostępniane i dalej poprawiane przez użytkowników końcowych przed konwersją ich do formatu PDF w celu ostatecznej dostawy i archiwizacji.

Możesz opcjonalnie tworzyć dokumenty w formatach OpenOffice, jeśli chcesz, aby użytkownicy używali OpenOffice zamiast MS-Office. W naszym przypadek, że użytkownicy chcą korzystać z narzędzi MS-Office.

UNO jest zawarte w pakiecie OpenOffice. Po prostu połączyliśmy naszą aplikację Java z bibliotekami związanymi z UNO w pakiecie. Dostępny jest pakiet OpenOffice Software Development Kit (SDK) zawierający przykładowe aplikacje i przewodnik Uno Developer ' s Guide.

Nie badałem czy najnowszy OpenOffice UNO może generować MS-Office 2007 Open XML formaty dokumentów.

Najważniejsze rzeczy w OpenOffice UNO to:

  1. it is freeware
  2. obsługuje wiele języków (np. Visual Basic, Java, C++ i inne).
  3. jest niezależny od platformy (Windows, Linux, Unix, itp.).

Oto kilka przydatnych stron:

 54
Author: Lucky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-13 06:43:18

Myślę, że Apache POI da radę. Możliwy problem w zależności od użycia, do którego dążysz, może być spowodowany faktem, że HWPF jest jeszcze we wczesnym stadium rozwoju.

HWPF jest zestawem API do odczytu i pisanie Microsoft Word 97 (- XP) dokumenty używające (tylko) języka Java.

 30
Author: Jorge Ferreira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 23:17:05

You could use this: http://code.google.com/p/java2word

Zaimplementowałem to API o nazwie Java2Word. za pomocą kilku linii kodu można wygenerować jeden dokument Microsoft Word.

Np.:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

Jest kilka przykładów użycia. Zasadniczo będziesz potrzebował jednego pliku jar. Daj mi znać, jeśli potrzebujesz dodatkowych informacji, jak to skonfigurować.

*napisałem to, ponieważ mieliśmy jedną prawdziwą potrzebę w projekcie. Więcej na moim blogu:

Http ://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

Pozdrawiam Leonardo

Edit : projekt w linku przeniesiony do https://github.com/leonardoanalista/java2word

 9
Author: Leonardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-20 11:08:34

Spróbuj.Words for Java, działa na każdym systemie operacyjnym, w którym jest zainstalowana Java.

Wyświetli dokument do DOC, DOCX lub RTF, jeśli potrzebujesz formatu wyjściowego MS Word. Wszystkie są wspierane równie dobrze.

Za pomocą tego API można utworzyć dokument od podstaw, dosłownie z węzłów i ustawić ich właściwości formatowania. Możesz również użyć DocumentBuilder, który zapewnia metody wyższego poziomu, takie jak tworzenie wiersza tabeli, wstawianie pola itp. Możesz też kopiować/łączyć / przenosić części między istniejący wstępnie utworzony dokument, powiedzmy, że chcesz złożyć umowę, po prostu chwyć i skopiuj fragmenty z kilku dokumentów i zastosuj.Słowa będą prawidłowo scalać style, formatowanie listy itp. w wynikowym dokumencie.

Będziesz mógł wstawić pole spisu treści używając Aspose.Słowa, ale od dziś pole TOC będzie wymagało aktualizacji pola, gdy dokument zostanie otwarty w programie Microsoft Word. Jednak zamierzamy udostępnić pełne wsparcie dla pól spisu treści na początku 2010 roku. Np. zbuduje kompletny TOC jako MS Słowo wystarczy.

Jestem na celowniku.Zespół słów.

 4
Author: romeok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-21 21:59:55

Wspomniano o tym tylko raz, więc chciałbym przywołać bibliotekę docx4j, ponieważ odniosłem większy sukces z docx4j niż cokolwiek innego. Obsługa Apache POI dla dokumentów Word nie jest zbyt dobra. Również, w przeciwieństwie do Aspose.Words, docx4j jest biblioteką open source.

Jedyną wadą jest to, że w docx4j musisz tworzyć dokumenty w formacie Office Open XML (docx) zamiast dokumentów w formacie OLE2 (Doc). Jest to domyślny format dla programu Word 2007, ale użytkownicy programu Word 2003 i wcześniejszych będą musieli zainstaluj pakiet zgodności.

 4
Author: Joshua Born,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 14:56:42

Try Aspose.Words for java.

Aspose.Words for Java to zaawansowana (komercyjna) Biblioteka klas dla języka Java, która umożliwia wykonywanie wielu zadań związanych z przetwarzaniem dokumentów bezpośrednio w aplikacjach Java.

Aspose.Words for Java obsługuje formaty DOC, OOXML, RTF, HTML i OpenDocument. Z Aspe.Słowa można generować, modyfikować i konwertować dokumenty bez użycia programu Microsoft Word.

 3
Author: Seki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-30 21:56:04

Możesz użyć Java COM bridge jak JACOB . Jeśli jest po stronie klienta, inną opcją byłoby użycie Javascript.

 2
Author: Gulzar Nazim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 23:17:21

Użyłem Aspose.Słowa zrobić Mail merge w .NET. wierzę, że mają również wersję Java.

 2
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 23:26:46

Istnieje narzędzie o nazwie JODConverter, które zaczepia się w open office, aby odsłonić Konwertery formatów plików, są wersje dostępne jako webapp (siedzi w tomcat), do którego piszesz i narzędzie wiersza poleceń. Odpalałem html i konwertowałem nadoc i pdf z powodzeniem jest to dość duży projekt, jeszcze nie wszedł na żywo, ale myślę, że będę go używać. http://sourceforge.net/projects/jodconverter/

 2
Author: Andrew Hancox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-09 19:11:34

IText jest naprawdę łatwy w użyciu.

Jeśli wymagasz plików doc, możesz wywołać abiword (Darmowy procesor tekstowy dla wielu systemów operacyjnych) z linii poleceń, ma on kilka opcji konwersji formatu.

 2
Author: cam2574,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-04 16:06:20

Docx4j lub poi, z których oba są ASL v2

@wondersofcomputing: iText jest rzeczywiście wolny i open source

 1
Author: JasonPlutext,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-27 02:52:58

Po nieco dalszych badaniach natknąłem się na iText, PDF i RTF-file creation API. Myślę, że mogę użyć generacji RTF, aby utworzyć plik czytelny Doc, który można następnie edytować za pomocą Doc i ponownie zapisać.

Ktoś ma jakieś doświadczenie z iText, używanym w tym stylu?

Bill, POI i iText API są bardzo podobne z punktu widzenia programowania. Pracowałem z nimi w przeszłości i uznałem je za łatwe w użyciu i dobrze udokumentowane.

Z iText you skorzystaj z możliwości przełączania się między formatami (RTF i PDF) z niewielkimi zmianami w kodzie. Jeśli dobrze pamiętam zawartość jest układana za pomocą tych samych wywołań, a następnie ustawiana jako PDF lub RTF za pomocą kilku linijek kodu.

Jednak uważam, że formatowanie w RTF jest ograniczone w porównaniu do DOC. Nie wiem, czy będziesz w stanie zaimplementować zaawansowane funkcje, których szukasz (tabele, obrazy wbudowane) bez przyzwoitej ilości kłopotów, jeśli w ogóle.

Biorąc pod uwagę to, co powiedziałeś, że jeśli chodzi o to, że HWPF nie ma wystarczającej funkcjonalności dla Twoich potrzeb (miałem do czynienia tylko z POI po stronie Excela), Twoim najlepszym rozwiązaniem może być przekonanie, że PDF jest najlepszą technologią do tego zadania.

 1
Author: James McMahon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-04 16:24:20

W przeszłości opracowywałem czyste pliki word oparte na XML. Używałem. NET, ale język nie powinien mieć znaczenia, ponieważ to naprawdę XML. Nie była to najłatwiejsza rzecz do zrobienia (miał projekt, który wymagał tego kilka lat temu.) Działają one tylko w programie Word 2007 lub nowszym - ale wszystko, czego potrzebujesz, to biała księga Microsoftu, która opisuje, co robi każdy znacznik. Możesz osiągnąć wszystko, co chcesz z tagami w ten sam sposób, jak gdybyś używał Worda (oczywiście trochę bardziej bolesne początkowo.)

 1
Author: schmoopy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-04 12:13:44

Po trochę więcej badań, natknąłem się iText , PDF i RTF-file creation API. Myślę, że mogę użyć generacji RTF, aby utworzyć plik czytelny Doc, który można następnie edytować za pomocą Doc i ponownie zapisać.

Ktoś ma jakieś doświadczenia z iText, używanym w tym stylu?

 0
Author: billjamesdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 01:21:08

Jeszcze jedna możliwość, ponieważ jest to aplikacja internetowa.

Udało mi się renderować stronę HTML z typem MIME ustawionym na "application / msword" , co spowodowało, że przeglądarka odradzała słowo, które importowało html, pozwalając na edycję i zapisywanie tak, jakbym miał wypisać prawdziwy dokument Worda.

Tabele działają dobrze, ale obrazy jeszcze nie zadziałały. Może to być tak proste, jak tylko znacznik w HTML, lub być może będę musiał streamować oddzielną część odpowiedzi zawierającą dane obrazu w binarny, czy inna metoda, której jeszcze nie wymyśliłem. :)

 0
Author: billjamesdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 22:20:31

Chociaż jest to znacznie później niż prośba, może pomóc innym. Docmosis zapewnia API Java do tworzenia dokumentów w formacie doc, pdf,odt przy użyciu dokumentów jako szablonów. Używa OpenOffice jako silnika do wykonywania konwersji formatu. Manipulacja dokumentami i populacją jest wykonywana przez samą Docmosis.

 0
Author: Paul Jowett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-16 03:40:21