这几天在项目组只做了很少的事情,主要还是自己不认真地说.我的部分是要负责用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. VB6之GIF分解

    原文链接:http://hi.baidu.com/coo_boi/item/1264a64172fe8dec1f19bc08 还是找了个C++的翻译下,原文链接:http://www.360doc.c ...

  2. LCS 算法实现

    动态规划算法 #include <iostream> #include <string.h> #include <algorithm> #include <m ...

  3. vue-roter2 路由传参

    本文主要介绍通过vue-router2路由中传参的方法,项目为vue-cli搭建项目 1.路由配置 首先在路由配置处(router/index.js), 在path后面通过:+参数名来指定参数名 需要 ...

  4. poj3320 (尺取法)

    n个数,求最小区间覆盖着n个数中所有的不相同的数字. 解题思路: AC代码: import java.util.HashMap; import java.util.HashSet; import ja ...

  5. maven 打包时mapper.xml打不进去问题

    首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...

  6. MySQL 启动参数说明及性能优化建议

    [mysqld] port = 3306 serverid = 1 socket = /tmp/mysql.sock skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用 ...

  7. nyoj_3:多边形重心问题(计算几何)

    基础的计算几何 多边形的n个顶点按*时针方向给出 由任意n边形可分解为n-2个三角形,各三角形面积面积与重心易得,故有各三角形的面积及重心 用重心公式可求得多边形的面积与重心 题目链接: http:/ ...

  8. linux下查看jdk路径

    jdk安装后 centos中: 执行 rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac' 命令确定, 执行后会输出一个路径,除去路径末尾的 &qu ...

  9. TypeScript--变量及类型的那些事儿

    变量(类型)声明 格式:关键字  变量名称:类型=值 (强类型)     /   关键字  变量名称=值 例子: Array数组声明   Tuple元组类型 声明一个包含多类型的数组: Enum枚举类 ...

  10. Linux学习笔记--一些错误的记录

    运行linux的时候,输入shutdown -r now命令提示:bash:shutdown is not found.出现这个错误是因为这条命令没有加入到系统的配置文件中,运行命令export PA ...