Mongodb配置文件参考这一篇:http://www.cnblogs.com/byteworld/p/5913061.html

  1. package util;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import java.util.ArrayList;
  10. import org.apache.commons.compress.archivers.zip.Zip64Mode;
  11. import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
  12. import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
  13. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  14. import org.apache.poi.ss.usermodel.Cell;
  15. import org.apache.poi.ss.usermodel.Row;
  16. import org.apache.poi.ss.usermodel.Sheet;
  17. import org.apache.poi.ss.usermodel.Workbook;
  18. import com.mongodb.DBCollection;
  19. import com.mongodb.DBCursor;
  20. import com.mongodb.DBObject;
  21. import com.sun.corba.se.spi.orbutil.fsm.Input;
  22.  
  23. public class CreateExcel {
  24. /**
  25. * 把文件压缩到zip中
  26. * @Description:
  27. * @param
  28. * @return void 返回类型
  29. */
  30. public static void createZip(String dir,OutputStream out){
  31. // 用户目录下的文件
  32. File[] f = new File("E:/"+dir).listFiles();
  33. // 创建zip文件
  34. ZipArchiveOutputStream zipOut = null;
  35. InputStream input = null;
  36. try {
  37. zipOut = new ZipArchiveOutputStream(out);
  38. zipOut.setEncoding("UTF-8");
  39. zipOut.setUseZip64(Zip64Mode.AsNeeded);
  40. // 遍历目录下的文件
  41. for(File file:f){
  42. if (file != null) {
  43. ZipArchiveEntry zipEntry = new ZipArchiveEntry(file, file.getName());
  44. zipOut.putArchiveEntry(zipEntry);
  45. // 读取文件
  46. input = new BufferedInputStream(new FileInputStream(file));
  47. byte[] buff = new byte[1024];
  48. int len = 0;
  49. while((len = input.read(buff)) != -1){
  50. zipOut.write(buff, 0, len);
  51. }
  52. zipOut.closeArchiveEntry();
  53. }
  54. }
  55. } catch (IOException e) {
  56. e.printStackTrace();
  57. }finally{
  58. if (input != null) {
  59. try {
  60. input.close();
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. }
  64. }
  65. if (zipOut != null) {
  66. try {
  67. zipOut.close();
  68. } catch (IOException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. }
  73. }
  74.  
  75. /**
  76. * 创建Excel文件到本地
  77. * @Description:
  78. * @param
  79. * @return void 返回类型
  80. */
  81. public static void createExcel(String userid,String file,DBCursor cursor){
  82. // 根据用户名创建文件夹
  83. File dir = new File("E:/" + userid);
  84. if (!dir.isDirectory()) {
  85. dir.mkdirs();
  86. }
  87. Workbook book = new HSSFWorkbook();
  88. // 获取标题
  89. DBObject ob = cursor.toArray().get(0);
  90. ArrayList<String> title = new ArrayList<>();
  91. for(String key:ob.keySet()){
  92. if (key.equals("_id")) {
  93. continue;
  94. }
  95. title.add(key);
  96. }
  97. // 创建sheet
  98. Sheet sheet = book.createSheet();
  99. OutputStream out = null;
  100. try {
  101. // 写入标题栏
  102. Row row = null;
  103. // 标题栏的行数
  104. Cell cell = null;
  105. for(int i = 0;i< (cursor.count() + 1);i++){
  106. // 标题栏
  107. if (i == 0) {
  108. row = sheet.createRow(i);
  109. for (int j = 0; j < title.size(); j++) {
  110. cell = row.createCell(j);
  111. // 设置标题栏
  112. cell.setCellValue(title.get(j));
  113. }
  114. continue;
  115. }
  116. // 写入数据
  117. row = sheet.createRow(i);
  118. out = new FileOutputStream(dir+"/"+file);
  119. DBObject obj = null;
  120. for (int j = 0; j < title.size(); j++) {
  121. cell = row.createCell(j);
  122. obj = cursor.toArray().get(j);
  123. for(String key :obj.keySet()){
  124. if (key.equals("_id")) {
  125. continue;
  126. }
  127. if (key.equals(title.get(j))) {
  128. cell.setCellValue((String)(obj.get(key)));
  129. }
  130. }
  131. }
  132. }
  133. // 写入到excel
  134. book.write(out);
  135. } catch (IOException e1) {
  136. e1.printStackTrace();
  137. } finally {
  138. try {
  139. out.flush();
  140. out.close();
  141. } catch (IOException e) {
  142. e.printStackTrace();
  143. }
  144. }
  145. }
  146. }

  JSP:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form method="post">
  11. <a href="/Demo/SimpleDown"><h2>下载</h2></a>
  12. </form>
  13. </body>
  14. </html>

  Servlet:

  1. package servlet;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import java.util.zip.ZipOutputStream;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.annotation.WebServlet;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import org.apache.commons.compress.archivers.zip.Zip64Mode;
  16. import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
  17. import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
  18. import com.mongodb.DBCollection;
  19.  
  20. import util.CreateExcel;
  21. import util.DBConn;
  22.  
  23. /**
  24. * 单独文件的zip下载
  25. */
  26. @WebServlet("/SimpleDown")
  27. public class SimpleDown extends HttpServlet {
  28. private static final long serialVersionUID = 1L;
  29.  
  30. /**
  31. * @see HttpServlet#HttpServlet()
  32. */
  33. public SimpleDown() {
  34. super();
  35. // TODO Auto-generated constructor stub
  36. }
  37.  
  38. /**
  39. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  40. */
  41. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  42. // TODO Auto-generated method stub
  43. doPost(request, response);
  44. }
  45.  
  46. /**
  47. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  48. */
  49. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  50. // TODO Auto-generated method stub
  51. //DBCollection conn = DBConn.getConn();
  52. DBCollection conn = DBConn.getConn();
  53. CreateExcel.createExcel("User2323","weixin_data.xls", conn.find());
  54. //createZip("User2323");
  55. // CreateExcel.delZip("User2323");
  56. response.setCharacterEncoding("UTF-8");
  57. response.setHeader("Content-Disposition", "attachment;filename="+"User2323.zip");
  58. CreateExcel.createZip("User2323", response.getOutputStream());
  59.  
  60. }
  61.  
  62. }

  

