最近一个项目需要导出word文档,网上了解了一下,发现poi导出excel比较好,但是导出word就力不从心了,大家都比较推荐iText,于是试了试,感觉还不错。
我用的是2.1.7版本。
1. 使用maven导入依赖
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
</dependency>
还有一个包是itextasian-1.5.2.jar, 这是在各个maven库没有找到,而我因为一些原因不方便建自己的maven库,所以只好直接在项目里面添加依赖。
2. 贴上完整的代码
package com.sofree.web.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
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.sofree.business.model.TaKyxmApplyperson;
import com.sofree.business.model.TaKyxmApplyteacher;
import com.sofree.business.model.TaKyxmProjectinfo;
/**
* @author Jack
*
*/
public class ExportWordUtil {
public static ByteArrayOutputStream exportProjectWord(TaKyxmProjectinfo obj) {
try {
// 设置纸张大小
Document document = new Document(PageSize.A4);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
// 建立一个书写器,与document对象关联
RtfWriter2.getInstance(document, buffer);
document.open();
// 设置中文字体
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 正文字体风格
Font contextFont = new Font(bfChinese, 10, Font.NORMAL);
document.add(getTitle(bfChinese));
document.add(getProjectName(contextFont, obj));
// 设置Table表格,创建一个六列的表格
Table table = new Table(6);
int width[] = { 5, 10, 15, 25, 15, 30 };// 设置每列宽度比例
table.setWidths(width);
table.setWidth(95);// 占页面宽度比例
table.set