生成doc文件,并压缩进文件夹

2023-11-12

//导出业务人员日志
	@SuppressWarnings("null")
	@RequestMapping(value = "exportEsComDailyList")
	public void exportEsComDailyList(
			@RequestParam(name = "startTime", required = false) String startTime,
			@RequestParam(name = "endTime", required = false) String endTime,
			@RequestParam Map<String, String> parameters, Map<String, Object> model, ModelMap models,
			Principal principal, HttpServletRequest request,HttpServletResponse response) {
		try {
			String userCode = "";
			EsComOperator comUserOperator = null;
			Subject subject = SecurityUtils.getSubject();
			EsComUser comUser = esComUserService.findByUserName(subject.getPrincipal().toString());
			userCode = comUser.getUserCode();
			comUserOperator = escomoperatorService.selectByCode(userCode);
			List<String> resultList = new ArrayList<String>();
			Integer lengthInteger = null;
			if (StringUtils.isNotBlank(comUserOperator)) {
				if (StringUtils.isNotBlank(comUserOperator.getRegRank())) {
					lengthInteger = (Integer.valueOf(comUserOperator.getRegRank()) - 1) * 2;
				} 
			String mLevel = comUserOperator.getManagementLevel();
			resultList = escomoperatorService.listOperatorCodeByUserCodeForDaily(lengthInteger, mLevel, userCode,comUserOperator.getRegCode());
//			int i = 1;
			List<String> files = new ArrayList<String>();
			for (String string : resultList) {
				List<Map<String, Object>> listAction = escomactionService.getDailyByUserCodeAndCreateTime(string, startTime,endTime);
				if(listAction.size() > 0) {
					Map<String, Object> dataMap = new HashMap<String, Object>();
					Date date = new Date();
					String now = new SimpleDateFormat("yyyy年MM月dd日").format(date);
					dataMap.put("fcreateTime", now);
					List<Map<String,String>> list = new ArrayList<Map<String,String>>();
					String username = null;
					for(Map map : listAction) {
						Map<String,String> mapStr = new HashMap<String,String>();
						mapStr.put("date",StringUtils.changeToString(map.get("date")));
						mapStr.put("count",StringUtils.changeToString(map.get("count")));
						mapStr.put("location",StringUtils.changeToString(map.get("location")));
						username = StringUtils.changeToString(map.get("username"));
						mapStr.put("note",StringUtils.changeToString(map.get("note")));
						list.add(mapStr);
					}
					dataMap.put("username", username);
					dataMap.put("userList", list);
					configuration.setClassForTemplateLoading(this.getClass(), "/com/xiangyu/bigdata/xycom/util");
					String fvalue;
					Template t = null;
						t = configuration.getTemplate("dailyoperator.ftl", "utf-8");
					
					// 判断文件夹是否存在
					File file = new File("/work/xyyldoc/");
//					File file = new File("d:/xyyldoc");
					if (!file.exists()) {
						file.mkdirs();
					}
					File f = new File("/work/xyyldoc/" + username + ".doc");
//					File f = new File("d:/xyyldoc/" + username + ".doc");
					Writer bufferedWriter = new OutputStreamWriter(new FileOutputStream(f), "utf-8");
					files.add("/work/xyyldoc/" + username + ".doc");
//					files.add("d:/xyyldoc/" + username + ".doc");

					t.process(dataMap, bufferedWriter);
					bufferedWriter.flush();
					bufferedWriter.close();
//					return "d:/xyyldoc/" + username + ".doc";
				}
//				System.out.println(i);
//				i++;
			}
			outDailyWordManyNew(files, "业务人员日志", response);
			// 循环删除创建的word文件
			File lies;
			if (CollectionUtils.isNotEmpty(files)) {
				for (String file : files) {
					System.out.println("---------------------" + file);
					if (StringUtils.isBlank(file)) {
						continue;
					} else {
						lies = new File(file);
						// 指定文件删除
						lies.delete();
					}
				}
			}
		}
		} catch (Exception e) {
			logger.warn("查询出现问题!", e);
		}
	}