下载zip格式文件(压缩Excel文件为zip格式)的更多相关文章

  1. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件

    小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...

  2. CSV格式的文件与EXCEL文件的区别

    CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...

  3. Java读取txt文件、excel文件的方法

    Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...

  4. Java实现文件压缩与解压[zip格式,gzip格式]

    Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并 ...

  5. PHP 实时生成并下载超大数据量的 Excel 文件

    //另外由于excel数据是从数据库里逐步读出然后写入输出流的所以需要将PHP的执行时间设长一点 //(默认30秒)set_time_limit(0)不对PHP执行时间做限制. set_time_li ...

  6. PHP实时生成并下载超大数据量的EXCEL文件

    最近接到一个需求,通过选择的时间段导出对应的用户访问日志到excel中, 由于用户量较大,经常会有导出50万加数据的情况.而常用的PHPexcel包需要把所有数据拿到后才能生成excel, 在面对生成 ...

  7. C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)

    环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一 ...

  8. 下载放在resource下面的excel文件

    1.将excel文件放项目resources目录下 2.打包的时候排除指定后缀文件,否则打包时会出现文件损坏的情况 <configuration> <encoding>UTF- ...

  9. C#仪器数据文件解析-Excel文件(xls、xlsx)

    不少仪器工作站可以将数据导出为Excel文件,包括97-2003版本的xls文件和2007+的xlsx文件. 采集Excel文件相比采集pdf文件更容易.程序更健壮,毕竟Excel中数据有明确的行.列 ...

随机推荐

  1. iOS cocospods Updating local specs repositories

    pod install --verbose --no-repo-update (在安装的时候) pod update --verbose --no-repo-update (在更新库的时候) 如果长时 ...

  2. 传入一个label或者button,传入5s,6和6+的文字尺寸 快速定义文字大小

    func isIphone6() -> Bool { { return true } else { return false } } func isIphone6Plus() -> Boo ...

  3. 图像的 SNR 和 PSNR 的计算

    PSNR 的公式很容易搜到. http://www.360doc.com/content/12/0605/21/4129998_216244993.shtml http://blog.sina.com ...

  4. 关于Left join

    Sql关联表时条件放在On或者where上结果是不一样的. 1.放在on上 如下 select S.StoreID,* from BizProductItem as P left join BizSt ...

  5. 【整理】虚拟机和主机ping不通解决办法

     检查几个方面: 1.检查虚拟网卡有没有被禁用2.检查虚拟机与物理机是否在一个VMNet中3.检查虚拟机的IP地址与物理机对应的VMNet是否在一个网段4.检查虚拟机与物理机的防火墙是否允许PING, ...

  6. SignalR实时推送

    SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 ...

  7. 安装django

    我已经有Python3.5的环境了.我们去下载Django.https://github.com/django/django.git  直接下载为zip解压即可. 然后在命令提示符下安装 1.  切换 ...

  8. SQLite Expert 删除表数据并重置自动增长列

    用下面的语句肯定是行不通的,语句不支持 truncate table t_Records 方法:1.删除表数据 2.重置自动增长列 where name='t_Records' /*name :是表名 ...

  9. Cocos2d-x PluginX (二)增加新的Plugin

    创建Plugin目录 第一步,在plugin/plugins下,目录需要严格按照如下规范实现: plugin/plugins/alipay/proj.android /proj.ios 因为publi ...

  10. Android--再探MVP模式

    1,上一篇我们已经了解了大致的MVP模式,下面再通过这个登录功能的例子 ,我们能过更加容易的掌握MVP模式,再来补充一些闲外话:MVP 是 MVC 的变种,其实是一种升级.要说 MVP 就要说说 MV ...