首先创建文件目录,然后生成Excel文件到创建的目录下,
通过IO流压缩Excel文件成zip文件 到指定目录,最后删除指定目录下所有的Excel文件。
具体代码如下:
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(); } }
相关推荐
java中将多个excel打包成zip文件下载.rar
30万的数据量,生成多个excel最后打包成zip下载,是工程,直接导入就行
直接可以用的项目。数据量大,导出多个excel然后压缩成zip文件。。。
对大数据量的导出excel,用多线程,用倒数计数器对文件进行生成,使用poi,可以支持大数据量的生成,项目中使用的poi是3.1的,上传的是4.1的。
/** * 根据 策划的配置表来生成 json * excel 目前使用的版本为2007,其他版本未测试... * 读取文件 一般用于本地文件的生成, * 二进制的方式,一般用于 后台管理界面 的文件上传后的处理。 * @author wgq * */
生成excel并打包成zip文件,包含主要的生成类和如何打包的代码,主要是嵌套的关系
主要为大家详细介绍了java动态导出excel压缩成zip下载的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目前项目有一个需求“数据的离线导入导出”,需要将数据分模块导入到不同的excel,然后压缩成数据包下载
java批量处理Excel上传解析后台工具类代码及相关jar包,支持传统mvc框架及时下流行的springBoot、springCloud,亲测亲写可以放心使用。 支持2013和2017版的Excel文件上传处理。支持较大数据量处理。(海量处理)支持...
java导出excel大数据,由于excel本身sheet页存储条数的限制,方案一般有:1、导出多个excel,然后将多个excel压缩为zip包,导出;2、导出可以通过excel打开的文本文件;3、导出csv文件(简单格式的)。 本样例以导出...
此代码教程主要包含两部分,1、java调用perl脚本生成excel;2、将生成的数据文件进行压缩,并解决了压缩后的文件解压时的乱码问题。 代码已经过系统测试,没任何问题。
自家:hsweb-commons :通用工具类hsweb-easy-orm :为动态表单设计的orm框架hsweb-expands-compress :文件压缩,解压操作hsweb-expands-office :office文档操作( excel读写,模板导出,word模板导出)hsweb-...
用zip格式压缩 和解压文件;操作Excel文件;操作Pdf文件;自定义日志文件类; 8线程 线程的启动 和停止;线程的互斥;线程的协作;线程join;生产者、消费者问题;线程的优先级;列出虚拟机中所有的线程;守护线程...
17 用Zip格式压缩和解压缩文件 7. 18 操作Excel文件 7. 19 操作PDF文件 7. 20 自定义日志文件类 第8章 线程 8. 1 定义和启动线程 8. 2 停止线程 8. 3 线程的互斥 8. 4 线程的协作 ...
实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 ...
尽管此应用程序可以将任何格式正确的Excel电子表格转换为Drools DRL文件,但它主要用于为Kuali OLE(开放图书馆环境)应用程序生成Drools规则文件。 要求 Java 1.7 Gradle2.6 构建/设置 安装所需的软件 克隆此存储...
本软件主要实现连接任意多个数据库,读取数据库表定义文件(Excel文件格式),然后使用鼠标拖曳技术自动化生成复杂SQL文,以及执行被生成的SQL文以查看正确性,最后生成您所需要的java代码。(其他语言的代码目前还没...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...