java动态导出excel压缩成zip下载的方法

本文实例为大家分享了java动态导出excel压缩成zip下载的具体代码,供大家参考,具体内容如下

package pack.java.io.demo;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 * zip压缩文件实例
 * add by 周海涛
 * @author Administrator
 *
 */
public class ZipDemo {

 /**
 * @param args
 * @throws IOException
 * @throws WriteException
 * @throws RowsExceededException
 */
 public static void main(String[] args) throws RowsExceededException, WriteException, IOException {
 String path = "C:/document/excel";
 //创建文件夹;
 createFile(path);
 //创建Excel文件;
 createExcelFile(path);
 //生成.zip文件;
 craeteZipPath(path);
 //删除目录下所有的文件;
 File file = new File(path);
 //删除文件;
 deleteExcelPath(file);
 //重新创建文件;
 file.mkdirs();
 }

 /**
 * 创建文件夹;
 * @param path
 * @return
 */
 public static String createFile(String path){
 File file = new File(path);
 //判断文件是否存在;
 if(!file.exists()){
  //创建文件;
  boolean bol = file.mkdirs();
  if(bol){
  System.out.println(path+" 路径创建成功!");
  }else{
  System.out.println(path+" 路径创建失败!");
  }
 }else{
  System.out.println(path+" 文件已经存在!");
 }
 return path;
 }

