- 在线时间
- 491 小时
- 最后登录
- 2026-9-17
- 注册时间
- 2013-2-28
- 听众数
- 118
- 收听数
- 46
- 能力
- 268 分
- 体力
- 39229 点
- 威望
- 1340 点
- 阅读权限
- 255
- 积分
- 31234
- 相册
- 2
- 日志
- 0
- 记录
- 0
- 帖子
- 1389
- 主题
- 937
- 精华
- 0
- 分享
- 0
- 好友
- 111
升级   0% TA的每日心情 | 开心 2026-9-17 16:51 |
|---|
签到天数: 265 天 [LV.8]以坛为家I
- 自我介绍
- 内蒙古大学计算机学院
 群组: 2013年数学建模国赛备 |
 - JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。( }. _) J* e5 y9 K8 `/ O
- 1 e, t$ j, X. e x& B! O/ h& m9 x$ G
- 1、环境配置! o) c3 d1 {( |2 c$ O0 ?\\" i8 g8 c
- 2 I. {\\" i% D4 \
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html. e& T+ x\\" m9 Y& Y7 n- c
- : E- A8 e4 v0 U* Q' e% b
- 下载完成的包解压之后,可以得到如下几个重要的文件:
- $ C9 b\\" Z- y3 \0 ]6 D$ Z7 r, o
- / c\\" c5 ~9 H3 [# H, i* ?/ w$ w
- (1)jxl.jar —— JExcelAPI 函数库;
- 4 a% F4 O3 h% _! |' S, T* f
- $ @8 ` D8 H( F4 Z) V/ g. L
- (2)docs —— 帮助文档;
- + ]1 C\\" a$ ^( \4 z
- 7 G6 y0 @8 Y0 T9 x
- (3)src —— 源码文件夹;
- + x8 t+ ^+ ~8 q: k E3 b/ r
- 7 V9 t5 X- }2 V# q
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。2 f# l) i/ Q* [. L
- ) d l9 x- N! ^$ S4 ?! o9 s
- 2、Excel基础操作实例
- % l% f( q+ f; k3 N' W! _; Q
- . l9 O6 p& ?2 c\\" F; D0 Y; f. ?
- (1) 创建Excel文件
- \\" q4 b- Z+ l+ E1 P
- 9 H( [\\" d( F, {: S
- /**读取Excel文件的内容 6 m3 ? }. Q; o% j
- * @param file 待读取的文件
- : v' r- |. M5 K/ j
- * @return // 生成Excel的类 */
- \\" ]\\" n8 G/ l& v, E; ^
- package createxls;7 y$ E! o/ @7 p6 c
- 7 q6 G# Q b* d
- import java.io.File; ' K9 ?5 o- L. ^8 c; I0 t
-
- 7 [7 c+ t0 f% y( l6 k' G
- import jxl.Workbook;
- : d; F! }: z4 {% N
- import jxl.write.Label;
- / |( _$ u' G' b
- import jxl.write.WritableSheet;
- 0 P' ^5 i# R/ K/ |1 ]- S8 A( m
- import jxl.write.WritableWorkbook; # f# S) t D3 W* o, [0 A* P$ M0 H, I
- - X7 w' u9 C& J5 P( u
- public class CreateXLS {
- 4 A. t) z8 o/ D0 D4 { }
- public static void main(String args[]) {
- , C( G. B# j5 Q\\" c
- try {
- \\" J5 f' m' j. M- o
- // 打开文件 8 D& Z1 ~\\" y3 d
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); 0 h- ~* B. e\\" O- R\\" }/ m* c
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- & e/ F2 H' e# o1 [# o+ _
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- $ o& Q# E& o# j) o. C& _+ C
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
- - [& r }+ v# q8 ?; G; f3 x
- // 以及单元格内容为test
- 0 n. y! L* {( e7 y: U& O
- Label label = new Label( 0 , 0 , " test " );
- - ?% P* b; H: `8 D$ ]- ?: B
-
- * [6 w* }- H\\" A
- // 将定义好的单元格添加到工作表中
- * r7 S! h4 l. J0 q- h7 M
- sheet.addCell(label);
- . ?* c\\" I& R! Q! j
-
- 5 R\\" m( t% ~+ H6 C% p
- // 写入数据并关闭文件
- * d+ f& z% Q( [5 Q0 _ ^
- book.write(); % |( u( p7 @) u* P) I
- book.close(); $ s; S, w- D, D# d. d V- K
-
- , Z: d! h$ J7 y0 t, \. l
- } catch (Exception e) { . U( S; t6 s6 H- g
- System.out.println(e); $ ]9 {8 V\\" |( s# x0 ]; M$ [
- } 5 u2 g1 c# K& ]2 t1 k\\" l7 U9 N) ]% p
- }
- + I\\" c3 D/ _- N\\" C+ A
- } & C9 ?0 U& N5 U2 H; B6 L
- 8 B& ?6 {4 P2 L9 w1 {9 R6 B9 M3 f
- ! C\\" V0 K8 Q# v5 L, r5 ?* u5 o+ g. T4 U
- 0 \& B' E8 l! D u3 @ C5 Z% X
- (2)读Excel文件* |. z: c. ?1 }8 g) o. q: e
- 0 X# g5 R: B9 Y: ?( ?3 Y( O+ ^* Y
- \\" d4 L1 S, b: X
- package readxls;8 k; L4 E |& x& z
- : `7 k9 U\\" g( V- m* h/ u; _
- //读取Excel的类
- 7 P6 W$ B2 X! q, W) M) w Z7 h
- import java.io.File;
- / w% a; D9 g1 t) D
-
- 4 N4 k8 h8 `- y$ B3 F$ P7 v
- import jxl.Cell; * F2 u% m1 t2 v; }; V9 D
- import jxl.Sheet;
- \\" E6 d2 |# Y8 z! `2 e M: z
- import jxl.Workbook; 7 R* A! w( J, i/ T( {
- 9 W5 ?8 ^$ M; c3 ?: f
- public class ReadXLS { 6 W, x9 x! w2 \ C8 C
- public static void main(String args[]) {
- 9 V# C1 `2 d$ W# H/ ^! z! I\\" I
- try { ' Y3 y* a5 q, s: d7 _
- Workbook book = Workbook.getWorkbook( new File( " test.xls " )); 2 ]* x' N6 }7 M4 b U
- // 获得第一个工作表对象 $ H3 C% S, R$ W; W$ o\\" j/ m\\" Z
- Sheet sheet = book.getSheet( 0 );
- ; G8 P* B! x\\" i9 z
- // 得到第一列第一行的单元格
- + Y' c, f\\" G% {, n( s
- Cell cell1 = sheet.getCell( 0 , 0 ); 5 }* J\\" E. |+ ~, Q6 `/ I' k
- String result = cell1.getContents(); . e# Z. V2 x: i1 o7 O
- System.out.println(result); 2 C! |. H- W* g$ q3 A- e5 I: s5 X
- book.close(); & s, B p2 A9 t! F
- } catch (Exception e) { : Y% y) C! W9 `0 \( Q% f5 g
- //System.out.println(e);
- 8 U1 b4 F! s3 G\\" E! m) O8 k; x
- e.printStackTrace();' n( U$ _, p& q J5 Y
- } ! [\\" V( x0 g( }6 P
- }
- 4 y0 H5 m' E1 b& I
- }
- 5 J/ ]1 Y\\" c: i7 @+ l I h O5 K# k
- * N\\" d* s* t, m; q9 i* ^
- c& ?; j! e' p( D' G4 z
- 1 W! C* w- ?0 [' e, s6 I% ^
- 4 i0 g9 h. O3 E& L, o
- (3)合并单元格、格式化单元格等* I5 v\\" @ w7 B/ C: K0 Q6 V
- ) G: |* _' ^ O K\\" R5 j, v' O! l
- ' u4 ~% k4 N# _& P\\" ^\\" T h3 S( `+ }1 D
- //合并单元格并在单元格中输入内容- M, Y8 B\\" ?3 b' t
- 9 ^+ t- H- ?+ X0 K2 V, E
- package additionalproperty;; H7 l( O& K# v0 c. D5 S
- 3 u\\" }1 @ K7 u
- import java.io.*;/ j7 d/ N; z2 }% I
- import jxl.write.*;
- ) O) I. y( O2 _ S
- import jxl.*;: C; _: [2 f* c0 B4 E
- 5 u9 o) s/ }/ a) }' n& d- D
- public class MergeCells {
- , c9 R, u\\" `\\" \% G
- public static void main(String [] args){+ c; K1 s5 O4 a. S4 h2 g
- try{
- 6 h5 V \* R5 c) w5 k! D: e# p, p$ e
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- + n0 |, Q* \\\" h* Q
- WritableSheet sheet = book.createSheet("第一页", 0); }\\" A, N) f5 g. P4 D9 G
- sheet.mergeCells(3, 3, 6, 6); //合并单元格. _; m) b0 S' l2 h
-
- . [1 o- B! V5 P; Y4 C* H
- //设置填充内容的格式/ H' Q$ G* G5 y1 K, M/ R
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);. c D0 m: S1 h* V4 {/ j6 O M& O
- WritableCellFormat format = new WritableCellFormat(font);
- . |. j( S0 D' P6 u' a3 z' }
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
- 4 `' Q1 u! o* S m. E
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中7 \$ B4 i( I8 O/ l\\" v
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式, b+ l' T; f2 }! Z6 Y+ r; B$ {
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
- 0 @/ p, h3 ^: X3 k# }
-
- $ @, Z2 }1 e8 u\\" {4 P3 J; ?2 [5 E3 \
- Label label = new Label(3, 3, "合并", format); //添加内容0 X+ P3 @7 E3 K! ?( O: g& B$ L# {
- sheet.addCell(label);
- 4 _7 C M' Y/ X- p$ ~0 [6 m
- book.write();
- 0 `9 H; {; E; M0 C1 x8 Z, h, d
- book.close();
- % y ~6 C5 ?' U* J% e
- }//end try
- \\" G* E$ \) w% E+ o9 Y
- catch (Exception e){
- - D% R5 @5 h) O0 A8 v' ]9 m2 C7 R
- e.printStackTrace();3 p9 J* W4 x+ X0 l; G6 e
- }. Z& u/ Y4 E9 `) l$ O5 v6 O
- }
- * S& u5 O7 W: s! E7 h5 q' x\\" _ V
- }+ }* q, M, B2 l! y# @
- . @$ | T8 p. w6 W) j6 t
-
- * r6 \7 A6 q E7 f$ c$ F: Q5 W) M
- $ }+ s a- h+ j6 ~. W4 l
- (4)添加图片
- + z; B9 ]. B5 Q0 d
- 9 N Z7 j4 F5 K7 {) d7 @
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
- \\" A3 u8 p1 r4 p
- + h9 s. z j& k( C6 u( X
- 7 s/ z* ]0 Q, L2 V! s
- //在工作表中添加图片
- ) g. i; ]) @' r/ H) u
- 7 B# e) N# x) s# a6 E
- package handleimage;; ~\\" R r2 @0 s$ y/ g# `* W
- 4 v O* T$ O6 j- v) f4 I
- import java.io.*;' Z- s; z* F* H( D+ W9 b- |
- import jxl.*;
- * ~9 E* w. F3 @) P! i; {) |
- import jxl.write.*;
- 8 n* c! c' r. @\\" v2 @\\" V\\" @
- * D8 A5 \6 i, c; Q j, o
- public class CreateImage {% ^/ U' N\\" @' O& R2 F8 X* r
- public static void main(String [] args){/ H% q* H\\" k, u9 N' R) X; a
- try{2 C' A9 j: ~# J1 N- h$ H
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- & i# U9 b j, `6 B
- WritableSheet sheet = book.createSheet("第一页", 0);% X9 ~2 _9 e: [3 a* Z# r; w
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式: W% Z7 j H# T6 H; V c
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
- 4 C& N0 W+ ~ j y: w% G. S
- sheet.addImage(image); //添加图片
- * N\\" T d5 T, U. S
-
- 6 @# S% x8 }% ^8 g6 r9 t6 w. A8 s! p
- book.write();6 o) v! _% m9 a+ Y( j3 |' p9 X
- book.close();
- $ K% A9 r\\" M! A- Y- q
- }//end try
- & |& G4 M; B1 L/ |- L$ _3 T% u
- catch (Exception e){ e.printStackTrace(); }+ l }. V. o) U6 x+ q/ u
- }
- $ g/ `/ G! q1 t/ B8 x+ w
- }$ Y2 V' B5 `; ] r: n8 x9 {. e
|
zan
|