java 中导出word后压缩文件_Java批量导出word压缩后的zip文件案例

一、js代码,由于参数比较大所以利用form表单使用post导出

function export_word(){

var selectedRows = $("#dg").datagrid("getSelections");

if (selectedRows.length==0) {

showAlertWarning("请选择一条的信息...");

return;

}

if (selectedRows.length > 1) {//批量导出压缩文件

var id = "";

for (var i = 0; i < selectedRows.length; i++) {

var row = selectedRows[i];

id += row.id+"name"+row.user_name+"@@";

}

layer.confirm('请选择要导出考核表的类型?', {

btn: ['次数','具体条目'] //按钮

}, function(index){

postExportFile({"id":id,"type":0},"jee/AssessGradeSumC/exportWordsZip");

layer.close(index);

}, function(index){

postExportFile({"id":id,"type":1},"jee/AssessGradeSumC/exportWordsZip");

});

} else {//导出单个

layer.confirm('请选择要导出考核表的类型?', {

btn: ['次数','具体条目'] //按钮

}, function(index){

window.location.href= "jee/AssessGradeSumC/exportWord?id="+selectedRows[0].id;

layer.close(index);

}, function(index){

window.location.href= "jee/AssessGradeSumC/exportWordForSpecific?id="+selectedRows[0].id;

});

}

}

function postExportFile(params, url) { //params是post请求需要的参数,url是请求url地址

var form = document.createElement("form");

form.style.display = 'none';

form.action = url;

form.method = "post";

document.body.appendChild(form);

for(var key in params){

var input = document.createElement("input");

input.type = "hidden";

input.name = key;

input.value = params[key];

form.appendChild(input);

}

form.submit();

form.remove();

}

二、controller代码(读完压缩文件后删除文件)

/**

*

* @Description 考核成绩汇总考核表批量导出压缩

* @Fcunction exportWordsZip

* @param response

* @return ReturnDatas

*

*/

@ResponseBody

@SystemControllerLog(description = "考核成绩汇总考核表批量导出压缩")

@RequestMapping(value = "exportWordsZip")

public ReturnDatas exportWordsZip(HttpServletResponse response, String id, String type) {

ReturnDatas returnDatas = ReturnDatas.getSuccessReturnDatas();

try {

response.setCharacterEncoding("UTF-8");

response.setContentType("application/msexcle");

response.setHeader("content-disposition", "attachment;filename=" + new String("考核成绩汇总表".getBytes("gb2312"), "ISO8859-1") + ".zip");

String fileUrl = assessGradeSumService.exportWordsZip(id,type);

OutputStream outputStream = response.getOutputStream();

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileUrl));;

BufferedOutputStream bos = new BufferedOutputStream(outputStream);

byte[] buff = new byte[2048];

int bytesRead;

while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {

bos.write(buff, 0, bytesRead);

}

bis.close();

bos.close();

outputStream.close();

File zip = new File(fileUrl);

if (zip.exists() && zip.isFile()) {

zip.delete();

}

return returnDatas;

} catch (Exception e) {

e.printStackTrace();

LogUtil.error("考核成绩汇总考核表批量导出压缩异常:" + e.getMessage(), e);

returnDatas.setStatus(ReturnDatas.ERROR);

returnDatas.setMessage("考核成绩汇总考核表批量导出压缩异常。");

}

return returnDatas;

}

三、实现类代码,其中exportWord()和exportWordForSpecific()都是具体的word导出方法,生成zip压缩文件后删除word文件,ZipUtils是压缩文件工具类

/**

*

* @Fcunction exportWordsZip

* @param id

* @param type

* @return String

*

*/

@Override

public String exportWordsZip(String id, String type)throws Exception{

String[] ids = id.split("@@");

List fileList = new ArrayList<>();

String url = "C:\\";

for (int i = 0; i < ids.length; i++) {

String id_name = ids[i];

String id_value = id_name.split("name")[0];

String name = id_name.split("name")[1];

String docUrl = url + name + ".doc";

fileList.add(new File(docUrl));

XWPFDocument workbook = null;

if ("0".equals(type)) {//按次

workbook = exportWord(id_value);

} else {//表单条目

workbook = exportWordForSpecific(id_value);

}

FileOutputStream out = new FileOutputStream(docUrl);

workbook.write(out);

}

String zipUrl = url+"考核成绩汇总表.zip";

FileOutputStream fos = new FileOutputStream(new File(zipUrl));

ZipUtils.toZip(fileList, fos);

for (File out:fileList) {

if (out.exists() && out.isFile()) {

out.delete();

}

}

return zipUrl;

}

