模板名称.xml
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 14">
<meta name=Originator content="Microsoft Word 14">
<title>
</title>
<style media="all">
.noprint { display: none }
td{height:30px; padding-left:5px;}
.tableList{ border:solid 1px #000; border-right:none; border-collapse:collapse; float:left}
.tableList td{ text-align:center;font-size : 15px height:35px; line-height:21px; border-right:solid 1px #000;border-collapse:collapse; border-bottom:solid 1px #000;}
</style>
</head>
<body style="font-size:12px;">
<#list allSuperviseList as superviseMap>
<#list superviseMap?keys as itemKey>
<#assign superviseList="" />
<#assign superviseList=(superviseMap[itemKey]?if_exists) />
<#if (superviseMap_index%2=0)>
<center><font size="3">${itemKey}</font></center>
<table id="tbQuestion" width="700" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="vertical-align: top;" class='tableList'>
<tr style="height:40px; text-align: center;">
<td width='30%'><b>监察点</b></td>
<td width='70%'><b>规则描述</b></td>
</tr>
<#if (!superviseList?? || superviseList?size=0)>
<tr>
<td></td>
<td></td>
</tr>
<#else>
<#assign outerCount=0 /> <!-- 第几个监察点 -->
<#list superviseList as supervise>
<#assign outerCount=outerCount+1 />
<#assign innerCount=0 />
<#assign size=0 />
<#list superviseList as sup>
<#assign innerCount=innerCount+1 />
<#if (innerCount < outerCount && supervise.sysDict.dictName=sup.sysDict.dictName)>
<#assign size=size+1 />
</#if>
</#list>
<#if (size=0)>
<#assign count=0 />
<#assign content=supervise.sysDict.dictName />
<#list superviseList as s>
<#if (supervise.sysDict.dictName=s.sysDict.dictName)>
<#assign count=count+1 />
</#if>
</#list>
<tr>
<td style="text-align:left; padding:5px;" rowspan="${count}">
<#if (supervise.sysDict.dictName)??>
${supervise.sysDict.dictName}
</#if>
</td>
<#list superviseList as s>
<#assign index=0 />
<#if (supervise.sysDict.dictName=s.sysDict.dictName)>
<#assign index=index+1 />
<#if (count = 1)>
<td>
${s.superviseDescribe}
</td>
</tr>
</#if>
<#if (count > 1)>
<#if index = 1>
<td>
${s.superviseDescribe}
</td>
</tr>
<#else>
<tr>
<td>
${s.superviseDescribe}
</td>
</tr>
</#if>
</#if>
</#if>
</#list>
</#if>
</#list>
</#if>
</table>
<br/>
<br/>
<#elseif (superviseMap_index%2=1) >
<center><font size="3">${itemKey}</font></center>
<table id="tbQuestion" width="700" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="vertical-align: top;" class='tableList'>
<tr style="height:40px; text-align: center;">
<td width='15%'><b>异常类型</b></td>
<td width='20%'><b>分项内容</b></td>
<td width='65%'><b>异常描述</b></td>
</tr>
<#if (!superviseList?? || superviseList?size=0)>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<#else>
<#assign outerCount=0 /> <!-- 第几个监察点 -->
<#list superviseList as serviceSupervise>
<#assign outerCount=outerCount+1 />
<#assign innerCount=0 />
<#assign size=0 />
<#list superviseList as sup>
<#assign innerCount=innerCount+1 />
<#if (innerCount < outerCount && serviceSupervise.sysDict.dictName=sup.sysDict.dictName)>
<#assign size=size+1 />
</#if>
</#list>
<#if (size=0)>
<#assign count=0 />
<#list superviseList as s>
<#if (serviceSupervise.sysDict.dictName=s.sysDict.dictName)>
<#assign count=count+1 />
</#if>
</#list>
<tr>
<td style="text-align:left; padding:5px;" rowspan="${count}">
<#if (serviceSupervise.sysDict.dictName)??>
${serviceSupervise.sysDict.dictName}
</#if>
</td>
<#list superviseList as s>
<#assign index=0 />
<#if (serviceSupervise.sysDict.dictName=s.sysDict.dictName)>
<#assign index=index+1 />
<#if (count = 1)>
<td>
${s.superviseContent}
</td>
<td>
${s.superviseDescribe}
</td>
</tr>
</#if>
<#if (count > 1)>
<#if index = 1>
<td>
${s.superviseContent}
</td>
<td>
${s.superviseDescribe}
</td>
</tr>
<#else>
<tr>
<td>
${s.superviseContent}
</td>
<td>
${s.superviseDescribe}
</td>
</tr>
</#if>
</#if>
</#if>
</#list>
</#if>
</#list>
</#if>
</table>
<br/><br/><br/><br/><br/><br/>
</#if>
</#list>
</#list>
</body>
</html>
java 代码
/**
* 批量导出服务事项内容
* @author liulx
* @date 2014-7-30
* @return
*/
public String batchExportServiceItem() {
try {
serviceList = mlbzServiceManagerService.findServiceItemsOrderByOrgan(areaId, organId, serviceItemsType, itemCode, itemName, isSubItem, BaseParameter.AUDIT_STATUS_3);
Map<String, Map<String, String>> valueMap = new HashMap<String, Map<String,String>>();
String itemTypeName = null;//事项类型名称
String workTypeName = null;//日期类型
String lawTypeName = null;//法定日期类型
String sqccName = null;//事权层次名称
String comeCenterNumName = "";//来中心次数对应的类型
String dzwdTypeName=null;//电子档格式名称
String yyFlagName = null;//网上预约名称
String kdFlagName=null;//是否支持快递
String specificOrderTypeName = "";//特殊程序名称
String specificOrderType = null;//特殊程序名称
List list = new ArrayList();
List serviceStepList = new ArrayList();
for (int j=0; j<serviceList.size(); j++) {
queryObj = serviceList.get(j);
//通过事项主键获取事项对象
//得到事项类型
Iterator it = BaseParameter.ITEMTYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getServiceType())) {
itemTypeName = BaseParameter.ITEMTYPE.get(queryObj.getServiceType());
break;
}
}
//获取承诺期限
it = BaseParameter.DATETYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getWorkType())) {
workTypeName = BaseParameter.ITEMTYPE.get(queryObj.getWorkType());
break;
}
}
//获取法律承诺期限
it = BaseParameter.DATETYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getLawType()))
lawTypeName = BaseParameter.ITEMTYPE.get(queryObj.getLawType());
}
//获取事权层次
it = BaseParameter.SQCC.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getSqcc()))
sqccName = BaseParameter.SQCC.get(queryObj.getSqcc());
}
//是否支持网上预约
it = BaseParameter.YES_NO.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getYyFlag()))
yyFlagName = BaseParameter.YES_NO.get(queryObj.getYyFlag());
}
//是否支持快递送件
it = BaseParameter.YES_NO.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getKdFlag()))
kdFlagName = BaseParameter.YES_NO.get(queryObj.getKdFlag());
}
//获取受理提交的材料
String comeType = queryObj.getComeCenterType();
String[] comeCenterType = null;
if (!Common.isNullOrSpace(comeType)) {
comeCenterType = comeType.trim().split(",");
}
it = BaseParameter.COMECENTERTYPE.keySet().iterator();
String temp = "";
while (it.hasNext()) {
temp = (String) it.next();
if (!Common.isNullOrSpace(temp)) {
temp = temp.trim();
}
if(temp.equals(queryObj.getComeCenterOther())){
comeCenterNumName += BaseParameter.COMECENTERTYPE.get(queryObj.getComeCenterOther().trim()) + " ";
}
if (comeCenterType != null && comeCenterType.length > 0) {
for (int i=0; i<comeCenterType.length; i++) {
if(temp.equals(comeCenterType[i].trim())){
if (temp.equals(BaseParameter.COMECENTERTYPE_2)) {
comeCenterNumName += BaseParameter.COMECENTERTYPE.get(comeCenterType[i].trim());
if (!Common.isNullOrSpace(queryObj.getComeCenterOther())) {
comeCenterNumName += "(" + queryObj.getComeCenterOther() + ") ";
}
} else {
comeCenterNumName += BaseParameter.COMECENTERTYPE.get(comeCenterType[i].trim()) + " ";
}
}
}
}
}
if (!Common.isNullOrSpace(comeCenterNumName)) {
comeCenterNumName = comeCenterNumName.trim();
}
materialList = mlbzServiceMaterialService.queryMaterialList(queryObj.getServiceId());
for(ServiceBaseMaterial serviceBaseMaterial:materialList){
//获取电子档格式
it = BaseParameter.DZWDTYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(serviceBaseMaterial.getDzwdType()))
dzwdTypeName = BaseParameter.DZWDTYPE.get(serviceBaseMaterial.getDzwdType());
}
}
//获取服务表格list
formList = mlbzServiceFormService.queryFormList(queryObj.getServiceId());
//常见问题list
questionList = mlbzServiceQuestionService.queryQuestionList(queryObj.getServiceId());
//办理环节list
stepList = mlbzServiceBaseStepService.queryServiceStepList(queryObj.getServiceId());
for(ServiceBaseStep serviceBaseStep:stepList){
//获取特别程序类型
it = BaseParameter.SPECIFICTYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(serviceBaseStep.getSpecificOrderType())){
specificOrderType = BaseParameter.SPECIFICTYPE.get(serviceBaseStep.getSpecificOrderType());
if(serviceBaseStep.getIsSpecific().equals("1")){
if(specificOrderType != null){
specificOrderTypeName += specificOrderType+" ";
}
}
}
}
//廉政风险点信息list
incorruptList = mlbzServiceBaseStepIncorruptService.queryIncorruptList(serviceBaseStep.getStepId());
list.add(incorruptList);
}
Map<String, String> tempMap = new HashMap<String, String>();
tempMap.put("itemTypeName", itemTypeName);
tempMap.put("workTypeName", workTypeName);
tempMap.put("lawTypeName", lawTypeName);
tempMap.put("sqccName", sqccName);
tempMap.put("comeCenterNumName", comeCenterNumName);
tempMap.put("dzwdTypeName", dzwdTypeName);
tempMap.put("yyFlagName", yyFlagName);
tempMap.put("kdFlagName", kdFlagName);
tempMap.put("specificOrderTypeName", specificOrderTypeName);
tempMap.put("specificOrderType", specificOrderType);
valueMap.put(queryObj.getServiceId(), tempMap);
queryObj.setMaterialList(materialList);
queryObj.setFormList(formList);
queryObj.setQuestionList(questionList);
queryObj.setStepList(stepList);
queryObj.setList(list);
}
Map<String, Object> data = new HashMap<String, Object>();
data.put("serviceList", serviceList);
data.put("valueMap", valueMap);
//导出事项名称
areaName = sysAreaService.getSysAreaBytopId(areaId) != null ? sysAreaService.getSysAreaBytopId(areaId).getAreaName() : "";
if (!Common.isNullOrSpace(organId)) {
organName = sysOrganService.getSysOrganInfo(organId) != null ? sysOrganService.getSysOrganInfo(organId).getOrganName() : "";
}
String serviceItemNameStr = "";
if (!Common.isNullOrSpace(serviceItemsType)) {
Iterator it = BaseParameter.ITEMTYPE.keySet().iterator();
while (it.hasNext()) {
if(it.next().equals(queryObj.getServiceType())) {
serviceItemNameStr = BaseParameter.ITEMTYPE.get(queryObj.getServiceType());
break;
}
}
}
String exportFileName = new String((areaName + (!Common.isNullOrSpace(organName) ? ("_" + organName + "") : "") + (!Common.isNullOrSpace(serviceItemNameStr) ? ("_" + serviceItemNameStr) : "") + ".doc").getBytes(),"iso8859-1");
String ftlDir = "WEB-INF/templates";
String ftlName = "batchServiceBaseItem.ftl";
String contentType = "application/octet-stream";
documentHandler = new DocumentHandler();
documentHandler.handleDocument(this.getRequest(), getResponse(),
contentType, exportFileName, data, ftlDir, ftlName);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public class DocumentHandler{
private Configuration configuration = null;
public DocumentHandler() {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
/**
* 加载模板 填充数据
*
* @param request 请求
* @param response 响应
* @param contentType 返回流中的内容类型
* @param exportFileName 输出的文件的文件名
* @param data 预装数据
* @param ftlDir 模板存放目录
* @param ftlName 模板名
*/
public void handleDocument(HttpServletRequest request, HttpServletResponse response,
String contentType, String exportFileName,
Map<String, Object> data, String ftlDir, String ftlName)
throws IOException {
Template t = null;
configuration.setServletContextForTemplateLoading(request.getSession().getServletContext(),ftlDir);
configuration.setObjectWrapper(new DefaultObjectWrapper());
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
t = configuration.getTemplate(ftlName);
response.setCharacterEncoding("UTF-8");
response.setContentType(contentType);
exportFileName = URLDecoder.decode(exportFileName, "UTF-8");
response.setHeader("Content-Disposition","attachment; filename=" + exportFileName);
Writer out = response.getWriter();
try {
t.process(data, out);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}