这几天在项目组只做了很少的事情,主要还是自己不认真地说.我的部分是要负责用itext导出word文档这一块,之前看到大佬们做出了EXCEL部分觉得很是惊奇,就像刚刚接触HTML一样的感觉。但是毕竟自己的任务就要好好的去完成,所以经过努力还是取得了一点的成果.的。

先上一个效果图

接下来就是代码了,码字不易,还有事情要做~~

从前台利用Ajax传入到后台部分后,利用itext方法导出word,需要注意的是document.close和out.close这两个部分,没有close很容易出错。

public void exportJdyWord(HttpServletResponse response,HttpServletRequest request,String xsId) throws UnsupportedEncodingException {
for(int c=1;c<=2;c++){
String s = " select c_username from c_kdxsyb where c_xs_id = ? and c_xs_rq = '"+c+"'";
List<Map<String,Object>> username = jt.queryForList(s,xsId);
Set<String> set = new HashSet<String>();
for(int i=0;i<username.size();i++){
Map <String, Object> map = username.get(i);
Object vala = map.get(username);
if(vala!=null){String v = vala.toString();
set.add(v);}
}
response.setContentType("application/msword");//下载
String agent = request.getHeader("USER-AGENT").toLowerCase();
String codedFileName = java.net.URLEncoder.encode("监督员表", "UTF-8");
if (agent.contains("firefox")) {
response.setCharacterEncoding("utf-8");
response.setHeader("content-disposition",
"attachment;filename=" + new String("监督员".getBytes(), "ISO8859-1") + ".doc");
} else {
response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".doc");
}


try{

Document document = new Document(PageSize.A4);
OutputStream out = response.getOutputStream();
RtfWriter2.getInstance(document, out);

document.open();//打开文件

BaseFont bfChinese = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
Font titleFont = new Font(bfChinese, 12, Font.BOLD);//标题的字体风格
Font contextFont = new Font(bfChinese, 10, Font.NORMAL);//正文的字体风格
Table table = new Table(7,(username.size()+4));
int [] withs = {1,2,1,1,3,4,2};//设置每个表头的宽度,以下是设计表格
table.setWidths(withs);
table.setWidth(100);
table.setAlignment(Element.ALIGN_CENTER);
table.setAutoFillEmptyCells(true);
String titleString = "2017年11月"+(c+6)+"日督员名单";
Paragraph title = new Paragraph(titleString);
title.setAlignment(Element.ALIGN_CENTER);
title.setFont(titleFont);
document.add(title);//添加标题
String contextString = "考点院校名:东北师范大学人文学院东区1号楼B区 考场数:29个 巡考人员数:12名 考点联系人:李慧玲 联系电话:13844057575 考点地址:长春市净月区博硕路1488号 值班电话:0431-84537193";
Paragraph context = new Paragraph(contextString);
context.setAlignment(Element.ALIGN_CENTER);
context.setFont(contextFont);
context.setSpacingBefore(10);//设置与上一段落的间距
context.setFirstLineIndent(7);
document.add(context);
//表格部分
Cell[] cellHeaders = new Cell[7];//创建表头
cellHeaders[0] = new Cell(new Phrase("序号", contextFont));
cellHeaders[1] = new Cell(new Phrase("姓名",contextFont));
cellHeaders[2] = new Cell(new Phrase("级别",contextFont));
cellHeaders[3] = new Cell(new Phrase("性别",contextFont));
cellHeaders[4] = new Cell(new Phrase("电话",contextFont));
cellHeaders[5] = new Cell(new Phrase("工作单位",contextFont));
cellHeaders[6] = new Cell(new Phrase("分管考场",contextFont));
for (int i1 = 0; i1 < 7; i1++) {
cellHeaders[i1].setHorizontalAlignment(Element.ALIGN_CENTER);
cellHeaders[i1].setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cellHeaders[i1]);
}
//向表格填充数据
String contextString1="领导审批: 审核: 制表人:魏建强 备注:扣税每月同工资一并计算扣缴。";
Paragraph context1 = new Paragraph(contextString1);
context.setAlignment(Element.ALIGN_CENTER);
context.setFont(contextFont);
context.setSpacingBefore(10);

for(int i=0;i<username.size();i++){
String name = username.get(i).toString();
name = name.substring(12);
name = name.substring(0,name.length()-1);

for(int lie=1;lie<8;lie++){
if(lie==2)
{
Cell celladd = new Cell(new Phrase(name,contextFont));
table.addCell(celladd);
}
else
{
Cell cell_null = new Cell(new Phrase("",contextFont));
table.addCell(cell_null);}
}
}
String s1 = " select from c_kdxsyb";
Cell cell1 = new Cell(new Phrase("乘坐车辆:1号大客车", contextFont));//添加表格的跨列部分
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell1.setColspan(4);
table.addCell(cell1);

Cell cell2 = new Cell(new Phrase(" ", contextFont));//添加表格的跨列部分
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell2.setColspan(3);
table.addCell(cell2);

Cell cell3 = new Cell(new Phrase(" 无委会",contextFont));
cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell3.setColspan(4);
table.addCell(cell3);

Cell cell4 = new Cell(new Phrase("组长:赵 琦18686420022",contextFont));
cell4.setHorizontalAlignment(Element.ALIGN_CENTER);
cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell4.setColspan(3);
table.addCell(cell4);

Cell cell5 = new Cell(new Phrase("安保人员",contextFont));
cell5.setHorizontalAlignment(Element.ALIGN_CENTER);
cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell5.setColspan(4);
cell5.setRowspan(2);
table.addCell(cell5);

Cell cell6 = new Cell(new Phrase("李卫东 15904405903",contextFont));
cell6.setHorizontalAlignment(Element.ALIGN_CENTER);
cell6.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell6.setColspan(3);
table.addCell(cell6);

Cell cell7 = new Cell(new Phrase("孙中富 15904407150",contextFont));
cell7.setHorizontalAlignment(Element.ALIGN_CENTER);
cell7.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell7.setColspan(3);
table.addCell(cell7);

document.add(table);
document.add(context1);
document.close();
out.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}

