http://coderdream.javaeye.com/blog/250628
1、工具类:
Java代码
1. package com.coderdream.jxl;
2.
3. import java.io.File;
4. import java.io.IOException;
5.
6. import jxl.Cell;
7. import jxl.Sheet;
8. import jxl.Workbook;
9. import jxl.format.Alignment;
10. import jxl.format.Border;
11. import jxl.format.BorderLineStyle;
12. import jxl.format.Colour;
13. import jxl.format.VerticalAlignment;
14. import jxl.read.biff.BiffException;
15. import jxl.write.Label;
16. import jxl.write.WritableCellFormat;
17. import jxl.write.WritableFont;
18. import jxl.write.WritableSheet;
19. import jxl.write.WritableWorkbook;
20. import jxl.write.WriteException;
21.
22. public class JxlUtil {
23.
24. /**
25. * @param fileName
26. * @throws IOException
27. */
28. public static void createExcel(String filename) {
29. File f = new File(filename);
30.
31. WritableWorkbook wwb = null;
32. // 创建Excel工作表
33. WritableSheet ws = null;
34.
35. try {
36. f.createNewFile();
37. wwb = Workbook.createWorkbook(f);
38.
39. ws = wwb.createSheet("Sheet1", 0);// 创建sheet
40. ws.addCell(new Label(0, 8, "ABCD"));
41.
42. // 输出流
43. wwb.write();
44.
45. // 关闭流
46. wwb.close();
47. } catch (WriteException e) {
48. e.printStackTrace();
49. } catch (IOException e) {
50. e.printStackTrace();
51. }
52. }
53.
54. /**
55. * @param fileName
56. * @throws IOException
57. */
58. public static void writeExcel(String filename) {
59. writeExcel(new File(filename));
60. }
61.
62. /**
63. * @param fileName
64. * @throws IOException
65. */
66. public static void writeExcel(File file) {
67.
68. WritableWorkbook wwb = null;
69. // 创建Excel工作表
70. WritableSheet sheet1 = null;
71. Workbook wb = null;
72. try {
73. // Excel获得文件
74. wb = Workbook.getWorkbook(file);
75.
76. // 打开一个文件的副本,并且指定数据写回到原文件
77. wwb = Workbook.createWorkbook(file, wb);
78.
79. // 读取第一张工作表
80. sheet1 = wwb.getSheet(0);
81.
82. Label l = new Label(0, 0, "姓名");// 第1行
83. sheet1.addCell(l);
84. l = new Label(1, 0, "电话");
85. sheet1.addCell(l);
86. l = new Label(2, 0, "地址");
87. sheet1.addCell(l);
88. l = new Label(0, 1, "小祝");// 第2行
89. sheet1.addCell(l);
90. l = new Label(1, 1, "1314***0974");
91. sheet1.addCell(l);
92. l = new Label(2, 1, "武汉武昌");
93. sheet1.addCell(l);
94.
95. // 添加一个工作表
96. WritableSheet sheet2 = wwb.createSheet("第二页", 1);
97. sheet2.addCell(new Label(0, 0, "第二页的测试数据"));
98.
99. // 输出流
100. wwb.write();
101.
102. // 关闭流
103. wwb.close();
104. } catch (WriteException e) {
105. e.printStackTrace();
106. } catch (IOException e) {
107. e.printStackTrace();
108. } catch (BiffException e) {
109. e.printStackTrace();
110. }
111. }
112.
113. /**
114. * @param fileName
115. * @throws IOException
116. */
117. public static void writeExcelWithFormat(String filename) {
118. writeExcelWithFormat(new File(filename));
119. }
120.
121. /**
122. * 增 加带格式的内容
123. *
124. * @param fileName
125. * @throws IOException
126. */
127. public static void writeExcelWithFormat(File file) {
128.
129. WritableWorkbook wwb = null;
130. // 创建Excel工作表
131. WritableSheet sheet1 = null;
132. Workbook wb = null;
133. try {
134. // Excel获得文件
135. wb = Workbook.getWorkbook(file);
136.
137. // 打开一个文件的副本,并且指定数据写回到原文件
138. // 原文件中某个Cell(单元格)的内容如果没有被修改,则会保留。
139. wwb = Workbook.createWorkbook(file, wb);
140.
141. // 读取第一张工作表
142. sheet1 = wwb.getSheet(0);
143. // 合并单元格(左列,左行,右列,右行)从第1行第1列到第1行第3列
144. sheet1.mergeCells(0, 0, 2, 0);
145. Label header = new Label(0, 0, "通讯录", getHeader());
146. sheet1.addCell(header);// 写入头
147.
148. Label l = new Label(0, 1, "姓名", getTitle());// 第1行
149. sheet1.addCell(l);
150. l = new Label(1, 1, "电话", getTitle());
151. sheet1.addCell(l);
152. l = new Label(2, 1, "地址", getTitle());
153. sheet1.addCell(l);
154. l = new Label(0, 2, "小祝", getNormolCell());// 第2行
155. sheet1.addCell(l);
156. l = new Label(1, 2, "1314***0974", getNormolCell());
157. sheet1.addCell(l);
158. l = new Label(2, 2, "武汉武昌", getNormolCell());
159. sheet1.addCell(l);
160.
161. sheet1.setColumnView(0, 20);// 设置列宽
162. sheet1.setColumnView(1, 20);
163. sheet1.setColumnView(2, 40);
164. sheet1.setRowView(0, 800);// 设置行高
165. sheet1.setRowView(1, 500);
166. sheet1.setRowView(2, 500);
167.
168. // 添加一个工作表
169. WritableSheet sheet2 = wwb.createSheet("第二页", 1);
170. sheet2.addCell(new Label(0, 0, "第二页的测试数据"));
171.
172. // 输出流
173. wwb.write();
174.
175. // 关闭流
176. wwb.close();
177. } catch (WriteException e) {
178. e.printStackTrace();
179. } catch (IOException e) {
180. e.printStackTrace();
181. } catch (BiffException e) {
182. e.printStackTrace();
183. }
184. }
185.
186. /**
187. * 设 置头的样式
188. *
189. * @return
190. */
191. public static WritableCellFormat getHeader() {
192. WritableFont font = new WritableFont(WritableFont.TIMES, 24,
193. WritableFont.BOLD);// 定义字体
194. WritableCellFormat format = null;
195. try {
196. font.setColour(Colour.BLUE);// 蓝色字体
197.
198. format = new WritableCellFormat(font);
199.
200. format.setAlignment(jxl.format.Alignment.CENTRE);// 左右居中
201. format.setVerticalAlignment(VerticalAlignment.CENTRE);// 上下居中
202. format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 黑色边框
203. format.setBackground(Colour.YELLOW);// 黄色背景
204. } catch (WriteException e1) {
205. e1.printStackTrace();
206. }
207. return format;
208. }
209.
210. /**
211. * 设 置标题样式
212. *
213. * @return
214. */
215. public static WritableCellFormat getTitle() {
216. WritableFont font = new WritableFont(WritableFont.TIMES, 14);
217. WritableCellFormat format = null;
218. try {
219. font.setColour(Colour.BLUE);// 蓝色字体
220.
221. format = new WritableCellFormat(font);
222.
223. format.setAlignment(Alignment.CENTRE);
224. format.setVerticalAlignment(VerticalAlignment.CENTRE);
225. format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
226. } catch (WriteException e) {
227. e.printStackTrace();
228. }
229. return format;
230. }
231.
232. /**
233. * 设 置其他单元格样式
234. *
235. * @return
236. */
237. public static WritableCellFormat getNormolCell() {
238. // 12号字体,上下左右居中,带黑色边框
239. WritableFont font = new WritableFont(WritableFont.TIMES, 12);
240. WritableCellFormat format = new WritableCellFormat(font);
241. try {
242. format.setAlignment(jxl.format.Alignment.CENTRE);
243. format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
244. format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
245. } catch (WriteException e) {
246. e.printStackTrace();
247. }
248. return format;
249. }
250.
251. public static void readExcel(String filename) {
252. readExcel(new File(filename));
253. }
254.
255. public static void readExcel(File filename) {
256.
257. Workbook wb = null;
258. try {
259. wb = Workbook.getWorkbook(filename);
260. Sheet s = wb.getSheet(0);// 第1个sheet
261. Cell c = null;
262. int row = s.getRows();// 总行数
263. int col = s.getColumns();// 总列数
264. for (int i = 0; i < row; i++) {
265. for (int j = 0; j < col; j++) {
266. c = s.getCell(j, i);
267. System.out.print(c.getContents() + " ");
268. }
269. System.out.println();
270. }
271.
272. } catch (IOException e) {
273. e.printStackTrace();
274. } catch (BiffException e) {
275. e.printStackTrace();
276. }
277. }
278. }
package com.coderdream.jxl;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
public class JxlUtil {
/**
* @param fileName
* @throws IOException
*/
public static void createExcel(String filename) {
File f = new File(filename);
WritableWorkbook wwb = null;
// 创建Excel工作表
WritableSheet ws = null;
try {
f.createNewFile();
wwb = Workbook.createWorkbook(f);
ws = wwb.createSheet("Sheet1", 0);// 创建sheet
ws.addCell(new Label(0, 8, "ABCD"));
// 输出流
wwb.write();
// 关闭流
wwb.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param fileName
* @throws IOException
*/
public static void writeExcel(String filename) {
writeExcel(new File(filename));
}
/**
* @param fileName
* @throws IOException
*/
public static void writeExcel(File file) {
WritableWorkbook wwb = null;
// 创建Excel工作表
WritableSheet sheet1 = null;
Workbook wb = null;
try {
// Excel获得文件
wb = Workbook.getWorkbook(file);
// 打开一个文件的副本,并且指定数据写回到原文件
wwb = Workbook.createWorkbook(file, wb);
// 读取第一张工作表
sheet1 = wwb.getSheet(0);
Label l = new Label(0, 0, "姓名");// 第1行
sheet1.addCell(l);
l = new Label(1, 0, "电话");
sheet1.addCell(l);
l = new Label(2, 0, "地址");
sheet1.addCell(l);
l = new Label(0, 1, "小祝");// 第2行
sheet1.addCell(l);
l = new Label(1, 1, "1314***0974");
sheet1.addCell(l);
l = new Label(2, 1, "武汉武昌");
sheet1.addCell(l);
// 添加一个工作表
WritableSheet sheet2 = wwb.createSheet("第二页", 1);
sheet2.addCell(new Label(0, 0, "第二页的测试数据"));
// 输出流
wwb.write();
// 关闭流
wwb.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
}
/**
* @param fileName
* @throws IOException
*/
public static void writeExcelWithFormat(String filename) {
writeExcelWithFormat(new File(filename));
}
/**
* 增加带格式的内容
*
* @param fileName
* @throws IOException
*/
public static void writeExcelWithFormat(File file) {
WritableWorkbook wwb = null;
// 创建Excel工作表
WritableSheet sheet1 = null;
Workbook wb = null;
try {
// Excel获得文件
wb = Workbook.getWorkbook(file);
// 打开一个文件的副本,并且指定数据写回到原文件
// 原文件中某个Cell(单元格)的内容如果没有被修改,则会保留。
wwb = Workbook.createWorkbook(file, wb);
// 读取第一张工作表
sheet1 = wwb.getSheet(0);
// 合并单元格(左列,左行,右列,右行)从第1行第1列到第1行第3列
sheet1.mergeCells(0, 0, 2, 0);
Label header = new Label(0, 0, "通讯录", getHeader());
sheet1.addCell(header);// 写入头
Label l = new Label(0, 1, "姓名", getTitle());// 第1行
sheet1.addCell(l);
l = new Label(1, 1, "电话", getTitle());
sheet1.addCell(l);
l = new Label(2, 1, "地址", getTitle());
sheet1.addCell(l);
l = new Label(0, 2, "小祝", getNormolCell());// 第2行
sheet1.addCell(l);
l = new Label(1, 2, "1314***0974", getNormolCell());
sheet1.addCell(l);
l = new Label(2, 2, "武汉武昌", getNormolCell());
sheet1.addCell(l);
sheet1.setColumnView(0, 20);// 设置列宽
sheet1.setColumnView(1, 20);
sheet1.setColumnView(2, 40);
sheet1.setRowView(0, 800);// 设置行高
sheet1.setRowView(1, 500);
sheet1.setRowView(2, 500);
// 添加一个工作表
WritableSheet sheet2 = wwb.createSheet("第二页", 1);
sheet2.addCell(new Label(0, 0, "第二页的测试数据"));
// 输出流
wwb.write();
// 关闭流
wwb.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
}
/**
* 设置头的样式
*
* @return
*/
public static WritableCellFormat getHeader() {
WritableFont font = new WritableFont(WritableFont.TIMES, 24,
WritableFont.BOLD);// 定义字体
WritableCellFormat format = null;
try {
font.setColour(Colour.BLUE);// 蓝色字体
format = new WritableCellFormat(font);
format.setAlignment(jxl.format.Alignment.CENTRE);// 左右居中
format.setVerticalAlignment(VerticalAlignment.CENTRE);// 上下居中
format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 黑色边框
format.setBackground(Colour.YELLOW);// 黄色背景
} catch (WriteException e1) {
e1.printStackTrace();
}
return format;
}
/**
* 设置标题样式
*
* @return
*/
public static WritableCellFormat getTitle() {
WritableFont font = new WritableFont(WritableFont.TIMES, 14);
WritableCellFormat format = null;
try {
font.setColour(Colour.BLUE);// 蓝色字体
format = new WritableCellFormat(font);
format.setAlignment(Alignment.CENTRE);
format.setVerticalAlignment(VerticalAlignment.CENTRE);
format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
} catch (WriteException e) {
e.printStackTrace();
}
return format;
}
/**
* 设置其他单元格样式
*
* @return
*/
public static WritableCellFormat getNormolCell() {
// 12号字体,上下左右居中,带黑色边框
WritableFont font = new WritableFont(WritableFont.TIMES, 12);
WritableCellFormat format = new WritableCellFormat(font);
try {
format.setAlignment(jxl.format.Alignment.CENTRE);
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
} catch (WriteException e) {
e.printStackTrace();
}
return format;
}
public static void readExcel(String filename) {
readExcel(new File(filename));
}
public static void readExcel(File filename) {
Workbook wb = null;
try {
wb = Workbook.getWorkbook(filename);
Sheet s = wb.getSheet(0);// 第1个sheet
Cell c = null;
int row = s.getRows();// 总行数
int col = s.getColumns();// 总列数
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
c = s.getCell(j, i);
System.out.print(c.getContents() + " ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
}
}
2、 测试代码:
Java代码
1. public class JxlTest {
2.
3. /**
4. * @param args
5. */
6. public static void main(String[] args) {
7. String filename = "D:/newExcel.xls";
8.
9. String filename2 = "D:/newExcel2.xls";
10. JxlUtil.createExcel(filename);
11. JxlUtil.writeExcel(filename);
12.
13. JxlUtil.createExcel(filename2);
14. JxlUtil.writeExcelWithFormat(filename2);
15. JxlUtil.readExcel(filename2);
16. }
17.
18. }
public class JxlTest {
/**
* @param args
*/
public static void main(String[] args) {
String filename = "D:/newExcel.xls";
String filename2 = "D:/newExcel2.xls";
JxlUtil.createExcel(filename);
JxlUtil.writeExcel(filename);
JxlUtil.createExcel(filename2);
JxlUtil.writeExcelWithFormat(filename2);
JxlUtil.readExcel(filename2);
}
}
输出结果:
Java代码
1. 通讯录
2. 姓名 电话 地址
3. 小祝 1314***0974 武 汉武昌
4.
5.
6.
7.
8.
9. ABCD