在线时间 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的使用方法。. w# D, {8 j4 N I3 K; c
) B* j) W, K# \$ s5 N4 Q 1、环境配置
\\" Z2 c n/ D c7 \; {- k\\" @/ }
: M* W4 e, s6 D 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html' k' Y/ {; g/ {, K
6 E) j9 Q1 T7 x
下载完成的包解压之后,可以得到如下几个重要的文件:$ n/ y# a+ Q1 S- L8 ^# x( A
6 A# j, i* Y8 a
(1)jxl.jar —— JExcelAPI 函数库;
/ \, F5 r: x |1 i' E5 O; Z8 w \\" o% j7 M/ ?8 i& C2 W
(2)docs —— 帮助文档;
' v1 w7 }! |+ Q1 h, H
2 r7 l3 C U' a* y$ n2 o2 B6 [# _ (3)src —— 源码文件夹;; I+ ^/ O* X\\" B1 V
6 f6 _+ g: N, `
将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
% H% t7 i. E6 N ) d5 k/ Y3 o6 z6 V' h' o5 C
2、Excel基础操作实例) I- B/ T& }$ o8 ^4 p0 h& ]
& l9 D# M2 @( ]$ | (1) 创建Excel文件 + V5 X3 }0 R2 N, G
\\" f, u( G% i2 T) ]* m2 `! g$ p6 `8 V
/**读取Excel文件的内容
0 P- z4 e( }; ?& G * @param file 待读取的文件
5 T2 }& I\\" w8 \& w * @return // 生成Excel的类 */
# \9 J0 L1 m0 a3 n package createxls;6 q l5 U: x: Y4 {7 n+ r X$ W P
8 L6 J- {, D0 t$ B- t; M+ J
import java.io.File; . L2 w- I\\" q% G* L5 P
$ A p; T5 {( V/ x: K v import jxl.Workbook;
4 D/ T% R7 i K5 Q/ q import jxl.write.Label; 1 L4 b8 X. I1 G3 C
import jxl.write.WritableSheet; \\" y+ R5 g0 t\\" ^, ~
import jxl.write.WritableWorkbook; 7 b B$ M! Y: Q9 f) e' L' T+ r
. s* g- P' _1 J1 ^
public class CreateXLS { ' C7 h4 E. h: m+ }- c3 |) f9 ^& R
public static void main(String args[]) { 6 V- z v& ^4 a- B& ^1 [' Y
try {
' w: c5 v6 c- ]6 z& |8 f Y // 打开文件
4 I( N5 ~' h/ N! W$ P) E5 R8 X WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); 9 r3 q4 B8 M3 s. D/ c
// 生成名为“第一页”的工作表,参数0表示这是第一页 : L# a- `3 F9 k( p$ a+ ~, y
WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
4 ~/ I/ U; A+ o* g/ n // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
$ {% `- Q# l: Z$ G# r7 j // 以及单元格内容为test , r6 ?+ J3 [9 c( |5 O4 J
Label label = new Label( 0 , 0 , " test " ); $ \3 ^1 h% {* f9 t( ? c# a* m
. m- u9 ~5 C9 A1 Y7 N0 y; p // 将定义好的单元格添加到工作表中
0 B( B8 L4 w! ^3 u$ Y* j6 y$ x sheet.addCell(label);
+ L; p, O( r: `- h
! m3 z) s4 V% U! ^- z // 写入数据并关闭文件
- }( c7 {. l/ E, j7 a, ` book.write();
5 l; F& h2 g. Z. x, g book.close(); 8 C, L8 X/ E$ O) L
. h* f5 |3 b4 v( l( U } catch (Exception e) { 9 O9 z1 A( T- K9 l\\" b+ O
System.out.println(e);
/ d3 O2 K( n8 g4 Y. T) x/ h }
4 n* h8 W\\" X( g# u* | }
7 j3 { Q* K& n4 n1 g+ i$ a }
) d( n1 o) m- l5 g7 R' T; i3 [
% |5 ~8 x- r9 K 1 I1 Z$ Z& H/ b! B4 v7 Z# S2 X q
\\" E% d9 Q0 _8 I
(2)读Excel文件
' d) F, t! x8 N ' D( u0 {4 W& L) k2 h, m* U
( g$ X- p1 e8 Y' }# m2 Z package readxls;/ d; u+ ^& d) |5 M% v9 O/ H: |
. ~) ?- b r$ H
//读取Excel的类
' d& C( c7 U( s8 ]7 Y( E: }& z E import java.io.File; 9 o# Y. t5 Y4 a0 x% }
% e' Q) y K6 ^
import jxl.Cell;
* |\\" k* O. z# }\\" Z% k import jxl.Sheet; 5 q2 X4 v; }) e2 o* d, u+ s
import jxl.Workbook;
E: E& Y/ p T/ [! M9 Q/ l$ D
- w& m6 N7 |; |- C public class ReadXLS {
/ {- V# _) u4 A& O2 B. I public static void main(String args[]) { 1 K2 ^8 L# J/ o) _: s+ a7 \
try { + M0 R& P7 ^. j% v7 f
Workbook book = Workbook.getWorkbook( new File( " test.xls " )); 0 E- X# N* N$ j4 d6 ]
// 获得第一个工作表对象 $ g\\" u# D/ E! Q% Z! C
Sheet sheet = book.getSheet( 0 ); 8 S# z' j0 X9 u! K* Z$ A\\" _
// 得到第一列第一行的单元格 ) K5 q\\" P4 @# _\\" R5 c5 K
Cell cell1 = sheet.getCell( 0 , 0 ); 6 M8 h3 Z+ v4 @6 ~! N
String result = cell1.getContents();
# g1 ?5 [\\" v$ \$ t System.out.println(result);
+ g# X$ o+ s5 \7 Q1 I0 o book.close();
: c7 F$ S\\" {) g! u5 m; ] } catch (Exception e) { $ w2 e5 Q; Q3 A& C3 T! N1 k Y9 K
//System.out.println(e);
! s: E* m/ Z: Q- _1 R\\" E1 D4 n# f y e.printStackTrace();
3 o b: F( F5 b! \0 W\\" Y } 4 {. H1 b. g4 l O6 { U) K
}
2 S8 o7 v: \* j }6 X\\" l2 q/ g+ H% T* Q3 \
. I+ O7 z$ q+ m+ s) S0 G6 L$ }' a ; s' k; S+ V* G/ j0 p3 x
; g D$ G. V; a- D& @6 v8 s
1 U' B) K6 e% `( k' ] (3)合并单元格、格式化单元格等
. \\\" y! k4 a7 ]
3 N' F% U* F) H# B. {/ h/ }7 ~ 8 I, }# c/ A- C! M. u- N
//合并单元格并在单元格中输入内容3 f- G: E3 u9 r\\" R
% _0 X n5 Q! Y5 U8 g! u package additionalproperty;/ Q, F4 t$ v3 V; t2 K2 W6 ?
3 q\\" E3 F2 R2 ~, [/ q, S4 P
import java.io.*;: ~9 `8 r( E8 j1 x c
import jxl.write.*;
9 P% I\\" W! C+ k* q: a% H import jxl.*;# l\\" H& L( Q; N# ^. Z
6 l, B( M* ]3 H8 q/ l
public class MergeCells {
+ |( W& ]7 a9 t! S1 [9 Z2 w% ~ public static void main(String [] args){2 I/ M- v$ c: e/ s0 N2 g
try{
R, J) E: H4 z) R; Y WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
. `. U2 H8 A' n- F) x- m WritableSheet sheet = book.createSheet("第一页", 0);
5 g. g, K, i' \, M sheet.mergeCells(3, 3, 6, 6); //合并单元格# `0 K& d6 ^7 q ?2 H
! O\\" c# A1 F- p& ~% I4 I$ c
//设置填充内容的格式
: B6 z\\" _6 U2 v\\" Z t WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
) Y\\" x* z1 e) A7 K3 a WritableCellFormat format = new WritableCellFormat(font);7 v7 {/ l m, W) G
format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中4 K7 k4 n* A6 J% ]. Y2 h
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
\\" ]- T9 J/ N- q, U9 s3 [ format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
\\" y; G4 o, G5 Z6 b5 y+ n) C format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
' X& y3 q$ _1 F, k) i ) d9 ]+ y\\" ^7 G& ^- j! e# W
Label label = new Label(3, 3, "合并", format); //添加内容( H7 ^( @: d2 a; Q+ t7 k
sheet.addCell(label);( s5 W\\" w( `3 X0 y+ _
book.write();\\" }) C1 r3 R p9 Y9 i
book.close();( L6 N1 N# s4 F K, k
}//end try
( D9 V# w2 R: g3 a6 R$ ` catch (Exception e){- |9 E$ H4 q7 B
e.printStackTrace();. ^8 b$ F% a0 p
}
1 L$ @+ a h/ X7 i }0 o; C1 i$ b6 q4 Y% s7 L4 Q: k2 ]1 |& C
}
4 @; O; S* x1 u; ]: V! `3 o \\" j [9 ?: j. u- F
# u) k* k( k: d
& ^: J8 S: E1 t, }; p U9 P5 [8 e (4)添加图片
/ W' [1 F1 a8 b( b1 y: O
+ I6 _. d m! W+ J6 m; d5 o& { JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
7 T2 E' s8 A& M# U, y# U2 R9 q
6 h8 }: e0 U, M Z
8 m3 E$ J0 H) L# m //在工作表中添加图片
\\" } \: r8 ^: C7 N
! `$ Y4 q: }7 H8 ?) v8 W! a* W package handleimage;1 I. h$ F+ t3 p: }$ @
\\" M `* ~/ K& n j0 [ import java.io.*;
& |, t9 ]: L) Z( }! F) } import jxl.*;
' z' t$ O5 L5 Q. v import jxl.write.*;1 L* U) n9 V5 s9 T' [6 p0 m
+ t! S& E8 r\\" g public class CreateImage {
! K' z8 e7 j g; @% b public static void main(String [] args){( Z* T- P& N* g0 u
try{9 p, b8 m: ~0 f
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));4 ~4 i' R7 A9 t\\" w- G( }% L0 k
WritableSheet sheet = book.createSheet("第一页", 0);) L' o2 I0 H5 h1 y/ E3 z
WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式6 `3 A7 s9 g) L\\" V2 V
new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
! j) H, J A! U, y7 F sheet.addImage(image); //添加图片
5 m\\" l* O& V: O
5 Z! l% V. C% p book.write();
( o9 q# y1 b: R& y( i) v% c, | book.close();! A$ c1 a! z9 v! S. a
}//end try4 J/ q4 _8 Z. G- ^
catch (Exception e){ e.printStackTrace(); }2 U7 A: e7 G& a. U+ I3 s
}
; L4 X! X\\" g5 M1 B9 l; y8 V }
( G+ b( d\\" `, Q* p
zan