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

时间:2022-06-12 21:51:34

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
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();
 }
}

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

原文链接:https://blog.csdn.net/hongwangzhang/article/details/50764534