以上这篇Java批量导出word压缩后的zip文件案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opengl es java_java – 在Android OpenGL ES App中加载纹理

1)您应该根据需要分配尽可能多的纹理名称.一个用于您正在使用的每个纹理.加载纹理是一项非常繁重的操作,会使渲染管道停顿.所以,你永远不应该在游戏循环中加载纹理.您应该在呈现纹理的应用程序状态之前具有加载状态.加载状态负责加载渲染中所需的所有纹理.因此,当您需要渲染几何…

java io 视频 下载_Java下载映客主播视频回放到电脑硬盘

Java下载映客主播视频回放到电脑硬盘使用Java下载映客回放到电脑硬盘使用方法&#xff1a;在映客app播放回放视频时&#xff0c;分享到QQ&#xff0c;就可以得到url&#xff0c;其中的liveid属性就是视频ID。源代码由 [**海思教育**](http://edu.itshidu.com/) 提供&#xff0c…

java jni helloword_JNI学习一:编写HelloWorld程序

转载请说明出处~本文教程翻译jni官方文档的部分内容。要查看Jni官方文档&#xff0c;请点击这里先感叹一下时光如水&#xff0c;岁月不留人哇有木有&#xff01;&#xff01;&#xff01;认真想想在XMU的这三年&#xff0c;真的改变了我好多。我还清楚地记得学习C语言写的第一个…

【学习记录】macOS的Redis安装及基本使用

【学习记录】macOS的Redis安装及基本使用一. Redis的安装与启动二. 简单使用① 尝试插入第一个key-value② Redis的数据类型与基本使用字符串列表字典&#xff08;哈希表&#xff09;集合有序集合三. 杂乱无章的笔记一. Redis的安装与启动 打开终端&#xff0c;输入以下命令即…

java scipt 对象 函数_java script 基本函数

Math.random() 是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。日期时间函数(需要用变量调用)&#xff1a;var b new Date(); //获取当前时间b.getTime() &#xff1b; //获取时间戳b.getFullYear()&#xff1b; //获取年…

[学习记录] macOS下的Nginx安装 Nginx基本知识

[学习记录] macOS下的Nginx安装 && Nginx基本知识一. 安装相关1. 安装&#xff1a;直接通过brew安装即可2. 启动&#xff1a;3. 成功运行判断&#xff1a;4. 改端口号&#xff1a;由于8080这个端口号很容易冲突&#xff0c;因此需要改一个其他的端口号。二. Nginx 学习…

java 下载限速_Java 文件下载限流算法

在做文件下载功能时&#xff0c;为了避免下载功能将服务器的带宽打满&#xff0c;从而影响服务器的其他服务。我们可以设计一个限流器来限制下载的速率&#xff0c;从而限制下载服务所占用的带宽。一、算法思路定义一个数据块chunk(单位 bytes)以及允许的最大速率 maxRate(单位…

【学习笔记】JAVA基础——异常处理部分

文章目录前言简介一. try、catch与finally① try && catch② finally③ throws补充&#xff1a;JVM 相关二. 异常的分类① 分类解释与思维导图三. 自定义异常例子&#xff1a;Hero类的attack方法的isDeadException。四. 上传代码到GIT① 首先在github新建一个仓库Java_…

java 反射 json_java 反射机制构建JSON字符串

java 反射机制构建JSON字符串。接着上一篇文章、今天继续学习利用java 反射机制构建JSON字符串。JSON的格式跟使用的方式方法就不讲了、这个百度一下就有……好了今天心情很糟糕、直接上代码吧&#xff01;[java]view plaincopyprint?import java.lang.reflect.Field;import j…

【学习笔记】数据链路层的差错控制——检错编码与纠错编码(海明码、奇偶检验码与CRC循环冗余码)

文章目录前言一. 差错控制简介二.补充知识三. 检错编码&#xff08;1&#xff09;奇偶检验码组成&#xff1a;构造方法&#xff1a;以奇检验码为例。举个例子&#xff1a;检验码求法&#xff1a;错误检测方法&#xff1a;特点&#xff08;2&#xff09;CRC循环冗余检验码三要素…

