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è)置文字居中對齊方式;
cellFormat1.setAlignment(Alignment.CENTRE);
//設(shè)置垂直居中;
cellFormat1.setVerticalAlignment(VerticalAlignment.CENTRE);
//創(chuàng)建單元格
Label label1 = new Label(0, 0, "第一行第一個(gè)單元格(測試是否自動(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è)置背景、字體顏色、對齊方式等等;
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è)單元格(測試是否自動(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();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
- vue通過接口直接下載java生成好的Excel表格案例
- React獲取Java后臺(tái)文件流并下載Excel文件流程解析
- Java poi導(dǎo)出Excel下載到客戶端
- Java對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)一個(gè)簡單的線程池代碼示例
線程池是管理線程的一個(gè)池子,通過阻塞隊(duì)列管理任務(wù),主要參數(shù)包括corePoolSize、maximumPoolSize、keepAliveTime等,這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡單的線程池的相關(guān)資料,需要的朋友可以參考下2024-09-09
Nacos設(shè)置為windows自啟動(dòng)服務(wù)的步驟詳解
這篇文章給大家介紹了Nacos設(shè)置為windows自啟動(dòng)服務(wù)的操作步驟,文中通過代碼示例和圖文結(jié)合講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12
SpringCloud學(xué)習(xí)筆記之OpenFeign進(jìn)行服務(wù)調(diào)用
OpenFeign對feign進(jìn)行進(jìn)一步的封裝,添加了springmvc的一些功能,更加強(qiáng)大,下面這篇文章主要給大家介紹了關(guān)于SpringCloud學(xué)習(xí)筆記之OpenFeign進(jìn)行服務(wù)調(diào)用的相關(guān)資料,需要的朋友可以參考下2022-01-01
idea與eclipse項(xiàng)目相互導(dǎo)入的過程(圖文教程)
這篇文章主要介紹了idea與eclipse項(xiàng)目相互導(dǎo)入的過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
簡單了解springboot中的配置文件相關(guān)知識(shí)
這篇文章主要介紹了簡單了解springboot中的配置文件相關(guān)知識(shí),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
教你用java完美封裝微信模板消息的發(fā)送動(dòng)態(tài)
這篇文章主要介紹了教你用java完美封裝微信模板消息的發(fā)送動(dòng)態(tài),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04