// 检修工单的word 压缩成zip格式
	private void outDailyWordManyNew(List<String> files, String zipname, HttpServletResponse response)
			throws IOException {

		ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
				.getRequestAttributes();
		response = servletRequestAttributes.getResponse();
		String fileName = zipname + ".zip";
		OutputStream os = response.getOutputStream();
		response.setContentType("application/vnd.ms-excel");
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		response.setHeader("content-disposition",
				"attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));

		ZipOutputStream zos = new ZipOutputStream(os);
		byte[] buf = new byte[8192];
		int len;
		for (int i = 0; i < files.size(); i++) {
			File file = new File(files.get(i));
			if (!file.isFile())
				continue;
			ZipEntry ze = new ZipEntry(file.getName());
			zos.putNextEntry(ze);
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
			while ((len = bis.read(buf)) > 0) {
				zos.write(buf, 0, len);
			}
			zos.closeEntry();
			bis.close();
		}
		zos.closeEntry();
		zos.close();
		os.flush();
		os.close();
	}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成doc文件,并压缩进文件夹 的相关文章

  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • Neo-reGeorg正向代理配合kali使用

    Neo reGeorg正向代理配合kali使用 一 Neo reGeorg介绍 在了解Neo reGeorg之前 首先应该知道大名鼎鼎的项目 https github com sensepost reGeorg 其用于开启目标服务器到本地的
  • 数据存储的随想

    文章目录 数据分布的演变 数据的使用 总结 数据分布的演变 数据分布就是一个关于数据存放在哪里的问题 数据存储的地方不是固定的 随着应用规模的扩大 为了治理的方便 会适时地调整 其中就会包括数据存储的调整 数据与应用部署在同一台设备 在早期
  • ACCESS的VBA中如何打开文件对话框并获取选中文件的路径

    在 ACCESS 的 VBA 中 可以使用 FileDialog 对象的 Show 方法来打开文件对话框 并使用 SelectedItems 属性来获取选中文件的路径 例如 Dim fd As FileDialog Set fd Appli
  • C/C++ 报错提示 “表达式必须包含类类型” 与 “不可访问”

    今天给大家分享两个常见的错误 定义对象 调用函数 时提示 表达式必须包含类类型 的报错 对象调用函数时提示 不可访问 的报错 一 表达式必须包含类类型 这种报错会出现在两种情况 类没有数据成员时 使用类定义对象时带括号了 定义类时以指针方式
  • MySQL重装——Database initialization failed错误处理

    卸载MySQL 笔者由于跟着网上的教程将MySQL安装到了C盘 忘记了可以走更改路径这条路 在卸载MySQL的路上一去不复返 试过网上诸多重装方案 大体均为以下步骤 控制面板卸载MySQL 删除注册表 删除ProgramData Appli
  • 导出文件:window.open()

    导出文件 window open globalBus emit loading const Download http window location host DI activity orderExcel actId this actId
  • Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)

    目录 ES Python客户端介绍 封装代码 测试代码 参考 ES Python客户端介绍 官方提供了两个客户端elasticsearch elasticsearch dsl pip install elasticsearch pip in
  • Flink1.13.0 + Hudi 0.11.1 + Hive2.1.1 + presto0.273.3 + yanagishima 18.0

    摘要 flink1 13 0 整合 Hudi 0 11 1 通过FlinkSQL程序 FlinkSQL命令行对Hudi的MOR及COW进行批量写 流式写 流式读取 批量读取 通过flink sql cdc flink sql kafka f
  • CSDN周赛65期简要题解

    最近几期周赛里 貌似 Python 又变成 C 站的亲儿子了 输入形式是列表还不过瘾 现在输出形式也要求是列表 而且是连一个逗号 空格 中括号都不能少的 Python 标准列表形式 虽然对 Python 来说是信手拈来 但总要考虑一下其他编
  • Node.js 使用express搭建后台服务器 ( 进阶篇 )

    上篇文章我们介绍了利用express微服务搭建简单的后台服务器以及中间件 今天我们把模块化的思想注入 利用路由分别管理 暴露API接口与前端交互等等 我们先跑起来服务 let express require express 引入expres
  • Keras深度学习资料

    https cnbeining github io deep learning with python cn 1 introduction ch1 welcome html
  • SpringBoot拦截器和动态代理有什么区别?

    在 Spring Boot 中 拦截器和动态代理都是用来实现功能增强的 所以在很多时候 有人会认为拦截器的底层是通过动态代理实现的 所以本文就来盘点一下他们两的区别 以及拦截器的底层实现 1 拦截器 拦截器 Interceptor 准确来说
  • 获取google chrome浏览器的安装位置

    今天 要获取chrome exe安装的路径 发现window XP 和 win 7 的用户路径是一样的 win7 C Users Administrator AppData Local Google Chrome Application 这
  • 2021-1-28Linux学习纪要

    linux 目录结构 bin 存放经常使用的指令 sbin 存放的是系统管理员使用的系统管理程序 home 存放普通用户的主目录 在linux中每个用户都有一个自己的目录 root 超级用户的主目录 boot 存放linux启动核心文件 包
  • 基于样本的性能分析

    基于样本的性能分析是一种性能优化技术 通过定期采集程序在运行时的信息 样本 来识别程序的热点区域或常用路径 这与基于插桩的分析相对 后者通过插入额外的代码来记录每一次函数或代码块的执行 基于样本的方法的主要优点是它对程序的性能干扰较小 但可
  • 类文件具有错误的版本号59.0应为52.0

    很笨的问题 运行 bat批处理文件的时候用管理员权限运行
  • shiro从1.6.0升级到1.7.1版本,请求路径中带有中文接口报400

    由于shiro1 6 0版本出现了安全漏洞 于是进行了版本的升级 升级到1 71 版本 但遇到了以下问题 1 访问某个接口的时候 返回状态码400 invaild request 2 访问路径为XX XXX params XXX包含中文 找
  • java---自动拆装箱

    一 什么是装箱 什么是拆箱 将一个值封装起来就是装箱 就是将一个基本类型转换为一个封装类 否则就是拆箱 而在从Java SE5开始就提供了自动装箱的特性 二 自动如何实现 来一个小栗子 public class Main public st
  • kettle循环取结果集进行处理方法一(使用js)

    需求 循环取结果集中的一行 再根据单个结果进行处理 此处实例 从test库取id字段结果集 存储 id 2 x id 到set value表中 此处使用js脚本 方法二 不使用js https blog csdn net weixin 44
  • 生成doc文件,并压缩进文件夹

    导出业务人员日志 SuppressWarnings null RequestMapping value exportEsComDailyList public void exportEsComDailyList RequestParam n