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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

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

@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.