 /**
 * 在指定目录下创建Excel文件;
 * @param path
 * @throws IOException
 * @throws WriteException
 * @throws RowsExceededException
 */
 public static void createExcelFile(String path) throws IOException, RowsExceededException, WriteException{
 for(int i =0;i<3;i++){
  //创建Excel;
  WritableWorkbook workbook = Workbook.createWorkbook(new File(path+"/" + new SimpleDateFormat("yyyyMMddHHmmsss").format(new Date() )+"_"+(i+1)+".xls"));
  //创建第一个sheet文件;
  WritableSheet sheet = workbook.createSheet("导出Excel文件", 0);
  //设置默认宽度;
  sheet.getSettings().setDefaultColumnWidth(30);

  //设置字体;
  WritableFont font1 = new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);

  WritableCellFormat cellFormat1 = new WritableCellFormat(font1);
  //设置背景颜色;
  cellFormat1.setBackground(Colour.BLUE_GREY);
  //设置边框;
  cellFormat1.setBorder(Border.ALL, BorderLineStyle.DASH_DOT);
  //设置自动换行;
  cellFormat1.setWrap(true);
  //设置文字居中对齐方式;
  cellFormat1.setAlignment(Alignment.CENTRE);
  //设置垂直居中;
  cellFormat1.setVerticalAlignment(VerticalAlignment.CENTRE);
  //创建单元格
  Label label1 = new Label(0, 0, "第一行第一个单元格(测试是否自动换行!)",cellFormat1);
  Label label2 = new Label(1, 0, "第一行第二个单元格",cellFormat1);
  Label label3 = new Label(2, 0, "第一行第三个单元格",cellFormat1);
  Label label4 = new Label(3, 0, "第一行第四个单元格",cellFormat1);
  //添加到行中;
  sheet.addCell(label1);
  sheet.addCell(label2);
  sheet.addCell(label3);
  sheet.addCell(label4);

  //给第二行设置背景、字体颜色、对齐方式等等;
  WritableFont font2 = new WritableFont(WritableFont.ARIAL,14,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLUE2);
  WritableCellFormat cellFormat2 = new WritableCellFormat(font2);
  cellFormat2.setAlignment(Alignment.CENTRE);
  cellFormat2.setBackground(Colour.PINK);
  cellFormat2.setBorder(Border.ALL, BorderLineStyle.THIN);
  cellFormat2.setWrap(true);

  //创建单元格;
  Label label11= new Label(0, 1, "第二行第一个单元格(测试是否自动换行!)",cellFormat2);
  Label label22 = new Label(1, 1, "第二行第二个单元格",cellFormat2);
  Label label33 = new Label(2, 1, "第二行第三个单元格",cellFormat2);
  Label label44 = new Label(3, 1, "第二行第四个单元格",cellFormat2);

  sheet.addCell(label11);
  sheet.addCell(label22);
  sheet.addCell(label33);
  sheet.addCell(label44);

  //写入Excel表格中;
  workbook.write();
  //关闭流;
  workbook.close();
 }
 }

 /**
 * 生成.zip文件;
 * @param path
 * @throws IOException
 */
 public static void craeteZipPath(String path) throws IOException{
 ZipOutputStream zipOutputStream = null;
 File file = new File(path+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".zip");
 zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
 File[] files = new File(path).listFiles();
 FileInputStream fileInputStream = null;
 byte[] buf = new byte[1024];
 int len = 0;
 if(files!=null && files.length > 0){
  for(File excelFile:files){
  String fileName = excelFile.getName();
  fileInputStream = new FileInputStream(excelFile);
  //放入压缩zip包中;
  zipOutputStream.putNextEntry(new ZipEntry(path + "/"+fileName));

  //读取文件;
  while((len=fileInputStream.read(buf)) >0){
   zipOutputStream.write(buf, 0, len);
  }
  //关闭;
  zipOutputStream.closeEntry();
  if(fileInputStream != null){
   fileInputStream.close();
  }
  }
 }

 if(zipOutputStream !=null){
  zipOutputStream.close();
 }
 }

 /**
 * 删除目录下所有的文件;
 * @param path
 */
 public static boolean deleteExcelPath(File file){
 String[] files = null;
 if(file != null){
  files = file.list();
 }

 if(file.isDirectory()){
  for(int i =0;i<files.length;i++){
  boolean bol = deleteExcelPath(new File(file,files[i]));
  if(bol){
   System.out.println("删除成功!");
  }else{
   System.out.println("删除失败!");
  }
  }
 }
 return file.delete();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java导出excel时合并同一列中相同内容的行思路详解

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然后再处理小类,因为本例小小类不涉及合并,所以只涉及处理小类,如果需要处理小小类,还需要在处理一下,具体实现原理同小类: 每次循环时记录下此次循环的房屋类型和上次循环的房屋类型,两者相同时,要合并的结束行++,否者,说明这个房屋类型已经循环完毕(前提是各类型都按顺序order by 了,保证相同类型相

  • Java Web使用POI导出Excel的方法详解

    本文实例讲述了Java Web使用POI导出Excel的方法.分享给大家供大家参考,具体如下: 采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void

  • java导出Excel文件的步骤全纪录

    一.背景 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 最近在java上做了一个EXCEL的导出功能,写了一个通用类,在这里分享分享,该类支持多sheet,且无需手动进行复杂的类型转换,只需提供三个参数即可: 1.fileName excel文件名 2.HasMap<String,List<?&g

  • JAVA导出EXCEL表格的实例教学

    小伙伴们,最近比较忙,没什么时间写,今天给大家分享的是JAVA如何导出EXCEL表格,因为最近有做这样一个功能,所以分享出来,如有不对之处,敬请指正. 在许多企业办公系统中,经常会有用户要求,需要对数据进行统计并且可以直接下载Excel文件,这样子的话,既然客户提出了要求,我们就应该去满足吖,毕竟客户是上帝嘛,那么我们如何去实现呢?且看我为你一一道来. POI简介:Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其中有用于操作Excel

  • Java poi导出Excel下载到客户端

    Java poi 导出Excel并下载到客户端,具体内容如下 Maven配置,包含了其他文件格式的依赖,就全贴出来了 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> <version>3.12</version> </dependency> <dependency> <gr

  • java实现的导出Excel工具类实例

    本文实例讲述了java实现的导出Excel工具类.分享给大家供大家参考,具体如下: ExcelExportUtil: package com.excel; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.

  • java导出Excel通用方法的实例详解

    java导出Excel通用方法的实例详解 Java导出Excel通用方法,只需要一个list 集合.通用方法改进之处踊跃提出 package oa.common.utils; import java.io.OutputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import java.lan

  • java动态导出excel压缩成zip下载的方法

    本文实例为大家分享了java动态导出excel压缩成zip下载的具体代码,供大家参考,具体内容如下 package pack.java.io.demo; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.Simpl

  • java后台批量下载文件并压缩成zip下载的方法

    本文实例为大家分享了java后台批量下载文件并压缩成zip下载的具体代码,供大家参考,具体内容如下 因项目需要,将服务器上的图片文件压缩打包zip,下载到本地桌面. 首先,前端js: function doQueryPic() { var picsDate = $("#picsDate").val(); var piceDate = $("#piceDate").val(); var picInst = $("#pic_inst").combot

  • Java实现把文件压缩成zip文件的示例代码

    实现代码 ackage org.fh.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 说明:java压缩成zip * 作者:FH Admin * from:fhadmin.cn */ public class Fi

  • Vue webpack 项目自动打包压缩成zip文件的方法

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能就要打包好多次,这就很烦了.所以索性在执行 npm run build 命令时就直接打包成zip文件,方便省事! 1.插件装备 webpack插件:filemanager-webpack-plugin,该插件可执行打包,复制,移动,删除文件以及新文件夹在build之前及之后创建. 安装: npm i

  • JavaWeb动态导出Excel可弹出下载

    由于项目需求,需要将数据导出成Excel表格,并且可选择导出项,可下载.项目使用的Spring+Mybatis+SpringMVC框架,利用Apache POI导出Excel.POI具体使用请自行百度.话不多说,上代码. ExportExcelUtil代码 package com.rixin.common.util; import java.io.OutputStream; import java.lang.reflect.Method; import java.net.URLEncoder;

  • java实现文件压缩成zip的工具类

    最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: (1)可以压缩文件,也可以压缩文件夹 (2)同时支持压缩多级文件夹,工具内部做了递归处理 (3)碰到空的文件夹,也可以压缩 (4)可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接舍弃.注意:如果不保留文件原来目录结构,在碰到文件名相同的文件时,会压缩失败. (5)代码中提供了2个压缩文件的方法,

  • Java实现把文件及文件夹压缩成zip

    最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: (1)可以压缩文件,也可以压缩文件夹 (2)同时支持压缩多级文件夹,工具内部做了递归处理 (3)碰到空的文件夹,也可以压缩 (4)可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接舍弃.注意:如果不保留文件原来目录结构,在碰到文件名相同的文件时,会压缩失败. (5)代码中提供了2个压缩文件的方法,

  • Java实现将文件或者文件夹压缩成zip的详细代码

    最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: (1)可以压缩文件,也可以压缩文件夹 (2)同时支持压缩多级文件夹,工具内部做了递归处理 (3)碰到空的文件夹,也可以压缩 (4)可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接舍弃.注意:如果不保留文件原来目录结构,在碰到文件名相同的文件时,会压缩失败. (5)代码中提供了2个

  • JAVA 根据Url把多文件打包成ZIP下载实例

    压缩文件代码工具类: public class UrlFilesToZip { private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class); //根据文件链接把文件下载下来并且转成字节码 public byte[] getImageFromURL(String urlPath) { byte[] data = null; InputStream is = null; HttpURLConnec

随机推荐