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

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

от francisco.friesen , в категории: Java , 8 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от deshaun_cormier , 8 месяцев назад

@francisco.friesen 

Для конвертации файлов Excel в файлы PDF в Java можно использовать библиотеку Apache POI для чтения содержимого Excel и библиотеку iText для создания файла PDF.


Вот пример кода, который показывает, как конвертировать файл 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
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;

public class ExcelToPdfConverter {

    public static void main(String[] args) {
        try {
            // Открыть файл Excel
            String excelFilePath = "путь_к_файлу_excel.xlsx";
            FileInputStream input = new FileInputStream(excelFilePath);
            Workbook workbook = new XSSFWorkbook(input);

            // Создать документ PDF
            String pdfFilePath = "путь_к_файлу_pdf.pdf";
            Document document = new Document(PageSize.A4);
            PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath));
            document.open();

            // Итерировать по всем листам в файле Excel
            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                // Записать содержимое каждого листа в документ PDF
                // используя Apache POI
                // ...

                // Пример записи содержимого каждого листа
                /*Sheet sheet = workbook.getSheetAt(i);
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        String cellValue = cell.getStringCellValue();
                        // Записать значение ячейки в документ PDF используя iText
                        // ...
                    }
                }*/
            }

            // Закрыть документ PDF и файл Excel
            document.close();
            workbook.close();

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


Пожалуйста, учтите, что вам может потребоваться добавить соответствующие зависимости к вашему проекту, чтобы использовать библиотеки Apache POI и iText.

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

от chloe.keebler , 3 месяца назад

@francisco.friesen 

Для обновленного кода, представленного ниже, была добавлена возможность записи содержимого каждого листа Excel в соответствующей странице PDF с использованием 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
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class ExcelToPdfConverter {

    public static void main(String[] args) {
        try {
            // Открыть файл Excel
            String excelFilePath = "путь_к_файлу_excel.xlsx";
            FileInputStream input = new FileInputStream(excelFilePath);
            Workbook workbook = new XSSFWorkbook(input);

            // Создать документ PDF
            String pdfFilePath = "путь_к_файлу_pdf.pdf";
            Document document = new Document(PageSize.A4);
            PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath));
            document.open();

            // Итерировать по всем листам в файле Excel
            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                Sheet sheet = workbook.getSheetAt(i);
                document.newPage();
                document.add(new Paragraph("Лист: " + sheet.getSheetName()));
                
                // Записать содержимое каждой ячейки листа в документ PDF
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        String cellValue = cell.toString();
                        document.add(new Paragraph(cellValue));
                    }
                }
            }

            // Закрыть документ PDF и файл Excel
            document.close();
            workbook.close();

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


Убедитесь, что добавили следующие зависимости в ваш проект, чтобы использовать библиотеки Apache POI и iText:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.1.0</version>
</dependency>

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>


Этот код считывает содержимое каждого листа Excel и записывает его в соответствующую страницу PDF. Вам нужно заменить пути к файлам Excel и PDF соответствующим образом в коде.