Nano Hash - криптовалюты, майнинг, программирование

Генерация отчетов MS Word и экспорт в java

Мне нужно экспортировать таблицы и генерировать отчеты из моего приложения, используя чистую Java. Использование COM или чего-либо, что требует предустановленных приложений, не допускается. Мне определенно нужен формат .doc. Формат docx является необязательным.

экспортировать таблицу означает просто создать простую таблицу в документе Word с данными. Чтобы сгенерировать отчет, нужно заменить заполнители некоторыми значениями в таблице шаблонов. Это также включает в себя вставку новых подтаблиц в таблицу-шаблон или объединение ячеек и строк.

So, the task is:

  • create tables in MS Word documents
  • insert subtables into table cells
  • merge table cells and rows
  • replace text in documents leaving the formatting

    Я пытался искать в сети, но мне удалось найти библиотеки Apache POI и Aspose для выполнения этой работы. Aspose, кажется, в порядке, но, к сожалению, я не могу себе этого позволить. У POI очень плохая документация, и я не могу понять, подходит она или нет.

    Более того, я попытался вставить в документ простую таблицу. Но это просто портит документ. Проверьте код ниже:

        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("poi.doc"));
        HWPFDocument doc = new HWPFDocument(fs);        
        Range range = doc.getRange();
    
        Table table = range.insertTableBefore((short)5, 5);
        table.getRow(0).getCell(0).replaceText("cell", true);       
        doc.write(new FileOutputStream("poi_out.doc"));
    

    Итак, у меня к этому моменту три вопроса:

  • Am I doing something wrong in this example?
  • Is POI applicable for the tasks I mentioned?
  • What other free libraries you can suggest

    Спасибо за ваши ответы

    P.S. Я прочитал несколько сообщений на этом сайте по этой теме. Ни один из них мне особо не помог. К тому же все они старые. Некоторые новые функции, вероятно, изменились с того времени.

  • 10.08.2012

    Ответы:


    1

    Есть 2 способа сделать это:

    1. Это я действительно рекомендую, так как это легко решает вашу проблему замены заполнителей шаблонов фактическими значениями:

    Создайте файл HTML с тем, что вам нужно. Используйте скорость в качестве шаблонизатора. Теперь, после замены заполнителей значениями в коде, сохраните файл с расширением «.doc» или «.docx». Полученный файл будет хорошо открываться в Word. Он откроется в веб-макете, и пользователь сможет переключиться на макет для печати, если захочет.

    http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html

    1. Посмотрите на docx4j.

    http://www.docx4java.org/trac/docx4j

    Но для этого вы должны понимать, как работает XML-структура документов MS Office Word. И может быть очень сложно поместить таблицу внутри другой таблицы.

    10.08.2012
  • На самом деле я боюсь, что мне нужны двоичные файлы документов. Является ли это возможным? 10.08.2012
  • ›Используйте скорость в качестве механизма шаблонов. Я какой-то нуб. Вы можете это объяснить? 10.08.2012
  • Нет библиотек, которые могут помочь вам с файлами документов для java. POI очень примитивен для файлов документов. Библиотека бездействует уже почти 5 лет. Я не вижу, чтобы он сейчас разрабатывался с появлением docx4j. 10.08.2012

  • 2

    Возможно, вы захотите взглянуть на JODReports, который бесплатный, может делать doc/docx. Это, вероятно, быстрее, чем POI, но требует, чтобы где-то был установлен OpenOffice/LibreOffice. Docmosis — это еще один инструмент, который может это сделать, и вы можете использовать его без установки чего-либо, если вы можете вызвать облачную службу. (что довольно дешево, но не бесплатно). Я не знаю, в чем проблема с примером кода POI, но POI может создавать документы doc (я не уверен насчет docx), и это бесплатно.

    16.08.2012

    3

    Вы также можете ознакомиться с:

    • Шаблон (применяются коммерческие лицензии)
    • XDocReport (полностью открытый исходный код)
    30.01.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..