Java 将数据处理成 PDF 、Excel、Word格式

本文介绍了如何使用iText库在Java中将数据转换为PDF、Excel和Word格式。重点讲述了创建PDF的步骤,包括创建Document对象、使用PdfWriter,并创建段落、表格等元素。对于Excel,提到了类似的方法,但使用不同的写入器如HtmlWriter。在处理日期格式问题时,提出了将日期转化为字符串避免Excel自动格式化的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所需要的包: iText-2.0.7.jar (核心包)    iTextAsian.jar(中文字体集)

iText 的结构允许使用相同的代码生成以上任意类型的文档。比如可以用相同的代码生成pdf  和excel。

iTextAPI:

com.lowagie.text.Document是生成 PDF 的主要的类。它是需要使用的第一个类。一旦开始创建文档,将需要一个写入器向文档中写入内容。com.lowagie.text.pdf.PdfWriter 就是一个 PDF 写入器。下面列出了通常需要使用的类:

  • com.lowagie.text.Paragraph —— 这个类表示一个缩进的段落。
  • com.lowagie.text.Chapter —— 这个类表示 PDF 文档中的章节。使用 Paragraph 作为题目并使用 int 作为章节号码来创建它。
  • com.lowagie.text.Font —— 这个类包含了全部的字体规范,例如字体、大小、样式和颜色。各种字体都在这个类中声明为静态常数。
  • com.lowagie.text.List —— 这个类表示一个列表,按顺序包含许多 ListItems。
  • com.lowagie.text.Table —— 这个类表示包含单元格的表,单元格有序地排列在矩阵中。

创建步骤:

第一步是创建一个文档Document。文档是 PDF 文档的所有元素的容器。

Document document =new Document(PageSize.A4, 50, 50, 50, 50);

第二步是创建 PdfWriter 对象

PdfWriter writer =PdfWriter.getInstance(document, new \\ITextTest.pdf"));

FileOutputStream("Cdocument.open();

注:  第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。接下来,打开文档以写入内容

第三步是 创建段落对象

document.add(new Paragraph("First page of thedocument."));
document.add(new Paragraph("Some more text.",
FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new Color(255, 150,200))));

当然在这其中我们可以创建 表格,序列,节点等对象,只要将他们添加到document中即可。

在上面代码的结尾处添加 document.close(); 以关闭文档,否则创建的PDF无法打开。

总结:

在使用IText处理数据以生成PDF时,我们会通常 将  PdfWriter  Paragraph PDFCell  Font进行封装,最后继承PdfWriter  类进行PDF 的生成操作。对外我们只须提供filePath与一些数据访问参数即可。

例如对PdfWriter  的封装如下:

abstract public class PDFWriter {

	protected Document document = null;
    protected FileOutputStream out = null;
    protected Rectangle pageSize = null;
    protected String filePath = null;//此文件路径包括撮要创建的文件名
    protected Cell cell = null;
    protected Table table = null;
    protected PDFParFontBOLD header = null;
    protected PDFPar prg = null;
    
    public PDFWriter(String filePath) {
        try {
            this.filePath = filePath;
            document = new Document();
            out = new FileOutputStream(filePath);
            PdfWriter.getInstance(document, out);//第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径
            document.open();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public void close() {
        try {
            document.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            out.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}


 

 

Java 将数据处理成 Excel 格式

 

将数据处理Excel或Word格式,其原理与使用与  生成PDF一样,只不过生成PDF用的是  PDFWrite对象,而生成Excel 或Word用的是 HtmlWriter  对象,filePath 中的文件名给后缀为Excel格式(.xls)或Word格式(.doc)。

 

在将oracle数据库中的日期输出到EXCEL时,会遇到日期格式改变,比如 2011/09 会被改成 Sep-11

如何解决这个问题呢?将取出来的数据进行文本化,Excel 就不会再处理这个日期了,比如你在数据后面追加除空格的任何字符,这是会自动被转化为字符形式,但是 为什么追加空格不会被文本话呢?这个还没有弄清楚。到底有没有跟好的处理办法呢?在网上查了,使用SimpleDateFormat和cell.setParse进行转换都不成功,最后采取的办法是将2011/09 转换成  2011年9月  :

String regex = "/";
Pattern p = Pattern.compile(regex);
String[] tempArr = p.split(tblLeaderDesc.getCsny());
String CSNY = tempArr[0]+"年"+tempArr[1]+"月";
table.addCell(new PDFCell(String.valueOf(CSNY), 1, 1));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值