前两天公司的项目有一个需求,需要把一个JSP上面的表格导出成word,本来想直接在jsp上面设置
<span style="font-size:18px;">response.setContentType("application/msword;charset=utf-8");</span>
来直接导出成word的,但是这样的效果很差,样式和表格的边框都没有了,有图的地方,图还变得很大,总之自己都看不下去了,更别说拿去交差。。。
于是乎就各种百度找解决方案,最后决定用iText来实现,iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。在这里我使用iText生成word。。。首先来看看效果图。。
看起来的感觉是不是还不错哦,那么看看java代码是如何实现的吧。。在上代码之前,需要注意的是,使用iText必须在项目里添加 itext-2.1.7.jar itext-rtf-2.1.7.jar iTextAsian.jar 这三个jar包,不然没法使用的哦。。。代码才是王道,直接上代码了吧。
package itext;
import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.style.RtfFont;
public class WordTestDemo {
public void createDocContext(String file) throws DocumentException,
IOException {
String titleStr = "城市管理案件派遣单"; //title
String executor_name = "王大锤"; //管理员
String finish_time = "2015-1-2"; //受理时间
String case_code = "2032215"; //案件编号
String creator_name = "张三"; //投诉人
String creator_tel = "1319219776x"; //投诉人电话
String inspectPic = "http://images.huanqiu.com/sarons/2013/08/8203e7e1343e6d724bba6faad1e7a04f.jpg"; //图片
String veriferPic = "http://images.huanqiu.com/sarons/2013/08/8203e7e1343e6d724bba6faad1e7a04f.jpg"; //图片
String case_road = "广场"; //所在路段
String case_location = "案件地址。。。"; //案件地址
String sourceName = "市民上报"; //案件来源
String class_name = "宣传广告"; // 大类名称
String subclass_name = "非法小广告"; //小类名称
String case_desc = "这是一个案件。。。"; //内容描述
String register_time = "2015-12-13"; //立案时间
String register_name = "管理员"; //值班长
String register_desc = "完全同意"; //立案意见
String dispatch_dept_name = "第一部门"; //责任单位
String endTimeHours = "8小时"; //处理时限
String dispatch_assist_dept_name = "第二部门"; //协助部门
String endStr = "XXXX管理局";
// 设置纸张大小
Document document = new Document(PageSize.A4);
// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
RtfWriter2.getInstance(document, new FileOutputStream(file));
document.open();
// 设置中文字体
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 标题字体风格
RtfFont titleFont = new RtfFont("宋体", 21, Font.BOLD, Color.BLACK);
/* Font title