- 在线时间
- 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的使用方法。
- & L! ]7 |$ `5 L- y* W4 Q
- ' o5 y6 ~9 G, r9 D
- 1、环境配置
- + O\\" y- w, x$ k
- , t- s, ~) l% B- U! Q0 F# y
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html8 k9 ~/ x; {# X! S# t
- ' N) m$ v% ^4 n
- 下载完成的包解压之后,可以得到如下几个重要的文件:
- ' y/ ~\\" v) V: i( {
- ' l, ^% H' S+ x9 b( D P
- (1)jxl.jar —— JExcelAPI 函数库;/ M; b9 S9 G* w
- 2 e( ?0 J* W, R
- (2)docs —— 帮助文档;7 T/ O9 y3 d+ v5 t9 W4 O
- 4 E! ^\\" s; G [+ G8 I& v; F
- (3)src —— 源码文件夹;
- # D# ~( \, _! t4 h l8 }8 E3 l
- + x7 }7 y% M8 O; y6 h; w* A; U
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
- % \3 n4 V. y; _6 D$ l
- # q! {\\" d, }4 D# v+ l
- 2、Excel基础操作实例
- - @# E E5 Z5 ~5 W& I3 s- D, E
- . T; G$ e- G) Q. H; _ N* h
- (1) 创建Excel文件 - d7 D+ e% q5 y+ g3 d
- / G2 J& f \\\" R' l; J$ X
- /**读取Excel文件的内容
- # @4 s, N) Z& W$ w; e+ w( n4 A, L
- * @param file 待读取的文件 8 p% e, P9 ]% O5 Z+ J
- * @return // 生成Excel的类 */
- - C0 E2 U+ x\\" K3 j8 n5 E
- package createxls;
- , Z: M# F X* Q) Y$ ~1 \
- % \+ o- ~/ r! r5 O4 V0 E: g
- import java.io.File; 5 i* V) b' A( c( T8 _* X
-
- ' G0 s1 K9 B3 @' C* U f: r
- import jxl.Workbook; # O# W5 J9 V- H5 f
- import jxl.write.Label;
- / Z1 t$ N5 g2 [
- import jxl.write.WritableSheet; 2 H$ [- t7 ?( m0 e9 T
- import jxl.write.WritableWorkbook;
- - x* L6 n\\" T5 U% |) n
- 4 S\\" l& ?& L5 B) N u
- public class CreateXLS { 8 }5 t* y4 I9 L( R' }
- public static void main(String args[]) {
- $ m* k V1 N1 k
- try {
- % @2 K& P2 G+ S% u7 d
- // 打开文件
- * U, x$ p, e; G: A. [6 n
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
- ; _/ Z% i+ j2 X5 S5 P
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- : y/ [# I1 X6 S$ p
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- 6 p0 V\\" ]/ l% J: ~$ V
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) ' r+ ?\\" J1 X) v9 U$ H
- // 以及单元格内容为test ! h2 h4 p, |8 L3 I1 w- P
- Label label = new Label( 0 , 0 , " test " ); $ ^$ \5 f; s2 v6 w8 X
-
- \\" A6 X7 l v& }0 I
- // 将定义好的单元格添加到工作表中
- ( `8 R7 K! {( r2 r3 @
- sheet.addCell(label);
- 7 B7 ]/ @1 v4 \0 |6 r) k; F
- / S9 R }4 e7 j
- // 写入数据并关闭文件
- # z b# z0 X, P: ~2 Z- U
- book.write(); + u- o, o* r\\" E: S9 [
- book.close(); . Z3 |) N\\" t7 T\\" W4 i
- : N; u( D( M2 N @( B7 _+ S
- } catch (Exception e) {
- 5 V7 Z9 q n- n! O
- System.out.println(e); ( y& s! ^' B+ f1 _! `) e
- } ' Y9 p+ H2 {0 r$ {) d
- } \\" f6 n9 D\\" Z. B$ ^2 u9 N- f! A
- } . u1 q% H+ _. O+ I8 s, A
- s0 M8 N4 Y. `* Z) R
- + f6 W1 ]! |\\" B7 D/ \3 p! g9 K
- 1 U. n: {+ u; \. m- x C/ O
- (2)读Excel文件8 i8 n% C* Z, `% H% y6 x
- # h. J, ]7 c$ b$ O* Z
- $ X; m$ ~. h+ L\\" r
- package readxls;. j5 O, C# e% v) i$ ~
- 2 ^, ^: j7 ]. x- p5 M; i b
- //读取Excel的类 . V: |- [9 p7 }% h
- import java.io.File; ! U6 V# q5 D0 v+ k: A/ P3 Z+ j* l4 ?
- 8 z2 }/ Q, G# ?
- import jxl.Cell; % v1 c) Z3 w: A2 A; ]& m
- import jxl.Sheet;
- ' c! K+ n! W) P- i
- import jxl.Workbook; 5 x& e5 U+ `0 d, k, R
-
- \\" N+ Q! t5 W# O
- public class ReadXLS { u. h6 p, q9 E+ \; C/ `
- public static void main(String args[]) { , `3 K2 _$ f+ M2 O9 u; b\\" U' r
- try { ) i5 Y( {0 y# v$ k2 s
- Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
- + X- F; A' v) r0 K. ?- ?# r\\" `
- // 获得第一个工作表对象
- 0 L# @) A6 U6 I. H
- Sheet sheet = book.getSheet( 0 ); ) ^; N( R4 i) F; c\\" G& `
- // 得到第一列第一行的单元格
- & ~$ B) z1 k' D. g$ W8 W6 {
- Cell cell1 = sheet.getCell( 0 , 0 ); 8 |+ ?! b# K0 B) k, Q
- String result = cell1.getContents();
- # m1 X2 @$ _# G& w6 X# d! l+ w
- System.out.println(result); + Z* u! }3 A# B$ s& |
- book.close(); - w4 b* X0 Z) e) z4 M
- } catch (Exception e) { * l8 b/ p$ o, N
- //System.out.println(e); 4 R4 U0 M S9 V4 ~2 C u
- e.printStackTrace();6 b8 ?( ^/ |+ g) y
- }
- * C5 f' K3 W+ ]8 r
- }
- . |6 c0 N# h9 A* B% G& R+ S
- }
- 2 }$ q\\" y, C# ?3 d( Y; B
- / x6 ?% G( H3 ~# Q/ O! X
- 5 X+ W( E. ?* o* Y& O
- \\" m8 X- F5 n7 U/ ]* F- o$ r# ?
- \\" t- T s' P$ R
- (3)合并单元格、格式化单元格等% g2 e5 L% V7 y8 g& B W
- \\" [0 R/ K( C8 m: [\\" J. F
- % A; { l* u- R
- //合并单元格并在单元格中输入内容
- 6 i8 }* I( y8 C9 _: y
- 1 H- J8 k7 ?; @. H, E0 R
- package additionalproperty;3 A% {5 k+ g2 G% y1 | D4 H2 t
- 3 h- u- ^$ y' q. }# o9 U% L
- import java.io.*;
- : L7 q7 ?) r% p6 D' o
- import jxl.write.*;
- 9 Q+ P. `- f' P0 f3 w2 |
- import jxl.*;7 w G1 h0 t9 k* N
- + H% i P8 D% f) h. z
- public class MergeCells {
- 9 M\\" q4 L; P R
- public static void main(String [] args){8 r, p4 w0 W; Y
- try{4 X* l8 X* E# M6 `8 H
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- + i+ S' k& E S9 A& N# w6 _
- WritableSheet sheet = book.createSheet("第一页", 0);
- 5 T; v; L9 o- t1 U; W, P) x' a
- sheet.mergeCells(3, 3, 6, 6); //合并单元格
- M/ e+ m9 @8 _9 E& V8 e) T
-
- ! c5 L1 b _! R! U' e% F
- //设置填充内容的格式
- 7 w' o1 r B: H
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
- & o$ F7 ?; U% v
- WritableCellFormat format = new WritableCellFormat(font);1 @4 M5 s1 K/ E b/ c; r4 W7 z$ m6 s7 f
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中$ @- z/ ^! M1 m# _$ a2 }
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中0 d8 J! A& A) x X6 [# u
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式\\" t% L( G- m+ ^- k3 \& n- X
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式. x& v5 b6 S1 u
-
- 6 A6 Y4 C* p& Q6 L
- Label label = new Label(3, 3, "合并", format); //添加内容 j t1 `, N3 f6 I/ @
- sheet.addCell(label);. I; X T! \6 A% p6 Z6 B
- book.write();
- / A+ V: Z! n; h! S. u- c0 J
- book.close();- M3 ^* P4 }2 u& c# n
- }//end try8 I. \: o# `. k8 w/ [
- catch (Exception e){: d, @7 B9 i, i* ^; N) O
- e.printStackTrace();
- 3 z. L4 N3 e& ^9 w
- }
- ; B& e. c B+ |\\" g& x3 `9 l% o1 L
- }3 ^% w, p$ ?6 [+ l) P
- }
- : _. B5 Y8 v' t( t6 }$ t
- \\" i( ~; j! n+ r$ t9 Q& [0 v
-
- $ k0 a9 g9 C, }) C& \7 h4 R
- ) H$ v. n6 a1 N/ P' b
- (4)添加图片
- ! v$ |* m8 S+ D5 u8 a
- \\" M9 ~/ i+ X/ `# c+ E
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。- Q) V+ o0 O6 G/ ?/ W7 W9 Y, L8 v7 y
- ( c1 X$ }2 l) c; { o- }% Z
- : b, w7 [. Z$ ~* I; K. K
- //在工作表中添加图片
- - U( B/ J+ r, ^ {- o\\" M# U
- + t# R n/ W2 F1 @1 F$ V8 Q
- package handleimage;
- ( F0 |8 j$ V/ a6 I3 c, I$ `
- + E\\" |) W9 ]& @& R
- import java.io.*;1 w, n1 u8 D. u
- import jxl.*;# w/ t- w, J/ t
- import jxl.write.*;
- 0 k+ H& w0 O$ ~+ O# W1 w* s
- - Z$ K! Z( S0 @* ~
- public class CreateImage {\\" m$ g* O- Y! @( `/ Z: `3 W7 F
- public static void main(String [] args){
- 4 h' i0 l D/ E+ N
- try{
- 6 ]' L$ m$ [, v- G/ L! T6 z% J
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 z9 d, X% l1 C: X+ N
- WritableSheet sheet = book.createSheet("第一页", 0);7 L0 o4 q; R) q1 S$ [
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式
- * }- Z1 K0 P, L$ E
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
- 6 h- [& Z# E- v! |/ g
- sheet.addImage(image); //添加图片
- ( F, ~. S% W7 f3 { `
-
- 1 A: d\\" X# O) X8 R7 y
- book.write();, l8 X E2 x; S: i% q\\" P
- book.close();8 i- L' {$ x X% p7 v# u
- }//end try0 N, e T- w% U) M
- catch (Exception e){ e.printStackTrace(); }4 ]( C H5 `0 G5 M5 o
- }; p U9 y: H+ }' Q2 x ]
- }* o, U$ W' }/ m2 `
|
zan
|