下载zip格式文件(压缩Excel文件为zip格式)
Mongodb配置文件参考这一篇:http://www.cnblogs.com/byteworld/p/5913061.html
- package util;
- import java.io.BufferedInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import org.apache.commons.compress.archivers.zip.Zip64Mode;
- import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
- import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.DBObject;
- import com.sun.corba.se.spi.orbutil.fsm.Input;
- public class CreateExcel {
- /**
- * 把文件压缩到zip中
- * @Description:
- * @param
- * @return void 返回类型
- */
- public static void createZip(String dir,OutputStream out){
- // 用户目录下的文件
- File[] f = new File("E:/"+dir).listFiles();
- // 创建zip文件
- ZipArchiveOutputStream zipOut = null;
- InputStream input = null;
- try {
- zipOut = new ZipArchiveOutputStream(out);
- zipOut.setEncoding("UTF-8");
- zipOut.setUseZip64(Zip64Mode.AsNeeded);
- // 遍历目录下的文件
- for(File file:f){
- if (file != null) {
- ZipArchiveEntry zipEntry = new ZipArchiveEntry(file, file.getName());
- zipOut.putArchiveEntry(zipEntry);
- // 读取文件
- input = new BufferedInputStream(new FileInputStream(file));
- byte[] buff = new byte[1024];
- int len = 0;
- while((len = input.read(buff)) != -1){
- zipOut.write(buff, 0, len);
- }
- zipOut.closeArchiveEntry();
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- if (input != null) {
- try {
- input.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (zipOut != null) {
- try {
- zipOut.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 创建Excel文件到本地
- * @Description:
- * @param
- * @return void 返回类型
- */
- public static void createExcel(String userid,String file,DBCursor cursor){
- // 根据用户名创建文件夹
- File dir = new File("E:/" + userid);
- if (!dir.isDirectory()) {
- dir.mkdirs();
- }
- Workbook book = new HSSFWorkbook();
- // 获取标题
- DBObject ob = cursor.toArray().get(0);
- ArrayList<String> title = new ArrayList<>();
- for(String key:ob.keySet()){
- if (key.equals("_id")) {
- continue;
- }
- title.add(key);
- }
- // 创建sheet
- Sheet sheet = book.createSheet();
- OutputStream out = null;
- try {
- // 写入标题栏
- Row row = null;
- // 标题栏的行数
- Cell cell = null;
- for(int i = 0;i< (cursor.count() + 1);i++){
- // 标题栏
- if (i == 0) {
- row = sheet.createRow(i);
- for (int j = 0; j < title.size(); j++) {
- cell = row.createCell(j);
- // 设置标题栏
- cell.setCellValue(title.get(j));
- }
- continue;
- }
- // 写入数据
- row = sheet.createRow(i);
- out = new FileOutputStream(dir+"/"+file);
- DBObject obj = null;
- for (int j = 0; j < title.size(); j++) {
- cell = row.createCell(j);
- obj = cursor.toArray().get(j);
- for(String key :obj.keySet()){
- if (key.equals("_id")) {
- continue;
- }
- if (key.equals(title.get(j))) {
- cell.setCellValue((String)(obj.get(key)));
- }
- }
- }
- }
- // 写入到excel
- book.write(out);
- } catch (IOException e1) {
- e1.printStackTrace();
- } finally {
- try {
- out.flush();
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
JSP:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <form method="post">
- <a href="/Demo/SimpleDown"><h2>下载</h2></a>
- </form>
- </body>
- </html>
Servlet:
- package servlet;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.zip.ZipOutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.compress.archivers.zip.Zip64Mode;
- import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
- import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
- import com.mongodb.DBCollection;
- import util.CreateExcel;
- import util.DBConn;
- /**
- * 单独文件的zip下载
- */
- @WebServlet("/SimpleDown")
- public class SimpleDown extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#HttpServlet()
- */
- public SimpleDown() {
- super();
- // TODO Auto-generated constructor stub
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doPost(request, response);
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- //DBCollection conn = DBConn.getConn();
- DBCollection conn = DBConn.getConn();
- CreateExcel.createExcel("User2323","weixin_data.xls", conn.find());
- //createZip("User2323");
- // CreateExcel.delZip("User2323");
- response.setCharacterEncoding("UTF-8");
- response.setHeader("Content-Disposition", "attachment;filename="+"User2323.zip");
- CreateExcel.createZip("User2323", response.getOutputStream());
- }
- }
下载zip格式文件(压缩Excel文件为zip格式)的更多相关文章
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- CSV格式的文件与EXCEL文件的区别
CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...
- Java读取txt文件、excel文件的方法
Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...
- Java实现文件压缩与解压[zip格式,gzip格式]
Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并 ...
- PHP 实时生成并下载超大数据量的 Excel 文件
//另外由于excel数据是从数据库里逐步读出然后写入输出流的所以需要将PHP的执行时间设长一点 //(默认30秒)set_time_limit(0)不对PHP执行时间做限制. set_time_li ...
- PHP实时生成并下载超大数据量的EXCEL文件
最近接到一个需求,通过选择的时间段导出对应的用户访问日志到excel中, 由于用户量较大,经常会有导出50万加数据的情况.而常用的PHPexcel包需要把所有数据拿到后才能生成excel, 在面对生成 ...
- C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)
环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一 ...
- 下载放在resource下面的excel文件
1.将excel文件放项目resources目录下 2.打包的时候排除指定后缀文件,否则打包时会出现文件损坏的情况 <configuration> <encoding>UTF- ...
- C#仪器数据文件解析-Excel文件(xls、xlsx)
不少仪器工作站可以将数据导出为Excel文件,包括97-2003版本的xls文件和2007+的xlsx文件. 采集Excel文件相比采集pdf文件更容易.程序更健壮,毕竟Excel中数据有明确的行.列 ...
随机推荐
- iOS cocospods Updating local specs repositories
pod install --verbose --no-repo-update (在安装的时候) pod update --verbose --no-repo-update (在更新库的时候) 如果长时 ...
- 传入一个label或者button,传入5s,6和6+的文字尺寸 快速定义文字大小
func isIphone6() -> Bool { { return true } else { return false } } func isIphone6Plus() -> Boo ...
- 图像的 SNR 和 PSNR 的计算
PSNR 的公式很容易搜到. http://www.360doc.com/content/12/0605/21/4129998_216244993.shtml http://blog.sina.com ...
- 关于Left join
Sql关联表时条件放在On或者where上结果是不一样的. 1.放在on上 如下 select S.StoreID,* from BizProductItem as P left join BizSt ...
- 【整理】虚拟机和主机ping不通解决办法
检查几个方面: 1.检查虚拟网卡有没有被禁用2.检查虚拟机与物理机是否在一个VMNet中3.检查虚拟机的IP地址与物理机对应的VMNet是否在一个网段4.检查虚拟机与物理机的防火墙是否允许PING, ...
- SignalR实时推送
SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 ...
- 安装django
我已经有Python3.5的环境了.我们去下载Django.https://github.com/django/django.git 直接下载为zip解压即可. 然后在命令提示符下安装 1. 切换 ...
- SQLite Expert 删除表数据并重置自动增长列
用下面的语句肯定是行不通的,语句不支持 truncate table t_Records 方法:1.删除表数据 2.重置自动增长列 where name='t_Records' /*name :是表名 ...
- Cocos2d-x PluginX (二)增加新的Plugin
创建Plugin目录 第一步,在plugin/plugins下,目录需要严格按照如下规范实现: plugin/plugins/alipay/proj.android /proj.ios 因为publi ...
- Android--再探MVP模式
1,上一篇我们已经了解了大致的MVP模式,下面再通过这个登录功能的例子 ,我们能过更加容易的掌握MVP模式,再来补充一些闲外话:MVP 是 MVC 的变种,其实是一种升级.要说 MVP 就要说说 MV ...