excel转pdf

暑假实习期间,跟着项目组开发办公自动化系统,在这里面可能都会遇到将各类文件转成pdf,  如txt,jpg,png等图片格式,还有MS offfice系列的word,ppt,excel.

在这里说下解决excel转pdf的问题,个人觉得这个最困难。

excel 有工作簿,工作表,单元格

操作excel包括对象Workbook,Sheet ,Cell。

      一个excel就对应一个Workbook对象,

      一个Workbook可以有多个Sheet对象

      一个Sheet对象可以有多个Cell对象

要将excel转pdf,就先要获取excel的内容,工作表,单元格。读取excl

(1)JXL , 这个是最常见用于读取excel文件,  但这个不支持07 excel 。

(2)POI, 这个可以读取03,07excel,对应的方法网上很多,百度下。

首先先介绍几种转pdf方法

1,itext (百度下它用法,所需要的jar包)

利用iText五步创建一个PDF文件:helloword。

第一步,创建一个 iTextSharp.text.Document对象的实例:

Document document = new Document();

第二步,为该Document创建一个Writer实例:

PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));

第三步,打开当前Document

document.Open();

第四步,为当前Document添加内容:

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

第五步,关闭Document

document.Close();


如果用IText将excel转pdf.需要你先将读取excel表中每个工作表中的每个单元格,然后一个一个转化到pdf中,同时还有单元格边距,前景色,背景色等一系列属性,而且很难获取到图表等格式内容,因为图表不是在某几个单元格内。如果利用itext实现很困难,个人不推荐,但是别的格式,图片等均可以。


2 ,openoffice


这个可以参考老赵的这篇博客

http://blog.zhaojie.me/2010/05/convert-document-to-pdf-via-openoffice.html

这种方法就是我们不需要自己一个一个去读取excel单元格,传文件几个参数就可以转了,相 于第三方去帮我们转成pdf.

当时用这种方法实现了excel转成pdf,但由于当时考虑服务器端要装太多东西就放弃了这种方法。


3,Jacob 这是我们项目组采用的方法

jacob转MS office系列 word,ppt,excel 都很类似,它的实现方法挺特别的。大致过程分这几步

构建容器,读取excel工作表,执行excel另存操作 (这里面excel工作表不能为空)

在这第二步中,你需要一一获取excel工作表,不然只能转化当前活动工作表(也就是你打开excel所看到的第一个表)。不能将整个excel表都转成pdf.

 这个你可以查询excel脱机开发人员参考,查找workboos对象,有个属性count,item ,首先获取当前excel工作表数量(count),然后一一获取工作表。

这样每个工作表转成一个pdf临时文件,你还需要将多个工作表生成的pdf文件合并成一个pdf文件,删除掉这些临时文件。

你百度用“iText分割和合并pdf文件”,这个可以帮你解决。


整个处理过程大概就是这样的.

(注意)

上面所说的方法都是当整个excel 转成pdf, 如果项目的需求有变化,只想将excel某几个工作表转成pdf。

这时将整个excel表进行处理,获取只需要的几个工作表。我的思路是删除除需要的工作表,

举个例子,excel有5个工作表,不为空表,我需要1,3工作表,这时我删除掉2,4,5工作表,仅保留1,3工作表,然后再用上述三种方法(其中一种)转成pdf.

我用的poi包先读取,后删除,再转化。


个人实习结束后整理出来,有些可能遗忘的,欢迎相互探讨。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值