- 浏览: 114541 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
HuoYun:
兄弟,这个代码对于其他excel转换会出问题,如数据库导出的e ...
excel文件转换为pdf文件的问题总结 -
listen-raining:
这两天正在弄这个东东
excel文件转换为pdf文件的问题总结 -
李001:
你是英雄!
excel文件转换为pdf文件的问题总结 -
237304457:
少文,功 能有全事例不,
excel文件转换为pdf文件的问题总结 -
237304457:
提供大资源是哪种方式呀?
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/
(2)POI技术:
Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
HSSF概况 :HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。 HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。
POI文档和jar包的下载地址:
http://poi.apache.org/download.html
Excel转化的PDF 其次就是向PDF文件写入内容,比较成熟的技术主要是:Itext技术。
(3)itext技术
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为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) 单元格合并问题
在这里要特别注意的问题就是:
(1)itext默认是不支持中文的,我们要使用中文还必须下载支持中文的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)在要设置单元格对象的封装中jxl和itext的封装是完全不同,要注意之间的转化。(详情请查看两者的API)
(4)至于单元格合并的算法在里我不想做解释。我已经将程序的所有源码公开。你若想了解,那就去研究代码。
总结:
Excel转化PDF文件只要抓住jxl和itext单元格的转化问题。也就是说程序在转化过程中始终以单元格为基础,不管是控制单元格的字体,单元格的合并问题。
- bpexcel2pdf.rar (25.9 KB)
- 下载次数: 816
评论
想问下,楼主的这些代码有没有在实际项目中检证过,稳定性高不高。
因为我们过一段也有类似的需求,希望楼主能指点下。
发表评论
-
java 解析数学表达式
2011-11-20 10:33 5533数学表达式解析工具类: 支持负数运算, 多层括号嵌套运算 ... -
java代码模拟计算机实现原理(一)加法器模拟
2011-09-29 23:30 3258加法器是有两种基本逻辑门电路:异或门、与门电路组成的 ... -
jar 命令简介
2011-02-16 09:55 1178jar 命令用途:采用zip和ZLIB的压缩格式,将一系列程序 ... -
javac 命令
2011-02-16 09:17 1308最简单的方式(javac -d)首先,需要编译JAVA文件,需 ... -
阿拉伯数组转换成对应中文
2011-02-12 11:52 1117package com.heda.code; publi ... -
java二叉树实现
2011-02-12 11:50 1034package com.heda.code; publi ... -
最大公约数和最小公倍数
2011-02-12 11:48 997package com.heda.code; publi ... -
比较完整数据源实现
2010-06-12 21:35 1437package com.bpsoft.bl ... -
jxl 操作excel Demo
2010-05-25 16:02 1313程序是用:jxl技术来操作excel文档的,实现了excel插 ... -
Jacob操作Word详细教程
2010-05-11 21:16 5397首先, ... -
Java 正则表达式小结
2010-05-11 20:25 1467Java 中正则表达式是在Java 1.4版本以后才出现的。在 ... -
DOM写的xml工具类
2010-04-05 16:15 1367package xml_util; import j ... -
日志记录器
2010-03-12 23:12 959package log_util; import jav ... -
java1.5新特性枚举实现原理
2010-03-09 00:24 1116package com.bp_soft.day01; /** ... -
Struts 1实现原理之我理解
2010-03-06 23:23 1465Struts是在servlet基础上设计的一种框架。下面看一段 ... -
JDBC模板类实现(version1.1)
2010-01-30 14:34 1344package daoUtil.daoTemplate; ... -
BeanUtils.copyProperties(son, father)使用感想
2010-01-28 12:20 3154BeanUtils.copyProperties(son, f ... -
jdbc数据源
2010-01-20 19:06 1052数据源设计思想和数据库连接池设计思想基本相似。大家知道在操作数 ... -
经典JDBC DAOFactory类实现
2010-01-09 23:02 2407package ajax.user.language.fact ... -
WEB应用中常用的数据库连接池
2009-12-26 16:07 1348数据库连接池是WEB应用中必不可少的东西,这是我个人最近参照别 ...
相关推荐
这是用DELPHI6编写的程序,里面有表格,可以把表格数据存贮为EXCEL文件,也可以把EXCEL文件转换存贮为PDF格式的文件
java将Excel文件转换未pdf文件。依赖itext和poi。附件是一个完整的工程。
Excel文件转换为PDF poi itext itext2.1.5,jexcelapi,iTextAsian.jar, iTextAsianCmaps.jar 极度bs那些把资源分放的那么高的人,赚点分不容易
将word、excel文件转换为PDF文件.doc
把Excel文件转换成PDF格式文件
excel转化为pdf,html,jpg的方法。下载后用eclipse直接导入项目即可。
pdf文件转换成excel文件,免安装。
Total Excel Converter是一款功能强大的Excel万能转换器工具,使用这款软件可以将Excel文件转换为任意的一种其他文件类型,支持转换为DOC,DOCX,PDF,HTML,Access,TXT,ODT,ODS,XML,SQL,CSV,Lotus,DBF,TEX...
Jacob Word excel 转PDF 合并PDF文件,需要安装微软的转换插件,压缩包内含插件
使用com.aspose.cells类实现excel文件转换为pdf文件, 附件jar包 ,dome简单明了
word文件,excel文件,ppt文件转换成pdf文件,java代码实现,已经集成为工具类,可以直接使用,自测ok
Winform 轻松实现Word/Excel转换为PDF文件
.net6 WebApi Excel转PDF并下载PDF文件 .net开发人员 C# Excel转PDF .net6 接口下载文件
实现将doc,xls,ppt,tif等文件转换输出成PDF格式文件
Word(Excel)文件转换为PDF工具
有了PDF转Excel转换器,您可以方便的将PDF文档转换为EXCEL表格进行编辑,计算或者汇总。 因为有些PDF文档,只有部分页面含有表格。PDF转Excel转换器支持设定转换页面范围,可以转换您所需要的PDF部分页面到EXCEL表格...
Aspose生成EXCEL并转PDF格式文件,更容易 的操作EXCEL文件
通过命令行测试 , 参数为excel路径和pdf目标路径。 可以通过java调用,实现自动转换。
word转换成pdf、excel转换成pdf,能打印的都能转换成pdf文件