azerphoenix
@azerphoenix
Java Software Engineer

Как лучше реализовать экспорт данных при помощи Apache POI?

Здравствуйте!
Задумался о написании простой обертки для удобства экспорта данных при помощи Apache POI.
Часто приходится экспортировать List в документ xlsx. Как это можно теоретически реализовать, чтобы сохранить "универсальность"?
Подумал об использовании рефлексии и дженериков.

Метод, который нужно модифицировать:
private void exportData(List<Article> articles) {

    List<Article> articleList = articles;
    Workbook workbook = new XSSFWorkbook();
    CreationHelper creationHelper = workbook.getCreationHelper();
    Sheet sheet = workbook.createSheet("newSheet");

    int rowNum = 0;
    for (Article article : articleList) {

      Row row = sheet.createRow(rowNum++);

      row.createCell(0).setCellValue(article.getArticleTitle());
      row.createCell(1).setCellValue(article.getArticleContent());
    }

    FileOutputStream fileOutputStream = null;
    try {
      fileOutputStream = new FileOutputStream("doc.xlsx");

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    try {
      workbook.write(fileOutputStream);
    } catch (IOException e) {
      e.printStackTrace();
    }
    try {
      assert fileOutputStream != null;
      fileOutputStream.close();
    } catch (IOException e) {
      e.printStackTrace();
    }

    try {
      workbook.close();
    } catch (IOException e) {
      e.printStackTrace();
    }

  }


Как лучше реализовать затею?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Я бы посмотрел на шаблон visitor. Как раз подходит под разные фичи для экспорта в разные форматы - https://refactoring.guru/ru/design-patterns/visito...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
28 мар. 2024, в 18:16
1000 руб./за проект
28 мар. 2024, в 18:15
90000 руб./за проект
28 мар. 2024, в 18:05
5000 руб./за проект