[Java 实现Excel转pdf ] 篇1

这篇具有很好参考价值的文章主要介绍了[Java 实现Excel转pdf ] 篇1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

🔣前言:

🔣Excel转pdf

🔣进一步优化代码:

🔣进一步优化代码: 

🔣依赖:


🔣前言:

    加油  少年

🔣Excel转pdf

  1. 使用try-with-resources语句自动关闭资源,避免手动关闭资源时出现的错误。

  2. 使用POI库的Sheet.getRow()方法获取行对象,避免强制类型转换。

  3. 使用POI库的Cell.getStringCellValue()方法获取单元格的字符串值,避免使用toString()方法时出现的错误。

  4. 使用iText库的PdfPCell对象设置单元格的字体和边框等属性,使PDF表格更美观。

  5. 使用iText库的Paragraph对象设置表格标题的字体和对齐方式,使PDF文档更美观。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Footer;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.PageOrientation;
import org.apache.poi.ss.usermodel.PaperSize;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.PrintArea;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.BaseFont;

public class ExcelToPdfDemo {
    public static void main(String[] args) {
        try (Workbook workbook = WorkbookFactory.create(new File("example.xlsx"));
             FileOutputStream fos = new FileOutputStream("example.pdf")) {
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 创建PDF文档对象
            Document document = new Document(PageSize.A4, 50, 50, 50, 50);

            // 创建PDF输出流
            PdfWriter writer = PdfWriter.getInstance(document, fos);

            // 打开PDF文档
            document.open();

            // 创建PDF表格对象
            PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum());

            // 设置表格宽度
            table.setWidthPercentage(100);

            // 设置表格标题
            Paragraph title = new Paragraph("Example Table", new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);

            // 添加表格内容
            for (Row row : sheet) {
                for (Cell cell : row) {
                    PdfPCell pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));
                    pdfCell.setBorderWidth(1f);
                    pdfCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    table.addCell(pdfCell);
                }
            }

            // 添加表格到PDF文档
            document.add(table);

            // 关闭PDF文档
            document.close();
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
}
  • 上面的示例代码中,我们使用try-with-resources语句自动关闭资源,使用Sheet.getRow()方法获取行对象,使用Cell.getStringCellValue()方法获取单元格的字符串值,使用PdfPCell对象设置单元格的字体和边框等属性,使用Paragraph对象设置表格标题的字体和对齐方式,使PDF文档更美观。

🔣进一步优化代码:

  1. 使用POI库的Workbook.getNumberOfSheets()方法获取工作簿中的工作表数量,避免手动指定工作表编号。

  2. 使用iText库的PdfPTable.setHeaderRows()方法设置表格标题行,使表格更易读。

  3. 使用iText库的PdfPTable.setWidths()方法设置表格列宽,使表格更美观。

  4. 使用iText库的PdfPTable.setSpacingBefore()方法设置表格与标题之间的间距,使PDF文档更美观。

  5. 使用iText库的PdfPTable.setSpacingAfter()方法设置表格与下一个元素之间的间距,使PDF文档更美观。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Footer;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.PageOrientation;
import org.apache.poi.ss.usermodel.PaperSize;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.PrintArea;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.BaseFont;

public class ExcelToPdfDemo {
    public static void main(String[] args) {
        try (Workbook workbook = WorkbookFactory.create(new File("example.xlsx"));
             FileOutputStream fos = new FileOutputStream("example.pdf")) {
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 创建PDF文档对象
            Document document = new Document(PageSize.A4, 50, 50, 50, 50);

            // 创建PDF输出流
            PdfWriter writer = PdfWriter.getInstance(document, fos);

            // 打开PDF文档
            document.open();

            // 创建PDF表格对象
            PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum());
            table.setHeaderRows(1);
            table.setWidths(new float[] {1, 2, 2, 2});

            // 设置表格宽度
            table.setWidthPercentage(100);

            // 设置表格标题
            Paragraph title = new Paragraph("Example Table", new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);

            // 添加表格内容
            for (Row row : sheet) {
                for (Cell cell : row) {
                    PdfPCell pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));
                    pdfCell.setBorderWidth(1f);
                    pdfCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    table.addCell(pdfCell);
                }
            }

            // 添加表格到PDF文档
            table.setSpacingBefore(20f);
            table.setSpacingAfter(20f);
            document.add(table);

            // 关闭PDF文档
            document.close();
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
}
  • 在上面的示例代码中,我们使用Workbook.getNumberOfSheets()方法获取工作簿中的工作表数量,使用PdfPTable.setHeaderRows()方法设置表格标题行,使用PdfPTable.setWidths()方法设置表格列宽,使用PdfPTable.setSpacingBefore()方法设置表格与标题之间的间距,使用PdfPTable.setSpacingAfter()方法设置表格与下一个元素之间的间距, 。

🔣进一步优化代码: 

  1. 使用POI库的Workbook.getSheetName()方法获取工作表名称,避免手动指定工作表编号。

  2. 使用iText库的PdfPTable.setKeepTogether()方法设置表格是否在同一页显示,避免表格被分页显示。

  3. 使用iText库的PdfPCell.setPadding()方法设置单元格的内边距,使表格更美观。

  4. 使用iText库的PdfPCell.setBackgroundColor()方法设置单元格的背景颜色,使表格更美观。

  5. 使用iText库的PdfPCell.setBorderColor()方法设置单元格的边框颜色,使表格更美观。文章来源地址https://www.toymoban.com/news/detail-700702.html

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Footer;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.PageOrientation;
import org.apache.poi.ss.usermodel.PaperSize;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.PrintArea;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.BaseColor;

