- 在线时间
- 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的使用方法。
- % ?' \+ |- v) @\\" I& _: X3 v2 C) @
- , S: N H' S' _
- 1、环境配置$ n1 H! N3 i$ k5 N
- 0 n+ T4 f8 r( \$ M9 ?
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html; M$ v$ \$ I3 n/ w$ M0 v\\" Z4 H
- % r8 a! g# U7 a0 }4 B4 N6 ~
- 下载完成的包解压之后,可以得到如下几个重要的文件:; U' A- C6 i) ~0 W0 Y( }& ]/ m
- % }6 _. J6 `/ D/ Q/ S
- (1)jxl.jar —— JExcelAPI 函数库;
- 8 j2 T+ h n/ w# Q& z
- \\" R; \. }$ R* x
- (2)docs —— 帮助文档;
- d6 R5 s' I3 a2 t7 [4 D3 Z\\" ?
- : ?4 w7 ]7 V! b0 ]( _# N
- (3)src —— 源码文件夹;
- * |9 G1 J# g/ V' ]( T7 ?
- ' `% D7 a3 t/ G7 ~ X4 v; C8 v
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
- ) v\\" m, W# W! ~# D5 O: y. {) {
- & e, Q6 ~( O6 M0 C) ^\\" f
- 2、Excel基础操作实例# m) `! N9 r2 y' h
- 7 p- N; g$ M/ O) x8 _; a: @- K2 b
- (1) 创建Excel文件
- ; m, [3 z9 |* \* o\\" u
- . {3 E, B) Q\\" h
- /**读取Excel文件的内容 ; _% n6 M# T# Q- ]# `6 H4 p7 A( t/ I
- * @param file 待读取的文件 0 h' f& B( \) g+ V
- * @return // 生成Excel的类 */: v9 G3 P1 B3 v, Z8 Z! d m. u
- package createxls;! g( E, U# N- ]0 x1 E
- + v1 j) O2 O# H5 h( V+ x
- import java.io.File; / }. q, t1 A6 G! ^. ]5 d7 @5 _
- & b- }$ @5 t# q
- import jxl.Workbook;
- 2 o& |! {9 z9 {2 Z+ l
- import jxl.write.Label;
- 5 G\\" U0 }9 x) z\\" i6 W5 M
- import jxl.write.WritableSheet; ; W8 ]; J6 _6 b* w# t9 B
- import jxl.write.WritableWorkbook;
- & y. t! V* j. ?: N( s/ U+ D
-
- 5 j3 a. w1 c) f M
- public class CreateXLS {
- & L7 G# Q' A$ x; \/ ^8 I, I- }% e/ ^
- public static void main(String args[]) { ; K0 d0 ^9 F. Z- P! n) b2 g
- try {
- , N! V% g, Z8 R+ K
- // 打开文件
- + O$ l: `\\" G4 Q) s
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
- & F! ^\\" |+ Z% H: ?9 L
- // 生成名为“第一页”的工作表,参数0表示这是第一页 . x$ f$ d+ f7 V! A8 I8 L3 l6 \
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- 9 F; H% {1 n3 K5 g
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) ) y9 K( F, C8 [+ L
- // 以及单元格内容为test \\" i, x& h+ ~$ i
- Label label = new Label( 0 , 0 , " test " ); . F/ i* {0 g6 h9 |3 ?
-
- ) ^/ Q0 i# _2 C
- // 将定义好的单元格添加到工作表中
- $ h) l% W- \1 Y/ F2 a\\" j4 z
- sheet.addCell(label);
- / k( f |# s1 n9 i' R
- 8 i+ t7 e6 @, y1 d! Z
- // 写入数据并关闭文件
- 2 K/ j3 {% L* F( B0 {& g\\" p
- book.write();
- 9 j3 m3 L% {8 I6 T. T
- book.close(); \\" ~; \+ ?8 y( V& n7 _
-
- / O# v+ y, Z1 e. A( l/ y\\" j
- } catch (Exception e) { / ? Y) p$ ]: i\\" e
- System.out.println(e); ; f9 Q( Y\\" }7 h. t8 J! J
- }
- ) e0 r) [+ M) j- @. X2 V
- } 4 m5 F# ^2 b v( f/ J
- }
- 5 b& |6 R, _; o/ `\\" L5 d; n( e3 M
- 5 O, {1 N/ n6 A$ m* }! B; J
-
- - I. A: f7 J' b' z3 P+ }
- + k: D. `8 Q& i5 I4 f7 I0 L
- (2)读Excel文件4 ~( ]- W; X0 v5 [\\" z
- 4 U# K J; S$ C C) y+ f
- 0 z8 k0 N/ l2 `' i c
- package readxls;
- . Y) G7 H1 d. l% Q# U
- 1 E! I d& g/ `\\" h6 t* @+ q
- //读取Excel的类 6 l E1 m z* k# v3 b* A' `+ I
- import java.io.File; : F! Y\\" U5 X/ o7 W\\" |; f: |6 ^
- / r+ o d: h! Q; g
- import jxl.Cell;
- \\" \7 `8 ?/ _4 R' T
- import jxl.Sheet; 2 q- ~ _$ @0 _0 P) {5 o- }\\" ], w
- import jxl.Workbook; % t5 t* t# p8 g8 u
- : n% S/ o& h; o+ j\\" Y* T
- public class ReadXLS { 8 g7 V& a0 {1 g/ ?3 m# A
- public static void main(String args[]) { / b2 r% A$ [) e: w* z* W
- try { * ]( I. z* P2 i3 A
- Workbook book = Workbook.getWorkbook( new File( " test.xls " )); \\" `$ Z* c* S' N! l
- // 获得第一个工作表对象 & c- m- I* x0 p: ^/ d
- Sheet sheet = book.getSheet( 0 ); + `1 `* I/ T( O* x& S: j) \
- // 得到第一列第一行的单元格
- - K/ ^\\" G- P# q7 \/ `
- Cell cell1 = sheet.getCell( 0 , 0 );
- , r F) Z+ U2 x( Z1 v! l, r
- String result = cell1.getContents();
- 6 X! P0 E% ?6 d* b
- System.out.println(result); ' l7 ~! v2 y( |. {: E! B
- book.close(); / w/ C5 V L9 F8 z
- } catch (Exception e) {
- 7 t- K h6 ]$ \( b
- //System.out.println(e);
- 6 x [8 C) p+ G
- e.printStackTrace();! r8 L; D# ^3 _/ _, h g* z2 E0 {
- }
- 5 ]0 d1 v; T3 x* r
- }
- ' `* v' O. g- C+ y/ _# n p
- }
- ( r+ w9 Y- T; h1 L7 `
- ' P) L2 ?. M/ j) y( k! M\\" k) G
- , j3 H, }0 G9 {; l3 F
- , p6 f% A1 B5 m9 G2 a0 t
- , h7 z- d9 |2 E! D% c\\" \
- (3)合并单元格、格式化单元格等
- 3 ~( O. O8 k$ v
- 5 C5 R& b1 g- E
- ( Q$ z8 S+ k: n/ ^* E6 H5 B
- //合并单元格并在单元格中输入内容$ l\\" T/ V- c4 s7 u
- - _! u! y, u0 k4 r
- package additionalproperty;
- ) |# G$ D1 C; ], r* F- e9 t
- + p, \ p7 {+ P' @& x' l
- import java.io.*;0 f& T3 X, J3 z1 R
- import jxl.write.*;
- ' i* `/ J5 T! p' k' T$ {. y4 m
- import jxl.*;
- ! V4 x# U* I1 r' o
- - [' {$ W6 G3 Y: b
- public class MergeCells {
- 2 }+ |! x) k ~4 U) p\\" y+ C7 k8 N
- public static void main(String [] args){
- & M; I; l. }5 V6 ^
- try{
- 7 f+ T- R( w3 S
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));: c7 m) T4 V. p3 N' s; C5 D
- WritableSheet sheet = book.createSheet("第一页", 0);
- 6 O8 I( j P( U4 t+ y
- sheet.mergeCells(3, 3, 6, 6); //合并单元格1 _ _! c+ s0 e) z3 ^; W U. p7 |
-
- : I1 T3 V I3 R) C/ e( j. c$ M! h! }\\" T& f
- //设置填充内容的格式; ~. L5 K: l, Z& N! ]
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);- n7 W% Z4 Z. Q b0 M
- WritableCellFormat format = new WritableCellFormat(font);
- 8 \; t/ s* }7 C% ?- r! p7 e; u% F
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中, b7 d; b0 z# W) {1 o4 j M
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中% f4 K9 [/ S S
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式7 l' g+ A7 T+ F; }3 x5 B' J
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
- 0 i7 C/ c# R, c) y
-
- ; C7 [4 U: n- @! R3 B
- Label label = new Label(3, 3, "合并", format); //添加内容& m3 m$ i$ ]9 m5 K
- sheet.addCell(label);# g7 |1 ~2 H6 U! [
- book.write();
- ' i# Y4 ]7 {4 Y9 x7 \
- book.close();& c( Q4 t/ E& z
- }//end try
- 0 a6 I1 I7 l5 t2 N: r1 A2 E( \& ^
- catch (Exception e){
- + k5 B3 k6 A) m) g3 d) V( n: T
- e.printStackTrace();
- \\" }# u F\\" c3 m: w- x0 Q$ y: }
- }
- $ [( D- ]; d0 U5 X\\" y' t
- }0 B! S0 e' d0 h/ ^' x& E
- }\\" S% X. Y\\" @\\" s& A& q
- 0 g3 E& W% k- b
-
- - n2 D5 }6 w8 q% j\\" o2 m4 N
- 4 q\\" i) h* Y, T1 [
- (4)添加图片
- ' _8 Z1 _0 L) |
- & X+ c0 c4 O$ J4 P. Z
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
- , G4 F1 u% @\\" w D) L) w. L
- 7 h% H% [4 G$ J& P7 k' }* O
- : ^& X3 D& J) s/ Q H* H) D
- //在工作表中添加图片
- , U- S( [7 w* l% w9 K e6 p
- , q5 z, H\\" x N8 y- X1 \$ Q3 O6 J: _
- package handleimage; x1 d( V# e- A: O4 {) N
- \\" r5 ^9 k$ q$ e. {% F* h$ D
- import java.io.*;
- 5 d: l. s/ \& k6 S
- import jxl.*;! S6 R6 n: X( M% s
- import jxl.write.*;
- $ d0 |) u$ s! h! B\\" v2 \
- 6 K1 Q. M( [- l. t
- public class CreateImage {
- % G- e r+ j3 \6 A, x
- public static void main(String [] args){! d+ a5 \' b W1 i; _3 \ L
- try{
- ?2 x c1 {; ?+ z\\" K% `
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));: ~1 \4 _2 V+ H5 l# r5 r
- WritableSheet sheet = book.createSheet("第一页", 0);
- % d+ n) a\\" S f( V- ]
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式
- 5 o7 l) Q! }0 R
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));1 k) c1 O3 V8 ~
- sheet.addImage(image); //添加图片0 U6 d5 J8 Z7 v) t1 [+ g1 j4 k
- \\" j, i) e8 Z; d# C3 ]$ X' a
- book.write();5 h c8 j9 A) W# F/ m: F8 v r6 `
- book.close();
- - ]9 }( X/ [/ s/ L2 {
- }//end try2 X9 k2 q: j: D- b
- catch (Exception e){ e.printStackTrace(); }
- ) G- H' v1 Z- }
- }
- # K- n) o1 x2 u( H$ B* {6 r* T
- }\\" o8 \# x0 T J+ J$ e3 P
|
zan
|