在线时间 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的使用方法。
, s' M+ N6 @1 z. L! v
- U2 [& }# P\\" h6 r: C 1、环境配置
, Q& j3 `$ a: `) B0 d, y, a
8 o* [* u4 u2 n3 j3 k: I& } 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
\\" A2 T, [\\" n( W4 S ; d1 y6 T+ i3 _5 p\\" `\\" @
下载完成的包解压之后,可以得到如下几个重要的文件:
$ h E\\" ]/ ~$ D& t* R
( L7 Q/ r! x1 E2 [ (1)jxl.jar —— JExcelAPI 函数库;
+ k, @4 V1 M$ x- ?
, H9 R$ ~1 a4 ?+ e/ ? (2)docs —— 帮助文档;8 q& G1 \9 d( w `6 b
! X+ [7 h4 n! T/ B0 b6 j+ |4 X (3)src —— 源码文件夹;
9 P: V' u- j ]* m0 C 9 E' c k D5 j- [$ x
将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。0 E. W1 C6 K9 Z; W. w+ h
; L/ w' j, A! C6 t ] 2、Excel基础操作实例
2 ?: h& G; b# M4 e5 g; H1 Q
( q5 _* M. e. K3 Q& {1 J (1) 创建Excel文件 4 U9 V( K5 u+ |0 E0 D
# U# n: j# M4 A /**读取Excel文件的内容 0 y* ?# b1 H4 v, o5 A
* @param file 待读取的文件
! {/ m g: A& o0 @ r * @return // 生成Excel的类 */
7 O+ G# Y1 Y! F! x package createxls;
- F9 h# Y' U n, M& ^
& \( ~ y\\" j. _- M5 j3 ^4 E6 h& o import java.io.File; % Q2 t( x( Z4 {6 {
: q- F e/ u1 v, `5 x import jxl.Workbook; 2 L! e' Q: K W5 i4 r; u
import jxl.write.Label; - W( P- f/ r- @
import jxl.write.WritableSheet;
7 O! h3 v$ { a \1 K import jxl.write.WritableWorkbook; 5 \& l1 U! i( I2 |8 E* @
. Y1 ^# }7 x! r6 U. V& {0 U\\" I& j- V
public class CreateXLS {
; Z; e% I% P; A public static void main(String args[]) {
( T3 h2 u# J7 v+ p' r/ g try { $ B2 W' T' p% X3 M$ d9 y; |5 ` ?
// 打开文件 . ~3 j6 g- l6 ^
WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
2 E% ~2 ^; T% Q* W6 u: F6 d // 生成名为“第一页”的工作表,参数0表示这是第一页 ! [5 w+ T4 t% j3 U6 n
WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
) h: P\\" d7 }6 D // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
+ A& R ]: e) z- D F // 以及单元格内容为test
. Z! {. W Y9 R( a Label label = new Label( 0 , 0 , " test " ); ! t9 x$ A) }' ` p4 E; \# f
\\" {7 u9 m# k% k0 i // 将定义好的单元格添加到工作表中 ! ?# N: G+ P# t! b& J% u
sheet.addCell(label); 8 G$ d. k6 @: d$ x' y. @
2 n8 x+ k6 d5 L7 L) Y9 m // 写入数据并关闭文件 ~4 f0 o: C6 [) G
book.write();
$ K6 K/ H+ h( K H k+ Q book.close(); ! p) ^# I C* j7 _5 l+ p
2 \9 b/ F6 i* Y4 o
} catch (Exception e) {
+ l* _; V7 e8 ^7 ~9 R System.out.println(e);
0 E1 z ^5 j0 r }
4 M5 [' c- d& L }
; i2 O; f1 p7 y+ k# [- e; l0 U& Q } 6 a1 b8 W- C\\" ?0 p9 o1 E2 j
' z( H n1 S, S
\\" _! T# q0 \# V, u' U
% R, u( |3 z/ ]$ y' d\\" U; x' w# I$ o (2)读Excel文件
+ b2 {1 y. ]+ H
. h; ?0 L% K5 Y9 I8 [
) W. ? p) r, t, u! B package readxls;
+ n: D\\" @: c2 [\\" Y6 Y- e
: o1 ?2 Q6 G+ v+ K\\" g\\" t: X //读取Excel的类
: u) ?\\" Y8 W6 W+ ~ import java.io.File; 3 V* u\\" U2 ]\\" C' T
1 j8 W0 C' w& s
import jxl.Cell; 2 }, b/ c7 j* @\\" s
import jxl.Sheet; 5 v; s+ f) D$ g5 J4 |$ b
import jxl.Workbook;
* v, U4 R( E& l3 z; m& r u' J! K0 P B
9 ~. z- v& H/ ?) N public class ReadXLS {
; `8 E+ H. C2 t public static void main(String args[]) { 5 z; q1 Q$ a) s4 w/ F, j+ r8 k
try {
6 H) {, C7 v8 N0 E- ] Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
* i& l! I S6 V# s1 T( v! B // 获得第一个工作表对象
a, p\\" `9 T/ L0 s0 w8 i. | Sheet sheet = book.getSheet( 0 );
' o8 y6 S/ M3 c' y W // 得到第一列第一行的单元格
$ {' ~7 e+ O0 p\\" L/ d2 ~, b! B7 } Cell cell1 = sheet.getCell( 0 , 0 ); 9 u+ C) D- f5 b. [
String result = cell1.getContents(); 2 H1 ~( \6 s) V1 z
System.out.println(result); & K; y+ z; w* l9 o& [0 y9 U
book.close();
5 T& e& A: c& |5 t' S1 W } catch (Exception e) { ' ?( N/ h( M\\" a0 v
//System.out.println(e);
Z2 z8 P9 p% o3 T/ ~1 q9 } e.printStackTrace();* q; S5 E. L [& p; q8 v
}
- U, A5 @/ m\\" e. i. G3 t } + N! |* I, Q4 m* p
}
4 t# @ |8 s! u' ]+ F
- C- p3 h) p) D+ d4 A
4 Z7 `4 j7 T( j5 [% x) \4 @+ I
) l& k; V( ~5 y9 W% S& J, m ; _% G( V7 O+ ~\\" X/ N6 j, x
(3)合并单元格、格式化单元格等* b7 W% I) y( N) e D4 @\\" R
j8 C\\" ~7 y2 b( L ' s4 z. {0 {5 |2 e- {9 M% x
//合并单元格并在单元格中输入内容
2 V\\" E, z ]1 g$ G& a
% g0 ?- e6 j6 C+ M6 q, L$ a6 Y package additionalproperty;
( P) }* p: [1 [
0 O$ Z! u5 X, H5 ?/ q import java.io.*; D( D# A2 y5 B2 v# i/ z1 t\\" V5 _& Q
import jxl.write.*;
) g* _% G! z% D7 G0 I1 G! t, I\\" [ import jxl.*;. O6 o' {) G0 Z) Y
K. [\\" X+ {% K3 e/ I, J public class MergeCells {$ G/ l4 ?7 v {\\" ]- B$ i6 b% ~
public static void main(String [] args){
# ^' ]8 Z\\" ~4 g5 i8 w\\" K, q% V) K try{
* h* N# ?) z q3 C WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
8 G W( {, p( `0 q% [ WritableSheet sheet = book.createSheet("第一页", 0);. K1 n% j( i) H* {7 i7 @( I
sheet.mergeCells(3, 3, 6, 6); //合并单元格
1 [& i; b+ g9 C% l, s& _! a- o7 t ]$ l2 q( n6 S3 n
//设置填充内容的格式. M8 r! B ^! Y\\" d) y, \$ ~\\" I+ M
WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
$ z% d( @, |! n WritableCellFormat format = new WritableCellFormat(font);\\" X\\" C% t2 i% |; ~& Z7 F7 w$ I
format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
\\" \' ^% L2 i' J7 J$ s t3 B# r format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中% \2 `# \3 X8 B, c% f4 q
format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
* s, Q) `7 d/ j- t0 X+ V& M format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式; a4 X) V; N1 `8 p* ]
\\" Q/ s: |* J$ T& j; Q$ E
Label label = new Label(3, 3, "合并", format); //添加内容$ P# w! P% l* ~9 y( K
sheet.addCell(label);+ _1 R6 P4 g; v, ^
book.write();
8 ^' W3 Y0 [6 v book.close();2 i% @$ W: c1 S) B# M* `/ `
}//end try
, [ A. [( R& t/ O catch (Exception e){
) v! d+ N( F: n6 @1 T5 V e.printStackTrace();
( U9 k+ b4 q8 |, Q: N, \ }
5 x6 S% |/ @% g# y }
. v( q; F$ K4 G\\" F2 J, `# K }
: r& `$ s1 s1 \ X7 k
/ J# d& g& D' U) N, p
6 I- N3 N/ |7 B: [- n( B( J ) w w5 q4 O T M
(4)添加图片
3 c, ~. U y) t; C' k( } - h: N! X0 {/ ]' w
JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
3 L0 {: Q( q$ \% ^1 D: o
/ i* u5 @* e- T$ M; I9 ?# `8 g0 p ; \$ M: \7 Z- r# O- v
//在工作表中添加图片' l& l1 N9 d! A\\" `
; o; k; W1 Z% S: k; g package handleimage;
; m& p. ^: f% E
8 [3 l/ \: }5 p3 ?! o8 }2 K! z import java.io.*;
* S7 V: t' N' }8 v- P0 [% e( l. r import jxl.*;
\\" @* a) }4 t0 x/ ]1 n1 t. L) l import jxl.write.*;
\\" Q' a3 R4 T5 F. ]; z$ ^ ! G\\" X4 B3 t$ |5 U4 h% D t
public class CreateImage {
) @\\" V. ?' E6 \9 g' M! m2 z' {; }2 q public static void main(String [] args){
0 M$ B( y! e7 Y4 f, |+ X try{
: [$ F; Q% }: W6 b. @ WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
* _2 V! T2 y. e1 n* f0 @ WritableSheet sheet = book.createSheet("第一页", 0);
. |/ E6 G! g, t5 V WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式3 f [. J% M7 W0 `3 B
new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));; c0 T4 ~: S# S& o; o( W8 H
sheet.addImage(image); //添加图片- ~7 G' p& E( F: _% {( d: a8 g
# `' J0 B' h\\" b M8 t8 b8 w book.write();
6 P% }2 p+ ?' u1 S: U( L1 S+ U book.close();7 g; W* o( V+ `7 I4 Y5 y* V
}//end try
) B( U1 n* r% `; I\\" k. `! U catch (Exception e){ e.printStackTrace(); }
( P; y. C5 P! Y* z, o+ Z }$ s7 N# M \/ z; Z7 y7 b2 |, i' }
}
8 I- W& Z5 e4 ]% e* @: ?
zan