- 在线时间
- 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的使用方法。
- ; M1 [9 n0 y8 [2 L) Q8 C- ~( }
- 4 p1 L ~/ ?! K: x/ a3 Z) M* M
- 1、环境配置
- 2 m, [+ z3 B. e4 C5 u: z q
- $ O% t. q7 x6 k
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html9 u s8 d! W\\" ~! G$ B
- , X4 Z. A2 l, h( J- U8 c% [2 A9 t& W
- 下载完成的包解压之后,可以得到如下几个重要的文件:\\" L( s5 K8 C1 ?0 l( R/ l; f {; X
- 1 L6 c( P3 \1 }$ s5 l' @
- (1)jxl.jar —— JExcelAPI 函数库;
- ( Q& \6 r/ s K
- ) Q& y& ?9 d2 l% ]
- (2)docs —— 帮助文档;% C7 C0 s& |# ~
- ! |3 }2 X& U) I
- (3)src —— 源码文件夹;
- 4 P8 i2 h* D' J( s8 g
- & d/ Y/ P& F7 ?, W# O& V- g
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
- 3 s- {& p0 t% p/ F8 _# ~
- / J; f5 ^) P/ R
- 2、Excel基础操作实例
- 4 n+ [$ N2 Y# I+ ^, _7 e: q
- \\" K\\" ]\\" X9 I: k+ Q
- (1) 创建Excel文件 ; E) v\\" C( H' L7 ?
- ( q7 ]# k, J$ b
- /**读取Excel文件的内容 4 J l( K4 m5 b
- * @param file 待读取的文件 % w5 W. k\\" T- |: l& v6 `5 g, ~
- * @return // 生成Excel的类 */# ?5 Q0 R7 M) ^\\" a3 @
- package createxls;( z& E' p\\" Q& ?( z2 e# \1 e: O
- + _0 L/ ^. c+ d# b& ~
- import java.io.File;
- \\" p& H V, q# H' }8 ]
- , O; l\\" I\\" u A; m& J0 V3 E
- import jxl.Workbook; 2 H6 N( U/ ^8 y/ i2 w3 W! d
- import jxl.write.Label;
- 3 p7 d* Y, e5 g, m
- import jxl.write.WritableSheet;
- 9 w) h2 W! q g
- import jxl.write.WritableWorkbook; ; R' R# ]/ {% K$ e5 M' w
-
- ' |+ j5 W; @4 h6 p) X
- public class CreateXLS {
- % M' b1 P\\" C8 b
- public static void main(String args[]) { 5 @+ _' A: l5 M% X
- try {
- # s, Y: }( p6 f) c/ W& Y
- // 打开文件 ; n- Q- a! I# u& e( w- w8 n2 s) A& |
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); \\" I# [3 v6 K# Q( r. C1 x, {
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- # f ?# H) h+ v9 N
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- * u8 j& q2 u+ d- s
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
- ; v7 m& r1 w; O
- // 以及单元格内容为test
- ; ?) Y% b\\" U; ~9 ?5 p
- Label label = new Label( 0 , 0 , " test " );
- 4 y% c* q* j% i4 d
- - i: R/ L. | Y4 P# `& Y: Y
- // 将定义好的单元格添加到工作表中 . T3 q, H3 O1 L4 T+ R' D4 e
- sheet.addCell(label);
- 0 r/ \8 {/ S7 C; w8 e3 ^5 m) T; E
- + @3 v; C/ ~. b5 t0 j, J* q' y1 n
- // 写入数据并关闭文件 4 s8 B9 A+ q: D3 O7 f9 T
- book.write(); & G% [* e+ K7 V' d
- book.close(); \\" e3 U6 ^7 e8 k8 @- |; R
-
- 1 |9 Z+ F2 ?\\" M* o9 Z7 |
- } catch (Exception e) { + C# j; B- x+ |; g
- System.out.println(e);
- , i8 E: u4 _; g1 W
- } ( |) F( J9 ^% b6 ?! l9 f3 w
- }
- + g1 u# E. P$ k# I2 i, A3 G9 ^
- }
- 3 n# s/ b; W\\" C0 c; n3 x
- , V, C# ?0 d/ \( @3 I/ n
-
- ' B W' R/ p, D
- . l\\" |6 R O, j# o% e* [: J
- (2)读Excel文件
- 2 [3 e0 A2 ]1 r; y
- 6 E! i0 h8 H5 n$ Z, f
- ( T! T: J. B+ S. J
- package readxls;! C/ Q: t/ \) V, f6 q+ H
- / a# O( E& L4 M, w3 W8 f
- //读取Excel的类
- 6 u3 B! _0 E: P6 L7 k
- import java.io.File;
- % T# |\\" m3 b6 r t% v2 U6 H) M
- \\" V* E1 E. n+ ~; M/ J
- import jxl.Cell; \\" D' J9 b+ f( L: W
- import jxl.Sheet;
- ! k0 I: Z3 B& \7 H+ g
- import jxl.Workbook; ; y5 W1 o: o1 C\\" b6 @\\" C
- * q+ p* H6 V- o+ A* f: [0 E! i
- public class ReadXLS { ( l$ |- J3 e9 m7 o$ H+ W
- public static void main(String args[]) {
- , z5 L% R5 }+ a' v4 I
- try {
- 8 }\\" X) c1 A& J7 J
- Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
- ) R# {' h C3 S1 E5 c& G6 Z5 @6 X
- // 获得第一个工作表对象 . ?! U0 J/ Z4 x
- Sheet sheet = book.getSheet( 0 );
- ) u+ c$ y& D! ^3 @- Y
- // 得到第一列第一行的单元格
- - R0 L- C3 h& M! s( j5 G
- Cell cell1 = sheet.getCell( 0 , 0 );
- . \\\" Y# V2 F$ I: e% f! `; L
- String result = cell1.getContents();
- ' d1 d7 E4 j) I9 t
- System.out.println(result);
- & c; a$ L% V4 [. K1 z$ _+ E8 D
- book.close(); - p9 r' o6 a6 g
- } catch (Exception e) { y8 g, L: O. p' R/ q1 M9 [1 R. o) D
- //System.out.println(e); , Z5 W3 ^- b3 y9 v' b' P
- e.printStackTrace();
- 9 @* [) S- p# U! @3 y) ~/ G
- }
- 6 \* B$ y, U1 v% Y
- }
- % t3 A* Y' {/ s, Z- B3 [
- } C- ]\\" q | D* h
- ! M) f& v) |0 Y
- 7 _$ r: N( W( O+ _3 ^+ M
-
- t' c4 }! f C9 _2 z* d, G* N6 x
- 5 Q8 \* d8 t& k
- (3)合并单元格、格式化单元格等8 b6 b; Y5 C0 b! ~8 @
- 1 `5 T4 D( p2 h* g( j' o
- - M. ]1 g% T, b
- //合并单元格并在单元格中输入内容
- 3 y2 D6 N! `0 F; [
- * ]. o- [1 E\\" L2 n1 J; `# w
- package additionalproperty;3 W, r$ l! h# y& d9 ^1 O* l
- \\" z8 w( M\\" u& f% J& o8 n
- import java.io.*;% T* ~! D& @- q
- import jxl.write.*;# H3 R/ _0 o1 l5 s# {, e4 |$ h
- import jxl.*; r% G! {, F9 g) |& @) N9 h* K
- 6 K) l: S1 Q) H\\" _
- public class MergeCells {( d; ?8 `9 y\\" v' F$ y9 p
- public static void main(String [] args){$ r8 N, d% e5 ^- \
- try{( I\\" i# W. {# a\\" d# Q
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- $ P! o& _: w: `4 A' D
- WritableSheet sheet = book.createSheet("第一页", 0);
- ! J. J |+ a! T
- sheet.mergeCells(3, 3, 6, 6); //合并单元格
- 8 `+ T* g; k9 h- Y; p/ z
- / k# ~, W S9 l9 u# H
- //设置填充内容的格式
- ! ?' W+ P3 C, ~+ V
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
- : \$ a3 {3 W4 M
- WritableCellFormat format = new WritableCellFormat(font);, Q, x) q% f* v8 o& B
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
- ' S- t/ e) e: _! }
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中0 N! X* g8 B9 l1 L b. _1 s* e/ D
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
- : L\\" h# @9 _5 ~- U- D
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
- ( t! q/ W- N- k: b, ]7 ?1 l& O8 c
-
- : V) W4 f7 |' O# B4 K
- Label label = new Label(3, 3, "合并", format); //添加内容2 d/ U# k2 ~\\" z3 z) h: J5 F
- sheet.addCell(label);
- ! ~4 J6 ^& e, r4 U. R* H
- book.write();1 z& [! s9 m* a\\" k! ? U
- book.close();6 p0 [) ?9 F* ?! j! {, W A) M1 B
- }//end try1 H3 F# I* b( e' m3 A* ~4 E N1 A
- catch (Exception e){7 d# f, k0 @1 v1 {2 R* k
- e.printStackTrace();' k7 Y0 v n0 g. d1 p8 X2 R8 v/ c
- }
- 6 p- N6 W1 J0 q' c* O) `
- }2 i5 m# s& X- @0 w
- }
- , w5 [2 s4 `& B, N
- 7 ~# `# ~# v1 F
-
- $ N) J* }) _! f y9 n: F
- - w' H3 l1 w. o+ |8 j2 b- i% _
- (4)添加图片# C& B0 {( n' T\\" Y
- ( H( ]( @. i+ _4 _2 O: a5 S* `
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。3 v0 F7 n' \7 G8 Q% h
- 7 Q9 a+ o7 p$ O7 y4 m& u4 u2 G
- 2 w+ {9 o+ M\\" `. x% y
- //在工作表中添加图片! O' h1 F) o# t4 Y' g\\" c9 |/ \4 R
- / ^8 R. D( u. _. x( @5 k1 O& l
- package handleimage;9 W& k+ }, |) r# P
- + k3 k% G4 g6 U: E4 X
- import java.io.*;
- + c2 ?6 t$ J# h O; A% t Q) h- q; ~
- import jxl.*;
- 4 g: m1 o) V. h' ?+ o& D
- import jxl.write.*;; x+ m\\" S) c( _7 A) f
- % n. b\\" C( r' K2 c- H e( @
- public class CreateImage {
- & Z. ?- r% f; N
- public static void main(String [] args){
- 9 ~# U( f: J+ ]
- try{
- : I% W\\" d: l* _% T
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));( b* C2 u: d/ y: C* L
- WritableSheet sheet = book.createSheet("第一页", 0);/ T0 z B5 p\\" Q. `
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式
- 4 f! b8 w! X5 v; M( C
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
- . ~8 a/ F0 i2 z$ M' s
- sheet.addImage(image); //添加图片
- \\" ~; K, b\\" ?2 E$ G9 y% _
-
- ) X; `# A% G; k\\" t j2 i# U
- book.write();
- 9 ?: {7 t& W$ ~3 d1 D
- book.close();: ~2 \( H2 V. y, P2 W6 f6 P* u* p- Q
- }//end try) E `9 d# ?, p) @
- catch (Exception e){ e.printStackTrace(); }
- 6 Q3 C: t\\" ^6 G7 B
- }
- - Z F5 q& o1 F! X1 I- ~
- }! H9 s. Q8 E2 L, |& h
|
zan
|