`
kevin_wanwei
  • 浏览: 117576 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

excel文件转换为pdf文件的问题总结

阅读更多

Excel文件转化PDF文件的程序总结

一、概述:

         我写的这个小工具:具有三种基本功能:(1)可以将本地excel文件转化为本地的pdf文件,(2)可以将已经存入数据中的excel文件读成一个输入流,可以将这个输入流转化为本地的pdf文件,将可以将其转化为网络的pdf的输出流,(3)可以将本地excel文件转化为一个网络的输出流。

以下是我的这个工具对外提供的三个方法的接口(源代码已经上传):

package com.bpexcel2pdf.xls2pdf;

import java.io.OutputStream;

import com.bpexcel2pdf.pagesetting.PageSetting;


/**
 * 读 excel文件的标准接口
 * @author newapps
 *	2009-11-9
 */
public interface Excel_TO_PDF {
	/**
	 * 把本地的excel文件转化为本地的PDF文件
	 * @param exelFilePath excel文件所在本地路径
	 * @param PdfFilePath 生成PDF文件的路径
	 * @param PageSetting设置页面参数信息的类
	 */
	public void convertFromLocal(String excelFilePath,String pdfFilePath,PageSetting pageSetting)throws Exception;
	/**
	 * 把数据库中存取excel文件转化为PDF文件输出流
	 * @param exelFilePath excel文件名称
	 * @param output PDF文件输出流
	 * @param PageSetting设置页面参数信息的类
	 */
	public void convertFromDB(String excelFileName,OutputStream output,PageSetting pageSetting)throws Exception;
	/**
	 * 把本地的excel文件转化为PDF文件输出流
	 * @param exelFilePath excel文件所在本地路径
	 * @param output PDF文件输出流
	 * @param PageSetting设置页面参数信息的类
	 */
	public void convertFromLocal(String excelFilePath,OutputStream output,PageSetting pageSetting)throws Exception;
}

 


 

 

 

Excel 转化为PDF文件首先从Excel中读取数据。从Excel中去读数据在开源世界里有两种比较常用的技术:

1 jxl技术:

jxl是一个韩国人写的java操作excel的工具, javaExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

使用如下:

搭建环境

 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

jxl.jar的下载地址:

http://sourceforge.net/projects/jexcelapi/files/

2POI技术:

Jakarta POI apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 。目前比较成熟的是HSSF接口,处理MS Excel97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。

HSSF概况 HSSF Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。 HSSF 为读取操作提供了两类APIusermodeleventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。

POI文档和jar包的下载地址:

http://poi.apache.org/download.html

Excel转化的PDF 其次就是向PDF文件写入内容,比较成熟的技术主要是:Itext技术。


3itext技术

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDFrtf的文档,而且可以将XMLHtml文件转化为PDF文件。

 iText的安装非常方便,

http://www.lowagie.com/iText/download.html 

在 download 网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。


由于本程序应用到jxl技术读取excel中格式的内容,并没有其他对excel操作,所以在这里我只介绍jxl是如何读取excel文件。

(1)   首先需要得到excel文件的输入流,通过输入流来获得一个Workbook对象。

is=new FileInputStream(d:\\test.xls);              wb=Workbook.getWorkbook(is);

(2)   通过Workbook对象或得该excel文件中的工作簿的数组。

Sheet[]sheets=wb.getSheets();

 3)通过Sheet数组获得每个Sheet对象,在通过Sheet对象来获得Cell(单元格)对象。

         for(int k=0;k<sheet.length;k++ ){

                    int cols=sheet[k].getColumns();

                 int rows=sheet[k].getRows();

             for(int i=0;i<rows;i++){

                     for(int j=0;j<cols;j++){

                          Cell cell=sheet[k].getCell(j,i);

                     }

               }

}

(4)不要忘记关闭工作簿对象。

       /**

    * 关闭工作簿对象

    *

    */

   public void closeWorkbook(){

       if(wb!=null){

       wb.close();

       System.out.println("-->关闭Workbook对象成功!");

       }

   }

读取单元格的内容以后应用itext技术按照表格的形式写入pdf中。

Itext写入pdf一般有以下五个步骤:

三、建立第一个PDF文档

 

  用iText生成PDF文档需要5个步骤:

 

  ①建立com.lowagie.text.Document对象的实例。

Document document = new Document(); 

 

 

  ②建立一个书写器(Writer)document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。

 

 

PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF")); 

 

  ③打开文档。

 

 

document.open(); 

 

  ④向文档中添加内容。

 

 

document.add(new Paragraph("Hello World")); 

 

  ⑤关闭文档。

 

 

document.close(); 


Excel转化PDF问题要注意的问题

在读取excel内容是以读出的单元格为基础。在转化为pdf过程为了保证pdf表格中的单元格完全和excel中的表格一样,必须注意以下问题:

(1)       单元格的字体:包括字体大小、字体样式、字体颜色

(2)       单元格的边框颜色:包括左边框颜色、右边框颜色、上边框颜色、下边框颜色

(3)       单元格的背景色

(4)       单元格的宽度(也就是列宽)

(5)       单元格的高度(也就是行高)不过在itext中是没有办法控制行高,它只控制了列宽

(6)       单元格合并问题

在这里要特别注意的问题就是:

1itext默认是不支持中文的,我们要使用中文还必须下载支持中文的jar iTextAsian.jar。在获得jxl单元格的对象cell,可以通过该对象来获得其格式对象CellFormat format=cell.getCellFormat(),通过该对象就可以该单元格的字体对象Font font=format.getFont()。可以构造这样一个itext中的字体对象:new  Font(“字体名称”,字体大小,字体样式,字体颜色)。也可以通过下面的方法:来构造一个中文对象,首先要构造一个BaseFont对象:BASE_CHINESE_FONT = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);在通过BaseFont对象来构造一个中文字体对象Font font=new Font(BASE_CHINESE_FONT, 字体大小,字体样式,字体颜色)

   2)单元格背景色会覆盖单元格下边框的颜色

(3)在要设置单元格对象的封装中jxlitext的封装是完全不同,要注意之间的转化。(详情请查看两者的API

4)至于单元格合并的算法在里我不想做解释。我已经将程序的所有源码公开。你若想了解,那就去研究代码。


总结:

Excel转化PDF文件只要抓住jxlitext单元格的转化问题。也就是说程序在转化过程中始终以单元格为基础,不管是控制单元格的字体,单元格的合并问题。

14
0
分享到:
评论
13 楼 HuoYun 2015-03-20  
兄弟,这个代码对于其他excel转换会出问题,如数据库导出的excel,我的邮箱525020224@qq.com 能否共享一下你最新版本
12 楼 listen-raining 2014-12-01  
这两天正在弄这个东东   
11 楼 李001 2013-09-08  
你是英雄!
10 楼 237304457 2013-09-04  
少文,功 能有全事例不,
9 楼 237304457 2013-09-04  
提供大资源是哪种方式呀?
8 楼 kellysupeng 2013-08-19  
你这用的itext.jar 是那个版本的呢
7 楼 qq672076266 2013-03-01  
用着真心不错
6 楼 zhangguangci 2011-07-28  
中文全部没了,只能转换当前sheet.
5 楼 zhangguangci 2011-07-28  
我好像没试成功。excel转换本地pdf
4 楼 zp1125 2011-04-11  
最近也在做这个,先学习一下。有成果了再和大家分享
3 楼 zhanghw_1229 2010-04-01  
花很时间google了下,发现你这个最好,
想问下,楼主的这些代码有没有在实际项目中检证过,稳定性高不高。

因为我们过一段也有类似的需求,希望楼主能指点下。
2 楼 kevin_wanwei 2009-12-15  
网上这方面资料好像比较少,你可以去官方网下载些例子来看看啊。自己好好研究一下吧,我最近公司比较忙。真的没有时间研究这个了。
1 楼 zack 2009-12-15  
楼主,如果在Excel的“页面设置”-》“工作表”中设置了“打印标题”的话,现有的程序没有考虑这种情况,还有是不是可以直接从Excel文件中直接取页面设置,谢谢

相关推荐

    可以将EXCEL文件转换为PDF文件 EXCELfiletoPDF.zip

    标题中的“可以将EXCEL文件转换为PDF文件”是指一种技术功能,允许用户将Microsoft Excel创建的电子表格文件(.xlsx或.xls)转换为Adobe Portable Document Format(.pdf)。PDF文件格式广泛用于共享和打印,因为它...

    excel文件转换为PDF,jpg,html的方法

    首先,我们来探讨如何将Excel文件转换为PDF格式。PDF(Portable Document Format)文件格式能够保持原始文档的样式和布局,方便阅读和打印。转换方法有很多种,包括使用Microsoft Office自带的功能和第三方软件。在...

    java Excel文件转PDF文件

    在Java编程环境中,将Excel文件转换为PDF文件是一项常见的任务,尤其在数据报告或文档格式转换的场景下。本文将详细介绍如何使用Apache POI库处理Excel数据,以及使用iText库将这些数据导出为PDF格式。Apache POI是...

    Excel 文件转换为 PDF jar

    Excel文件转换为PDF poi itext itext2.1.5,jexcelapi,iTextAsian.jar, iTextAsianCmaps.jar 极度bs那些把资源分放的那么高的人,赚点分不容易

    使用itextpdf将excel转化为pdf + pdf加水印

    在这个场景中,我们需要将Excel文件转换成PDF格式,并且在此基础上添加水印,以增强文档的安全性和版权标识。这里主要涉及两个关键的技术:itextpdf库和Excel到PDF的转换。 **itextpdf库**是一个强大的Java库,专门...

    Word、Excel、PPT文件转换成PDF文件(C#)

    使用C#将Word、Excel、PPT文件转换成PDF文件 1,使用VS2017编译程序 2,点击添加文件,选择word文件,点击【word转pdf】,PDF文件生成到桌面; 3,点击添加文件,选择excel文件,点击【excel转pdf】,PDF文件生成到...

    将word、excel文件转换为PDF文件.doc

    将word、excel文件转换为PDF文件.doc

    同一文件夹下面多个Excel批量转换成PDF

    标题 "同一文件夹下面多个Excel批量转换成PDF" 描述了一种使用VBA(Visual Basic for Applications)在Excel中实现批量将Excel文件转换为PDF格式的解决方案。VBA是Microsoft Office套件中内置的一种编程语言,允许...

    pdf文件转换成excel文件

    PDF文件转换成Excel文件是日常工作中常见的需求,尤其在处理数据和报表时。PDF格式的文件因其便携性和防止篡改的特性而被广泛使用,但处理数据时往往不如Excel那样方便。在这种情况下,需要利用特定的工具或软件将...

    C# AsposeExcel是将Excel转换成pdf

    然后,你可以创建一个`Workbook`对象来加载Excel文件,接着使用`Save`方法将工作簿保存为PDF格式。以下是一个简单的示例代码: ```csharp using Aspose.Cells; // 加载Excel文件 Workbook workbook = new Workbook...

    用C#把Excel转换成PDF

    在IT行业中,将Excel文件转换成PDF格式是一个常见的需求,特别是在数据报告、文档分享和打印预览等场景。本文将详细讲解如何使用C#编程语言实现这一功能。 首先,我们需要了解C#中处理Excel和PDF的基本概念。在C#中...

    java实现excel转换 pdf文件

    在Java编程环境中,将Excel文件转换为PDF格式是一项常见的任务,尤其在数据报告或文档交换中。Aspose.Cells是一款强大的库,它提供了丰富的API来处理各种办公文档,包括Excel到PDF的转换。在这个过程中,无需依赖...

    word,excel,ppt文件转换成pdf文件

    描述中提到的"word文件,excel文件,ppt文件转换成pdf文件,java代码实现,已经集成为工具类,可以直接使用,自测ok"表明已经有开发者编写了一个工具类,该类能够处理这些转换操作,并且经过测试,功能正常。...

    把Excel文件转换成PDF格式文件

    将Excel文件转换为PDF格式是数据管理和文档分享中常见的需求,尤其在需要保持表格布局、保护数据不被篡改或确保文档能在不同设备上一致显示时。以下是对这一过程的详细解析,包括技术原理、实现步骤及代码示例。 ##...

    .net6 WebApi Excel转PDF并下载PDF文件

    // 将Excel文件转换为内存流 var memoryStream = new MemoryStream(); package.SaveAs(memoryStream); return memoryStream.ToArray(); } ``` 3. **Excel转PDF** iTextSharp库提供了将其他格式的文档转换为...

    Jacob Word excel 转PDF 合并PDF文件

    标题提到的"Jacob Word excel 转PDF 合并PDF文件"是指使用Jacob库来将Microsoft Word和Excel文档转换为PDF格式,并进一步合并多个PDF文件。Jacob(Java Advanced COM Bridge)是一个Java库,它允许Java应用程序与...

    导出 Excel 以及转化为 PDF 导出

    接下来,我们转向 `Spire.XLS.Free`,这是一个免费的 Java PDF 库,用于将 Excel 文件转换为 PDF 格式。尽管 `easypoi` 不直接支持导出为 PDF,但我们可以借助 `Spire.XLS.Free` 完成这个任务。转换过程如下: 1. ...

    Word,Excel,PPT等转PDF文件JAVA源代码

    在IT行业中,文件转换是一项常见的任务,特别是在文档处理和数据迁移的过程中。本主题主要关注如何使用JAVA编程语言将常见的办公软件格式,如Word(.doc)、Excel(.xls)、PowerPoint(.ppt)以及图像文件(如.tif...

    Total Excel Converter 全能Excel转换 v7.1.0一款Excel文件转换软件.exe

    Total Excel Converter是一款功能强大的Excel万能转换器工具,使用这款软件可以将Excel文件转换为任意的一种其他文件类型,支持转换为DOC,DOCX,PDF,HTML,Access,TXT,ODT,ODS,XML,SQL,CSV,Lotus,DBF,TEX...

Global site tag (gtag.js) - Google Analytics