Составление таблиц в файле MS Word с помощью Java

Простым (но не самым эффективным) решением было бы использование потоков Java:

Set<Foo> set = Arrays.stream(array)
    .flatMap(Arrays::stream)
    .collect(Collectors.toSet());

Приведенный выше фрагмент кода сначала создает Stream<Foo[]> с оператором Arrays.stream(array).

Затем он сглаживает этот поток в Stream<Foo> со вторым утверждением: .flatMap(Arrays::stream), которое ведет себя так же, как .flatMap(arr -> Arrays.stream(arr)).

Наконец, он создает Set<Foo> из сплющенного потока с .collect(Collectors.toSet()).

Я предлагаю более подробно взглянуть на Java Streaming API, представленный в Java 8. Он может сделать гораздо больше, чем просто отобразить 2d-массив в Set.


Другой подход заключается в использовании 2 вложенных циклов:

Set<Foo> set = new HashSet<>(); // or LinkedHashSet if you need a similar order than the array
for(Foo[] inner : array) {
    for(Foo item : inner) {
        set.add(item);
    }
}
5
задан 5 revs, 4 users 40%prashanth 18 October 2011 в 17:50
поделиться

7 ответов

Взгляните на ПОИ Apache

Проект ПОИ является основным проектом для разработки чистых портов Java форматов файлов на основе формата OLE 2 Составного документа Microsoft. Формат OLE 2 Составного документа используется Документами Microsoft Office, а также программами с помощью наборов свойств MFC для сериализации их объектов документа.

5
ответ дан 14 December 2019 в 04:49
поделиться

Office 2003 имеет xml формат, и формат документа по умолчанию для офиса 2007 является (заархивированным) xml. Таким образом, Вы могли просто генерировать xml от Java. При открытии существующего документа, это не слишком твердо, также посмотрите требуемый xml.

С другой стороны, Вы могли использовать API openoffice, чтобы генерировать документ и сохранить его как документ MSWord.

1
ответ дан 14 December 2019 в 04:49
поделиться

Устройство записи Office было бы лучшим инструментом для использования, чем ПОИ для требования.

Если бы все, что Вы хотите, является простой таблицей без слишком большого форматирования, я использовал бы этот простой прием. Используйте Java, чтобы генерировать таблицу как HTML с помощью простой таблицы, TR, тегов TD и скопировать представленную HTML-таблицу в документ слова ;)

0
ответ дан 14 December 2019 в 04:49
поделиться

Наш набор функций должен нажать кнопку в нашем веб-приложении и получить страницу, на которую Вы смотрите назад как документ Word. Мы используем docx схему для описания документов и имеем набор кода Java стороны сервера, которая делает создание документа и ответ назад на наш веб-клиент. Форматирование себя сделано с некоторыми скомпилированный xsl-t's из Java для перевода из нашего собственного уровня персистентности XML.

docx схему довольно трудно понять. Путем мы сделали большинство успехов, должен был создать шаблонный docx's в Word с точно форматированием, в котором мы нуждались, но с поддельным содержанием. Мы затем дурачились с ними, пока мы не поняли точно, что продолжалось. Существует огромная сумма в docx, о котором Вы не должны действительно волноваться. При чтении / перевод docx Word довольно терпим к частично полной схеме форматирования. На самом деле мы приняли решение разделить в значительной степени все форматирование, потому что это также означает, что форматирование пользователя по умолчанию имеет приоритет, который они, кажется, предпочитают. Это также заставляет xsl обработать быстрее и получающийся меньший документ.

0
ответ дан 14 December 2019 в 04:49
поделиться

Я никогда не видел сделанный, и я работаю в Word много. Если бы Вы действительно хотите программно сделать что-то, одним словом, документ затем, я советовал бы использовать язык сценариев Microsoft VBA, который специально предназначен с этой целью. На самом деле я работаю в нем прямо сейчас.

Если Вы работаете под, Открывают Office затем, у них есть очень похожий набор макроприводимых в действие инструментов для того, чтобы сделать то же самое.

2
ответ дан 14 December 2019 в 04:49
поделиться

Я управляю docx4j проектом

docx4j содержит класс TblFactory, который составляет постоянные таблицы (т.е. никакая строка или промежутки столбца) с настройками по умолчанию, которые Word 2007 создал бы, и с размерами, указанными пользователем.

Если Вы хотите более сложную таблицу, самый легкий подход должен создать ее в Word, то скопировать получающийся XML в Строку в Вашем IDE, где можно использовать XmlUtils.unmarshalString docx4j для создания объекта Tbl из нее.

0
ответ дан 14 December 2019 в 04:49
поделиться

Щелкните здесь для Рабочего примера с исходным кодом. Этот пример генерирует документы MSWord от Java, на основе шаблонного понятия.

-1
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: