- 在线时间
- 490 小时
- 最后登录
- 2024-2-3
- 注册时间
- 2013-2-28
- 听众数
- 117
- 收听数
- 46
- 能力
- 268 分
- 体力
- 39235 点
- 威望
- 1340 点
- 阅读权限
- 255
- 积分
- 31237
- 相册
- 2
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 937
- 精华
- 0
- 分享
- 0
- 好友
- 111
升级   0% TA的每日心情 | 衰 2020-10-25 11:55 |
|---|
签到天数: 264 天 [LV.8]以坛为家I
- 自我介绍
- 内蒙古大学计算机学院
 群组: 2013年数学建模国赛备 |
 - JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。# _9 i! x+ N5 ]\\" A& [
- 8 V E0 z. a( }+ ~7 J }) w& ^
- 1、环境配置
- / v* o$ y$ W6 J7 [6 u
- % A; m+ |' |+ @ a* }% t y
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
- 6 F# y/ D! A. R9 \2 S _
- 7 R# Q' K) ?, {. P. d# A: A
- 下载完成的包解压之后,可以得到如下几个重要的文件:- g9 G, r) D7 x( |8 x
- 4 q, j& n1 L\\" {3 p+ F( x7 f. Y/ N$ Z* u
- (1)jxl.jar —— JExcelAPI 函数库;8 a7 |\\" R0 i, ~
- 9 j$ E8 z) g% `- V. x$ S3 l
- (2)docs —— 帮助文档;9 \3 _2 s. _+ ~, Y. |& j2 b
- + P( k n+ h7 ?1 K: r) l( y
- (3)src —— 源码文件夹;
- & K+ R9 L d1 s& j% S4 w# N
- - p7 a. z7 y$ |
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
- ! D8 @0 P7 G3 T
- 3 j w\\" G* r$ f4 F2 m
- 2、Excel基础操作实例2 l$ q1 d\\" |4 K0 X9 ^3 k
- + g0 f8 X/ w/ O: y
- (1) 创建Excel文件 4 _9 ]8 i1 C# s* n: C
- % ^# t& S$ o8 d
- /**读取Excel文件的内容 , {' p! R0 P/ v\\" C; r' @, T
- * @param file 待读取的文件 $ K, N- ^' a/ V8 G) R; s; E& E
- * @return // 生成Excel的类 */\\" d' m d0 c) c
- package createxls;
- % P7 O; h( o* R3 v# U$ Z3 {
- & ^ H$ Z8 x, I0 E3 I) j\\" \1 e! L
- import java.io.File; 2 ` M7 S) Y: b, }2 a
-
- 5 F# w3 N- J: j. c2 O7 Q$ z+ n
- import jxl.Workbook; * t\\" Z2 d1 _6 r' ^7 t6 Z
- import jxl.write.Label;
- ; a* d9 A% Z\\" e* }( m: a Z V
- import jxl.write.WritableSheet; 4 D& D( l5 J& \3 C
- import jxl.write.WritableWorkbook;
- 5 k5 {* C9 u9 Z+ r
-
- * \2 R2 v+ }# G\\" {4 x2 I
- public class CreateXLS {
- % B V/ }# Z0 k i& u7 \
- public static void main(String args[]) { 2 Y7 |% n4 A; K# z
- try { * r y) a. F+ M: v( [, g* J
- // 打开文件 ' ]9 u5 Q r$ [0 @
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); 6 v! H\\" v9 J! |% w& K$ h) K
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- / P) u; Y' J0 _* k1 q4 c
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- - v! q! p7 K) g, x) y
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) / e7 c, C- e. ~9 {- N
- // 以及单元格内容为test - j4 y0 b, L& F& [! q% Q k4 V
- Label label = new Label( 0 , 0 , " test " ); / b' k. x* y) i0 Y% a* s$ g
-
- \\" `3 T7 t% r8 G5 o
- // 将定义好的单元格添加到工作表中
- - D h: N0 U# A+ g2 T
- sheet.addCell(label);
- 1 _, v/ r8 C- c
- 7 U% d/ [0 @% d# x, c: S( a
- // 写入数据并关闭文件 7 k+ b\\" c3 X R6 [
- book.write();
- N, R6 t7 W/ D9 u, Y( F+ J
- book.close();
- . F' V\\" B j/ ?. t+ Y
- ; C5 `+ L+ `8 d3 Z, B7 i! D) e0 T
- } catch (Exception e) { 3 Y+ c5 e! ~% C1 y2 [\\" I; v
- System.out.println(e);
- ; h, M4 I. i9 t6 @$ \9 c/ ^
- } % g( p# Q7 k7 h& {$ ]1 T
- } 4 M( @ Q; y4 i6 {
- } # E3 \5 E1 R* a, ?6 n
- & Z- c9 a% }6 K( e, O6 Z0 H, u
- $ A) C6 g; x ]' i ~ {\\" C
- : T' |) d0 l- ~$ z
- (2)读Excel文件
- 9 ?- q! U* u8 v2 a$ j R, R
- ; S# d& {3 c s( y2 w. C' d9 D& ^
- & K- P2 a% j+ b\\" i$ R$ T
- package readxls;+ q# Z, p9 i5 }2 B4 W' t
- 0 @: B, U. i, H2 {6 S
- //读取Excel的类
- : {4 V; t* f' h) I/ m
- import java.io.File; 7 U. Y. v5 Z0 E* D\\" X: I7 e9 j) P
- N% s$ ]: I( V
- import jxl.Cell; 3 Q/ U0 {6 ~7 \' \$ n0 k$ x
- import jxl.Sheet;
- / p v; v. Q* O6 \9 F: T8 r
- import jxl.Workbook;
- ) q. W* G( Y; ?1 m
-
- k8 o& J9 }/ [$ e$ w# j* |; [: G; v
- public class ReadXLS { ! v# ~4 t; d9 o0 D6 Q+ T& O3 f
- public static void main(String args[]) {
- ' g7 T0 A4 |6 j- B! J7 u- s8 m6 X0 {
- try {
- 3 g- x5 c0 |9 ~8 n2 y) h2 @
- Workbook book = Workbook.getWorkbook( new File( " test.xls " )); , f4 e& H1 J* Y0 K0 p$ f
- // 获得第一个工作表对象
- 1 |4 U9 o9 \; [0 r8 v+ d! [# L5 n; ]
- Sheet sheet = book.getSheet( 0 ); 5 k; S e. o$ L5 K( n3 ^
- // 得到第一列第一行的单元格 - _9 g\\" F; B: a8 k0 ]* `
- Cell cell1 = sheet.getCell( 0 , 0 );
- 2 b; s7 l6 \- }: u$ X; ]
- String result = cell1.getContents();
- ! r- N5 C' C- U8 V! x2 @
- System.out.println(result); S' j1 E* w8 x* R2 u; r
- book.close();
- : t5 H7 N8 ]- i
- } catch (Exception e) {
- - _9 m$ @1 ]7 T9 e0 x
- //System.out.println(e);
- + N- r2 t+ d/ Y$ K( F1 g
- e.printStackTrace();% f\\" m+ G7 E4 i4 [
- }
- ) i: E, F# L0 q ?
- } ) p+ {, |4 n b9 c
- }
- . H- \/ t4 A4 ~, N
- ) q+ F3 x$ J# z3 A
- , H Q( X( W8 Z2 B4 B
- 8 q$ G, \, F9 e& `) l6 g A6 o- s\\" ?
- 3 X8 H* Q/ V4 N$ M8 }
- (3)合并单元格、格式化单元格等! z# Q4 g7 \\\" s: a- N- N
- 3 U6 A3 E. n$ y9 |/ o Y* v
- - V. J' H% w% ?/ @5 s
- //合并单元格并在单元格中输入内容
- / f$ g/ ~# Q\\" B V: _4 R
- ) G8 p, k5 ^$ a& c {
- package additionalproperty;
- 0 C; M6 ]% B( J* W
- ! r$ A' }2 I2 ~2 Y
- import java.io.*;. }, n3 U9 N* x% ]' c$ ~6 q- Z
- import jxl.write.*;4 A\\" T7 H7 t2 q+ v/ R: \& q
- import jxl.*;
- / W/ R. k. g- o* @
- \\" a+ b3 v# t$ t1 s1 v6 j N
- public class MergeCells {
- 1 J: \0 Y. b4 F+ J5 G7 S
- public static void main(String [] args){* K: s# F$ E' I2 T7 D6 P2 ?
- try{
- * y/ u* Z\\" N. l$ r3 N; V
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));3 c! y4 @1 M; A1 }3 F7 y; X$ g
- WritableSheet sheet = book.createSheet("第一页", 0);. g% z% m7 M8 d) {8 l
- sheet.mergeCells(3, 3, 6, 6); //合并单元格
- : @* _ Y( m8 ^/ f6 t, q, v; _
-
- ; \- r/ ^+ L8 H8 d
- //设置填充内容的格式
- % I9 Z) \. C* R
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
- 8 A! w7 C) P' g$ z, X9 t( `8 |& C
- WritableCellFormat format = new WritableCellFormat(font);
- 1 R# w. h\\" F5 s9 ^
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
- , v4 Z) |1 \- C( H6 x' ]/ m- l
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
- ' b\\" ~( M2 S2 c8 }
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式: o! n# O! p5 c8 d- h/ q- z( y
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式0 s* p. ]. Q, X0 y: z6 n4 Z; d
- 2 D2 \8 @8 d+ Q c, d
- Label label = new Label(3, 3, "合并", format); //添加内容
- $ U4 i. F& l: S0 N
- sheet.addCell(label);+ x6 w, p0 p: g% f3 ?
- book.write();
- - U' c& p: ` \2 N' a: V
- book.close();& ~$ _, F2 Q& P1 }0 c
- }//end try
- $ D3 [& H# B4 K7 O1 E0 `
- catch (Exception e){
- , [3 n3 J: E0 ?8 T
- e.printStackTrace();
- ) P+ n2 {& t\\" H: b% H
- }# }7 T- H$ T! z; N. q8 B9 N* q
- }. T |; ~6 A7 t% J6 f/ v0 _2 U# L
- }
- + A9 b& k% f8 [1 q4 p
- 1 P8 b7 @5 @* D/ h
-
- ' B) e) ^; `0 W
- ) i6 P% q6 ^9 U9 G) }0 {5 f
- (4)添加图片: Y* I6 j& p* ~
- # s+ i6 J: U& k4 g% ]\\" } s* f
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。( W8 O8 p) G+ u0 u\\" [
- 1 b( }( D7 Y' x$ J, A' v
- 6 ]6 e; O8 @) s; T6 P
- //在工作表中添加图片5 R3 i) @) J- V
- ( ]# F. r& G6 C6 y1 u1 p) x: S* @) _
- package handleimage;
- , D- o\\" m4 E7 e* C5 G
- / {, A6 O* ^$ j( a. i o$ R) o+ B
- import java.io.*;+ c. K a4 F& K) v
- import jxl.*;3 e+ Y: T+ Q6 E4 ^: ^
- import jxl.write.*;' {5 ]) @2 e3 H B* p. v$ f
- + t2 l7 l* C: s ?, u1 @1 n
- public class CreateImage {/ J: l# M0 j8 g- A
- public static void main(String [] args){; O: }3 T/ A2 B
- try{
- / \/ \\\" H+ }9 v* C6 ]
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- 2 c: N* n' [+ G: ?: g* Q: I
- WritableSheet sheet = book.createSheet("第一页", 0);
- , v5 G5 { O9 ?) P4 K& Z
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式
- % [! ]6 |8 w) ?& K: a! J1 G) O
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));$ L7 `2 w6 B$ G( E0 j E$ K& M
- sheet.addImage(image); //添加图片
- + C6 d; ^$ o3 u9 o1 C
- / a4 X) i7 B+ {; n/ L( E
- book.write();
- 6 T( i+ r* ^) @ b# r& f4 k
- book.close();, u1 S, n; `4 M+ N
- }//end try T0 P8 z2 v- \( X0 S1 w6 z- ~' ^
- catch (Exception e){ e.printStackTrace(); }; S; h% ^: `( |* v
- }
- 3 ^; |: E8 Y5 ?. M5 Q* r
- }0 [4 t0 Z' q8 K( b9 B+ d/ h. x
|
zan
|