java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法
本文實(shí)例為大家分享了java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的具體代碼,供大家參考,具體內(nèi)容如下
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壓縮文件實(shí)例 * 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"; //創(chuàng)建文件夾; createFile(path); //創(chuàng)建Excel文件; createExcelFile(path); //生成.zip文件; craeteZipPath(path); //刪除目錄下所有的文件; File file = new File(path); //刪除文件; deleteExcelPath(file); //重新創(chuàng)建文件; file.mkdirs(); } /** * 創(chuàng)建文件夾; * @param path * @return */ public static String createFile(String path){ File file = new File(path); //判斷文件是否存在; if(!file.exists()){ //創(chuàng)建文件; boolean bol = file.mkdirs(); if(bol){ System.out.println(path+" 路徑創(chuàng)建成功!"); }else{ System.out.println(path+" 路徑創(chuàng)建失敗!"); } }else{ System.out.println(path+" 文件已經(jīng)存在!"); } return path; } /** * 在指定目錄下創(chuàng)建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++){ //創(chuàng)建Excel; WritableWorkbook workbook = Workbook.createWorkbook(new File(path+"/" + new SimpleDateFormat("yyyyMMddHHmmsss").format(new Date() )+"_"+(i+1)+".xls")); //創(chuàng)建第一個(gè)sheet文件; WritableSheet sheet = workbook.createSheet("導(dǎo)出Excel文件", 0); //設(shè)置默認(rèn)寬度; sheet.getSettings().setDefaultColumnWidth(30); //設(shè)置字體; WritableFont font1 = new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED); WritableCellFormat cellFormat1 = new WritableCellFormat(font1); //設(shè)置背景顏色; cellFormat1.setBackground(Colour.BLUE_GREY); //設(shè)置邊框; cellFormat1.setBorder(Border.ALL, BorderLineStyle.DASH_DOT); //設(shè)置自動(dòng)換行; cellFormat1.setWrap(true); //設(shè)置文字居中對(duì)齊方式; cellFormat1.setAlignment(Alignment.CENTRE); //設(shè)置垂直居中; cellFormat1.setVerticalAlignment(VerticalAlignment.CENTRE); //創(chuàng)建單元格 Label label1 = new Label(0, 0, "第一行第一個(gè)單元格(測(cè)試是否自動(dòng)換行!)",cellFormat1); Label label2 = new Label(1, 0, "第一行第二個(gè)單元格",cellFormat1); Label label3 = new Label(2, 0, "第一行第三個(gè)單元格",cellFormat1); Label label4 = new Label(3, 0, "第一行第四個(gè)單元格",cellFormat1); //添加到行中; sheet.addCell(label1); sheet.addCell(label2); sheet.addCell(label3); sheet.addCell(label4); //給第二行設(shè)置背景、字體顏色、對(duì)齊方式等等; 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); //創(chuàng)建單元格; Label label11= new Label(0, 1, "第二行第一個(gè)單元格(測(cè)試是否自動(dòng)換行!)",cellFormat2); Label label22 = new Label(1, 1, "第二行第二個(gè)單元格",cellFormat2); Label label33 = new Label(2, 1, "第二行第三個(gè)單元格",cellFormat2); Label label44 = new Label(3, 1, "第二行第四個(gè)單元格",cellFormat2); sheet.addCell(label11); sheet.addCell(label22); sheet.addCell(label33); sheet.addCell(label44); //寫入Excel表格中; workbook.write(); //關(guān)閉流; 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); } //關(guān)閉; 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(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
- vue通過接口直接下載java生成好的Excel表格案例
- React獲取Java后臺(tái)文件流并下載Excel文件流程解析
- Java poi導(dǎo)出Excel下載到客戶端
- Java對(duì)Excel表格的上傳和下載處理方法
- java后臺(tái)利用Apache poi 生成excel文檔提供前臺(tái)下載示例
- JavaWeb導(dǎo)出Excel文件并彈出下載框
- JavaWeb動(dòng)態(tài)導(dǎo)出Excel可彈出下載
- java常用工具類之Excel操作類及依賴包下載
- Java從服務(wù)端下載Excel模板文件的兩種方法
相關(guān)文章
Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例
這篇文章主要介紹了Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例,幫助大家方便的進(jìn)行文件格式轉(zhuǎn)換,完成需求,感興趣的朋友可以了解下2020-11-11使用FeignClient設(shè)置動(dòng)態(tài)Url
這篇文章主要介紹了使用FeignClient設(shè)置動(dòng)態(tài)Url方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06idea中斷點(diǎn)類型之All和Thread的區(qū)別介紹
使用all模式對(duì)于程序中含有多個(gè)線程來說,會(huì)將多個(gè)線程都阻塞在斷點(diǎn),此時(shí)所有的線程都執(zhí)行到此處,在最后一個(gè)線程執(zhí)行到此處是會(huì)發(fā)生暫停,在這之前的線程會(huì)繼續(xù)執(zhí)行到任意位置,本文給大家詳細(xì)介紹下idea中斷點(diǎn)類型之All和Thread的區(qū)別,感興趣的朋友一起看看吧2022-03-03Spring?WebClient實(shí)戰(zhàn)示例
本文主要介紹了Spring?WebClient實(shí)戰(zhàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Springboot下使用Redis管道(pipeline)進(jìn)行批量操作
本文主要介紹了Spring?boot?下使用Redis管道(pipeline)進(jìn)行批量操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Java接口操作(繼承父類并實(shí)現(xiàn)多個(gè)接口)
這篇文章主要介紹了Java接口操作(繼承父類并實(shí)現(xiàn)多個(gè)接口),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10