【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录一. 流量控制① 必要性② 数据链路层 VS 传输层③ 定义④ 方法1&#xff09;停止等待协议2&#xff09;滑动窗口协议关系&#xff1a;包括&#xff1a;3&#xff09;协议对比二. 停止-等待协议必要性应用情况① 无差错情况② 有差错情况1&#xff09;数据帧丢失&#x…

java线程唤醒与等待_Java线程的等待与唤醒

生产者和消费者必须使用同步代码块包裹起来&#xff0c;保证等待和唤醒只能有一个执行&#xff0c;同步使用的锁对象必须保证唯一Thread中重要方法void wait() 在其他线程调用此对象的notify()方法或notifyall()方法前&#xff0c;导致当前线程等待void notify() 唤醒在此对象监…

【学习笔记】数据链路层——信道划分访问控制(FDM、TDM、STDM、WDM、CDM CDMA)

PPT截自王道考研B站教程 一. 铺垫知识 ① 传输数据使用的两种链路 星型、总线型都是广播式结构。 星型更有容错率&#xff0c;总线型断一个则全断。 ② 介质访问控制 定义 采取一定措施&#xff0c;使得两对节点之间的通信不会发生互相干扰的情况。 分类 多路复用&…

stream of java_java8新特性之强大的Stream API

Stream APIStream是Java8中处理集合的关键抽象概念&#xff0c;它可以指定你希望对集合进行的操作&#xff0c;可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作&#xff0c;就类似于使用 SQL 执行的数 据库查询。也可以使用Stream API来并行…

【学习笔记】数据链路层——随机访问介质访问控制(ALOHA、CSMA、CSMA/CD、CSMA/CA),截断二进制指数规避算法

文章目录小前言一. ALOHA协议纯ALOHA协议时隙ALOHA协议ALOHA对比CSMA协议定义与分类① 1-坚持CSMA② 非坚持CSMA③ p-坚持CSMA总结CSMA/CD协议传播时延对载波监听的影响确定重传时机&#xff1a;截断二进制指数规避算法最小帧长问题CSMA/CA协议工作原理CSMA/CD 与 CSMA/CA的对比…

pca算法介绍及java实现_PCA算法原理及实现

众所周知&#xff0c;PCA(principal component analysis)是一种数据降维的方式&#xff0c;能够有效的将高维数据转换为低维数据&#xff0c;进而降低模型训练所需要的计算资源。以上是比较官方的说法&#xff0c;下面是人话(正常人讲的话)版。pca就是一种能够有效压缩数据的方…

【学习笔记】数据链路层——轮询访问介质控制(轮询协议、令牌传递协议)

文章目录一. 轮询访问介质控制二. 轮询协议三. 令牌传递协议结束语PPT截自王道考研B站教程 一. 轮询访问介质控制 结合了前面的信道划分访问控制、随机访问MAC协议的优点&#xff1a; 既要不产生冲突&#xff0c;又要发送时占全部带宽。 二. 轮询协议 轮询开销&#xff1a;…

java boolean 多线程_JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)

AtomicBoolean它允许一个线程等待一个线程完成任务&#xff0c;然后运行:A boolean value that may be updated atomically. See the java.util.concurrent.atomic package specification for description of the properties of atomic variables. An AtomicBoolean is used in…

【学习笔记】局域网基本概念和体系结构,以太网、无线局域网与PPP协议、HDLC协议

文章目录一. 局域网&#xff1a;特点与要素① 拓扑结构② 传输介质③ 介质访问控制方法④ 局域网的分类⑤ IEEE 802标准⑥ MAC子层和LLC子层二. 以太网① 概述② 提供无连接、不可靠的服务③ 传输介质与拓扑结构的发展④ 10BAST-T以太网⑤ 适配器与MAC地址⑥ 以太网MAC帧⑦ 高速…

java truevfs_Java-Apache Commons VFS:使用FTP

我正在尝试通过FTP使用Apache Commons VFS.在我的FTP上,具有文件和文件夹的下一个结构&#xff1a;//test/test/in/test/in/file1.txt/test/in/file2.txt我需要连接并从/ test / in文件夹中读取所有文件(它一直在变化).码&#xff1a;FileSystemManager fsManager null;FileSy…