public class ExcelToPdfDemo {
    public static void main(String[] args) {
        try (Workbook workbook = WorkbookFactory.create(new File("example.xlsx"));
             FileOutputStream fos = new FileOutputStream("example.pdf")) {
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 创建PDF文档对象
            Document document = new Document(PageSize.A4, 50, 50, 50, 50);

            // 创建PDF输出流
            PdfWriter writer = PdfWriter.getInstance(document, fos);

            // 打开PDF文档
            document.open();

            // 创建PDF表格对象
            PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum());
            table.setHeaderRows(1);
            table.setWidths(new float[] {1, 2, 2, 2});

            // 设置表格宽度
            table.setWidthPercentage(100);

            // 设置表格标题
            Paragraph title = new Paragraph(sheet.getSheetName(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);

            // 添加表格内容
            for (Row row : sheet) {
                for (Cell cell : row) {
                    PdfPCell pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));
                    pdfCell.setBorderWidth(1f);
                    pdfCell.setBorderColor(BaseColor.BLACK);
                    pdfCell.setPadding(5f);
                    if (cell.getRowIndex() == 0) {
                        pdfCell.setBackgroundColor(BaseColor.LIGHT_GRAY);
                    }
                    table.addCell(pdfCell);
                }
            }

            // 添加表格到PDF文档
            table.setSpacingBefore(20f);
            table.setSpacingAfter(20f);
            table.setKeepTogether(true);
            document.add(table);

            // 关闭PDF文档
            document.close();
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
}
  • 上面的示例代码中,我们使用Workbook.getSheetName()方法获取工作表名称,使用PdfPTable.setKeepTogether()方法设置表格是否在同一页显示,使用PdfPCell.setPadding()方法设置单元格的内边距,使用PdfPCell.setBackgroundColor()方法设置单元格的背景颜色,使用PdfPCell.setBorderColor()方法设置单元格的边框颜色, 。

🔣依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>
iText库:用于创建和操作PDF文件。
Apache POI库:用于读取和写入Excel文件。

到了这里,关于[Java 实现Excel转pdf ] 篇1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java原生POI实现的Excel导入导出(简单易懂)

    首先是Controller入口方法 这个接口在postman上传参是下面这样的: 注意里面的参数名称要和接口上的一致,不然会拿不到值 还有file那里key的类型要选file类型的,这样就可以在后面value里面选择文件 然后是Service方法 首先是Controller入口 strJson是用来接受其它参数的,一般导出的

    2024年02月11日
    浏览(48)
  • POI实现导出复杂Excel(动态行,复杂单元格,水印,Excel转换为PDF)。

      一、POI 表格框架 1.POI : POI提供API给Java程序对Microsoft Office格式档案读和写的功能 2.HSSF:Horrible SpreadSheet Format,为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型” 3.POI 文档结构类  HSSFWorkbook 文档对象,HSSFSheet  页,HSSFRow 行,HSSFCell 单

    2024年02月06日
    浏览(43)
  • 苍穹外卖集成 Apache POI Java实现Excel文件的读写下载

    Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies were updated to their latest versions to pick up security fixes and other improvements. A summary of changes is available in the Release Notes. A full list of changes is a

    2024年02月09日
    浏览(59)
  • java poi导入Excel、导出excel

    java poi导入Excel、导出excel ReadPatientExcelUtil PoiUtils FileUtils

    2024年02月15日
    浏览(43)
  • [Java 实现Excel转pdf ] 篇1

    目录 🔣前言: 🔣Excel转pdf 🔣进一步优化代码: 🔣进一步优化代码:  🔣依赖:     加油  少年 使用try-with-resources语句自动关闭资源,避免手动关闭资源时出现的错误。 使用POI库的Sheet.getRow()方法获取行对象,避免强制类型转换。 使用POI库的Cell.getStringCellValue()方法获取单元格

    2024年02月09日
    浏览(28)
  • poi实现Excel文件导出【SpringBoot篇】

    在系统中,数据库的excel文件导出是一项及为基础的功能。此篇文章将通过实例利用poi实现excel文件导出。 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生

    2024年02月05日
    浏览(44)
  • Java使用POI导出Excel

    在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 废话不多说,开始撸起来!!! POI官网;https://poi.apache.org/ POI官网API:https://poi.

    2024年02月04日
    浏览(48)
  • JAVA操作Excel之POI

    POI提供API给JAVA程序对Microsoft Office格式档案读和写的功能 基本功能如下: HSSF – 提供读写Excel格式(03)xls文件 XSSF – 提供读写Excel OOXML格式(07)xlsx文件 HWPF – 提供读写Word格式 HSLF – 提供读写PowerPoint格式 HDGF – 提供读写Visio格式 【注】03版本最多65535行,07版本的没有限制

    2024年02月06日
    浏览(37)
  • Java Poi导出Excel表格详解

    一、导出下面的表格 二、流程详解         1、导出excel需要先将数据准备好         2、创建工作傅对象SXSSFWorkbook         3、使用工作傅对象创建sheet对象(工作页)         4、使用sheet对象创建行对象row(行对象)         5、使用row对象创建cell对象(单元格

    2024年02月10日
    浏览(52)
  • Java Excel Poi 字体颜色设置

    要设置单元格的字体颜色,可以使用 Apache POI 中的  CellStyle  和  Font  类。下面是一个示例代码,演示如何设置单元格字体颜色: 这段代码创建了一个带颜色的单元格,字体颜色设置为红色。你可以根据需要将  IndexedColors  中的颜色调整为你想要的其他颜色。最后,代码将

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包