Как конвертировать excel в pdf в java?

Пользователь

от fred , в категории: Java , 10 месяцев назад

Как конвертировать excel в pdf в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaren , 10 месяцев назад

@fred 

Существует несколько способов конвертировать Excel файлы в PDF формат с использованием Java. Один из известных способов - использование Apache POI и iText библиотек.


Вот пример кода, который демонстрирует конвертацию Excel файла в PDF с использованием этих библиотек:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.InputStream;

public class ExcelToPdfConverter {

    public static void main(String[] args) {
        try {
            // Открываем исходный Excel файл
            InputStream input = ExcelToPdfConverter.class.getResourceAsStream("input.xlsx");
            Workbook workbook = WorkbookFactory.create(input);

            // Создаем PDF документ
            Document document = new Document();
            FileOutputStream fileOut = new FileOutputStream("output.pdf");
            PdfWriter.getInstance(document, fileOut);

            // Открываем документ
            document.open();

            // Копируем содержимое каждой страницы Excel в PDF документ
            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                // Получаем страницу Excel
                org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(i);

                // Создаем эквивалентную страницу PDF
                com.itextpdf.text.pdf.PdfPTable pdfTable = new com.itextpdf.text.pdf.PdfPTable(sheet.getRow(0).getPhysicalNumberOfCells());

                // Заполняем страницу PDF данными из страницы Excel
                for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) {
                    org.apache.poi.ss.usermodel.Row row = sheet.getRow(j);
                    for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) {
                        pdfTable.addCell(row.getCell(k).toString());
                    }
                }

                // Добавляем страницу PDF в документ
                document.add(pdfTable);
            }

            // Закрываем документ и освобождаем ресурсы
            document.close();
            fileOut.close();
            workbook.close();

            System.out.println("Excel файл успешно конвертирован в PDF!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


В этом примере Excel файл с именем "input.xlsx" должен находиться в папке ресурсов проекта. Результат конвертации сохраняется в файле с именем "output.pdf".


Не забудьте добавить соответствующие зависимости в ваш проект:

  • Apache POI: org.apache.poi:poi:4.1.2
  • Apache POI для обработки формата .xlsx: org.apache.poi:poi-ooxml:4.1.2
  • iText: com.itextpdf:itextpdf:5.5.13.2 (или любую другую необходимую версию)


Также учтите, что этот код работает только с форматом .xlsx. Если вам нужна поддержка более старых форматов .xls, вам понадобится использовать HSSF и HSSF converter вместо XSSF.

Пользователь

от willis.streich , 2 месяца назад

@fred 

Есть и другие способы конвертировать Excel в PDF, также можно использовать библиотеку Apache POI и iText, но вместо этого можно воспользоваться библиотекой Aspose.Cells, которая предоставляет удобные методы для работы с Excel файлами. Вот пример кода с использованием Aspose.Cells для конвертации Excel в PDF:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import com.aspose.cells.Workbook;
import com.aspose.cells.PdfSaveOptions;

public class ExcelToPdfConverter {

    public static void main(String[] args) {
        try {
            // Загрузка Excel файла
            Workbook workbook = new Workbook("input.xlsx");

            // Создание объекта опций для сохранения в PDF
            PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
            pdfSaveOptions.setOnePagePerSheet(true);

            // Сохранение Excel файла в PDF
            workbook.save("output.pdf", pdfSaveOptions);

            System.out.println("Excel файл успешно конвертирован в PDF!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


В этом примере Excel файл с именем "input.xlsx" должен находиться в корневой папке проекта. Результат конвертации сохраняется в файле с именем "output.pdf".


Убедитесь, что вы добавили зависимость Aspose.Cells в ваш проект. Для Maven проекта это может выглядеть так:

1
2
3
4
5
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.5</version>
</dependency>


Этот код работает с обоими форматами Excel файлов - .xls и .xlsx. Конвертация Excel в PDF с помощью Aspose.Cells обычно занимает меньше кода и предоставляет больше возможностей для настройки выходного PDF файла.