最近在写新项目,其中遇到了比较好玩的要求,就是要把统计功能中的图表和表格导出去。在选择用什么方案解决问题 ,使用了POI导出EXCEL,导出的图表看起来不好看,背景有方格就弃用了,最后敲定了用ITEXT框架来写。使用Itext的jar分别是:com.lowagie.itext.2.1.7和com.lowagie.itext-rtf.2.1.7。
/**
* word创建表单
*@param tableDatas真实数据集合
*@param columns标题
*@param imagePath文件地址
*@param wordFileName 文档名字
*/
public String itextCreateTable(List tableDatas,String[] columns ,String wordFileName){
booleanbool =true;
try{
//把文件放到桌面上
File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();
String desktopPath = desktopDir.getAbsolutePath();
Document document =newDocument(PageSize.A4.rotate());
RtfWriter2.getInstance(document, newFileOutputStream(desktopPath+"\\"+wordFileName+".doc"));
document.open();
//创建多个表格
Table aTable =newTable(columns.length);
for(String s:columns) {
//把表格上方的标题创建出来
aTable.addCell(newCell(s));
}
//把数据填写到表格中,只要够了表格数量会自动换行
for(TableData tableData : tableDatas){
aTable.addCell(newCell(tableData.getKey()));
for(String number:tableData.getValue()) {
aTable.addCell(newCell(number));
}
}
document.add(aTable);
document.add(newParagraph("\n"));
document.close();
}catch(Exception e) {
bool =false;
e.printStackTrace();
}
if(bool){
return"导出成功(在桌面)";
}else{
return"请关闭word文档,再重新导出";
}
}
tableDatas={"总投资(万元)",[ 1,2,3,4,5,6,7,8,9]}
columns = ["项目类别", "实施方案", "规划环评","大纲+报告书","仅大纲","报告书","报告表","补充报告","补充报告书","补充报告表"]
这两个数据都是在页面处理传到后台
网友评论