关于java中用itext导出word的一点想法的更多相关文章

  1. 【转】Java通过IText导出word和pdf

    原帖地址:http://blog.csdn.net/zwx19921215/article/details/34439851 最近做的项目中需要用到把Highcharts图表导出word和pdf的功能 ...

  2. java用iText导出word文档

    1.需要导入的jar包 2.导出word并下载其实是分两步的. 第一步是将需要导出的数据导出(上传)到服务器上 第二步是将服务器上的文档下载到本地 3. 第一步.上传文档 (1)设置响应信息以及构造上 ...

  3. Java使用iText生成word文件的完美解决方案(亲测可行)

    JAVA生成WORD文件的方法目前有以下种: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案 一种是pio但是他的excel处理很程序 wor ...

  4. Java使用IText(VM模版)导出PDF,IText导出word(二)

    ===============action=========================== //退款导出word    public void exportWordTk() throws IOE ...

  5. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...

  6. Java使用velocity导出word

    效果展示: 使用word编辑好模板

  7. Java用freemarker导出word

    概述 最近一个项目要导出word文档,折腾老半天,发现还是用freemarker的模板来搞比较方便省事,现总结一下关键步骤,供大家参考,这里是一个简单的试卷生成例子. 详细 代码下载:http://w ...

  8. Java使用freemarker导出word文档

    通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...

  9. Java 将html导出word格式

    @RequestMapping("download") public void exportWord( HttpServletRequest request, HttpServle ...

随机推荐

  1. IBM Security AppScan Standard 用外部设备录制脚本(手机端应用、app、微信等)进行安全测试

    一.打开AppScan,选择外部设备/客户机,点击下一步 二.记录代理设置,可以手动输入需要的端口号,也可以自动选择,记住端口号以及PC电脑的ip地址,手机端如何设置对应的端口跟ip可以参考 Jmet ...

  2. 【Python3之多进程】

    一.进程和线程的简单解释 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 用生活举例: (转自阮一峰网络日志) 1.计算机的核心是CPU,它承担了所有 ...

  3. npm 的用法

    当用npm 安装依赖时如果加上  --save  就会自动把依赖模块添加到package.json中  别人下载时直接npm install 加载后就可以了

  4. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

  5. Unity User Group 北京站图文报道:《Unity虚拟现实实战技巧》

    时间来到了盛夏,北京UUG活动也来到了第八期.本次活动的主题为<Unity虚拟现实实战技巧>,为此我们邀请了4位资深的行业大神.这次我们仍然在北京市海淀区丹棱街5号微软大厦举行活动,在这里 ...

  6. HDU 2255 奔小康赚大钱(带权二分图最大匹配)

    HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...

  7. Android_65535问题的解决

    做过比较大的项目的人都知道,当app大到一定程度的时候,会出现65535这个错误,也就是64K,也就是,一个app包中,方法数不能超过65535个,超过了就要分成多个dex包,这个别问为什么,andr ...

  8. Win10系统下安装Oracle服务器和Oracle客户端

    工作电脑从Win7换为Win10,在给Win10系统安装Oracle时花费了很长世间终于搞定,在此给大家分享下. 1.工作中需要连接测试环境.生产环境Oracle,所以安装了公司封装的Oracle客户 ...

  9. 常用http响应报文分析

    这是我在使用Asp.Net的时候,整理的的一些关于Http响应报文的分析笔记,零零散散的记录, 现在贴出来,抛砖引玉,如果有什么不对或者不严谨的地方,请各位大神不吝赐教. 一.HTTP响应码响应码由三 ...

  10. Ambari部署时问题之Ambari Metrics无法启动

    首先,我的问题是如下: Traceback (most recent call last): File , in <module> AMSServiceCheck().execute() ...