itext生成word文档方法
从事程序员职业的朋友可能都会遇到类似情况,经常需要将一个表格导出成word来供客户打印,这个解决问题的方法可以用itext生成word文档方法来实现。当然用excel导出也可以实现,但是如果表格主要是文字信息的话使用word文档更合适。
需要的jar包:iTextAsian.jar,iText-rtf-2.1.3.jar,iText-2.1.3.jar;
参考代码:
response.addHeader("Content-disposition", "attachment;filename="" + new String("信息处理表.doc".getBytes("gb2312"), "ISO8859-1"));
String letrId = request.getParameter("letrId");
// 创建word文档,并设置纸张的大小
com.lowagie.text.Document document = new com.lowagie.text.Document(PageSize.A4);
try{
RtfWriter2.getInstance(document,"e:123.doc");
document.open();
Fontf=newFont();
Stringtopic="处理反馈表";
Paragraphp=newParagraph(topic,newFont(Font.NORMAL,18,Font.BOLDITALIC,newColor(0,0,0)));
p.setAlignment(1);
document.add(p);
//设置中文字体
BaseFontbfFont=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
//创建有三列的表格
Tabletable=newTable(3);
table.setBorderWidth(1);
table.setBorderColor(Color.BLACK);
table.setPadding(0);
table.setSpacing(0);
//添加表头的元素
Cellcell=newCell(title);//单元格
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setHeader(true);
cell.setColspan(3);//设置表格为三列
cell.setRowspan(2);//设置表格为2行
table.addCell(cell);
table.endHeaders();//表头结束
cell=newCell("时间:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph((vl.getLetrDate())。toString()));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(2);
table.addCell(cell);
cell=newCell("重要程度:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph((vl.getImptLevel())。toString()));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(2);
table.addCell(cell);
//测试1
cell=newCell("测试1:");
cell.setRowspan(5);//当前单元格占两行,纵向跨度
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
table.addCell("姓名:");
table.addCell(vl.getPernName());
table.addCell("性别:");
table.addCell(vl.getPernSex());
table.addCell("公司:");
table.addCell(vl.getPernUnit());
table.addCell("职务:");
table.addCell(vl.getPernPost());
table.addCell("地址:");
table.addCell(vl.getPernAddress());
//测试2
cell=newCell("测试2:");
cell.setRowspan(4);//当前单元格占两行,纵向跨度
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
table.addCell("姓名:");
table.addCell(vl.getWrirName());
table.addCell("单位:");
table.addCell(vl.getWrirOrganization());
table.addCell("性别:");
table.addCell(vl.getWrirSex());
table.addCell("电话:");
table.addCell(vl.getWrirTnur());
//简要内容
cell=newCell("简要内容:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph(vl.getLetrNote()));
cell.setColspan(2);
table.addCell(cell);
//测试3
cell=newCell("测试3:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph(vl.getDeptVerifyOpinion()));
cell.setColspan(2);
table.addCell(cell);
//测试4
cell=newCell("测试4:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph(vl.getChargeVerifyOpinion()));
cell.setColspan(2);
table.addCell(cell);
//测试5
cell=newCell("测试5:");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell=newCell(newParagraph(vl.getHandleContent()));
cell.setColspan(2);
table.addCell(cell);
document.add(table);
document.add(newParagraph(""));
document.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(DocumentExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
在word中可以按照你所要求的格式,利用itext的table、cell、图片等“画”出想要的文档格式,然后再将数据往其中填充;如果想要将报表导出成pdf格式的,用itext也可以很轻松的实现。
2024-07-20 广告