一、综述
本人在项目中遇到了导出word文档这一功能,于是进行了一定的预研工作。因为以前使用过poi进行excel导出,所以开始的时候,我也是打算用poi实现这一功能的。但是在使用poi的过程中,发现编写的代码结构与html相比异常复杂和繁琐,再加上本人英文苦手,让我对这API一路找功能,简直难上加难。于是查阅了很多资料,终于找到了一种我认为比较简单的方式。就是使用itext-2.1.7,需要注意的是只有2.1.7这个版本可以实现这一功能,后续版本已经将该功能删除。下面总结一下简单的使用方法:
二、使用jar包:
itext-2.1.7.jar;
itext-rtf-2.1.7.jar;
三、开始使用
- 创建word文件
File f = new File("D:/buffer/");
f.mkdirs();
f = new File(f.getPath()+"/demo.doc");
- 创建itext文档对象
Document document = new Document(PageSize.A4);
- 创建RtfWriter对象
RtfWriter2.getInstance(document, new FileOutputStream(f));
- 插入段落
Paragraph p = new Paragraph("基本信息表", new Font(Font.NORMAL, 18, Font.BOLD, new Color(0, 0, 0)));
document.add(p);
- 插入表格
itext的表格没有行的概念,插入的都是单元格,itext内部会根据表格的列数自动进行换行。
Table table = new Table(2);
//设置表格样式
table.setBorderWidth(2f);
table.setBorderColor(Color.BLACK);
table.setPadding(5);
table.setSpacing(0);
table.setAlignment(1);
//创建默认单元格
Cell c = new Cell();
c.setHorizontalAlignment(Cell.ALIGN_CENTER);
c.setVerticalAlignment(Cell.ALIGN_MIDDLE);
table.setDefaultCell(c);
//创建单元格
Cell cell = new Cell(new Paragraph("名称","demo"));
cell.setColspan(2);
table.addCell(cell);
document.add(table);
- 插入图片
Image img = Image.getInstance("D:/img.png");
//调整图片宽高,并且锁定宽高比
float width = 500;
float height = img.getHeight()/img.getWidth()*width;
img