- 在线时间
- 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的使用方法。
- ; ~2 z! c: Y2 W6 L! Y2 D\\" Y
- 4 Q% r& A3 Y* B2 d& R& z# X0 q
- 1、环境配置4 x$ T% z F' Z
- / D/ \- c( B7 z& R. d, S
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
- , O: m: o# x& ^% x4 F S
- + j T' _: |2 f) d% A3 d7 z4 O
- 下载完成的包解压之后,可以得到如下几个重要的文件:4 W/ \* o7 x3 v* {
- 1 m- D. A$ N2 @2 k* _5 a4 e5 G
- (1)jxl.jar —— JExcelAPI 函数库;
- ! @7 c- b4 L8 C1 X
- 0 T8 g1 U; ?! g/ d- a, x4 g0 U U3 g
- (2)docs —— 帮助文档;
- 6 v( K$ m) ]; @6 r9 [2 {1 @
- ( Y- L( F\\" j* n. [
- (3)src —— 源码文件夹;
- # Z9 l8 ~' y0 _
- & k- S3 w' B- U* \9 r
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。: R6 V3 u5 G0 s* q9 _2 k. P
- 1 a0 {* D* T m\\" ?2 W& f
- 2、Excel基础操作实例7 Y, R5 r7 y+ v, ]2 y: H
- 7 b3 W9 G+ s& c4 N* D4 ^& l# x2 E
- (1) 创建Excel文件 5 [- N0 ~2 d- S1 ~8 t9 K
- 4 V$ t6 H6 }: T- M\\" t' }
- /**读取Excel文件的内容 + q) E( O8 h$ ]1 F `) C6 }
- * @param file 待读取的文件
- & Q( r2 M- \\\" w' ]. x
- * @return // 生成Excel的类 */
- 4 y! \! T2 K n, u! d) d: \
- package createxls;
- 2 o% N: R6 d% W) P9 F
- 4 ^& H, u5 ]7 f5 |6 F7 J' v
- import java.io.File;
- * a: W. [+ s! W, M/ i$ S. Q
-
- ( b5 V$ \ }6 z
- import jxl.Workbook;
- 9 d$ t4 N# T# I+ F& ]8 x
- import jxl.write.Label;
- ! S& `* D/ Y1 W& ~
- import jxl.write.WritableSheet;
- - O) K/ X9 L- p! j2 x$ |3 O
- import jxl.write.WritableWorkbook; , e5 C! Z) r0 I/ ~. |' X
-
- 0 M1 }, \9 K9 w8 B3 t' p
- public class CreateXLS { , G% H$ W! V% W8 T1 r7 x4 L
- public static void main(String args[]) {
- - [8 X* B. e2 a% J( ]
- try {
- % r1 j g8 z1 q1 Z7 G
- // 打开文件 ! P! p\\" I, o% L4 ?\\" H1 V. c
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); . y\\" R$ E% o( Y6 G! A9 w
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- 1 q4 m' D. ~1 l- X3 u9 |3 x
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 ); ( y4 W! E$ N9 v8 S* q
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
- 8 b7 E8 `; Q; T$ \5 T2 A
- // 以及单元格内容为test
- z( r/ k0 S- b
- Label label = new Label( 0 , 0 , " test " ); 3 p( u! o$ g+ U+ z( e. t
-
- 5 S2 S5 a/ X4 z4 S
- // 将定义好的单元格添加到工作表中 9 o7 Q. F! B# X3 }
- sheet.addCell(label); % d, l& W6 D- B7 M1 u4 ~ Q+ c
-
- ) V: v$ \2 I# n* i; }/ x( g5 _
- // 写入数据并关闭文件
- / F! [9 m Z p
- book.write(); $ b+ {# k# ]/ S( u) m2 P
- book.close();
- ' _6 T' k5 w4 {2 C
-
- ( |/ l, j( e# Q- e
- } catch (Exception e) {
- # P\\" K1 G) V; C
- System.out.println(e); $ r& o5 H2 I+ N2 W% J
- } ' e: C4 P7 n: ?\\" J& F! m! M6 n
- }
- 5 B; Z e- _% k
- } 8 t5 R' u: V% X& v! t
- $ a# C8 W) w0 s% s, b) ~
-
- . K8 x$ u* [( b# o
- l- c5 K0 m; g' [2 P/ B2 \: |. [
- (2)读Excel文件1 @& J+ k: e0 d! t
- 7 r% s2 G; z9 S! p
- 0 ?7 T( a8 Y\\" C
- package readxls;
- / H% J) R# p. t- Y- J ]8 S3 W2 r, A
- # Y* p/ {1 ]$ q( w4 s4 U; Y' `, R
- //读取Excel的类
- & ~9 q3 H a( E `2 t+ ~
- import java.io.File; ! T; V0 l4 p3 ~9 b& i; t- J
-
- * F- E+ p7 K! O6 R
- import jxl.Cell; + v2 z; O9 F% B0 ]) z( Q\\" [
- import jxl.Sheet; 0 w( x8 J6 C) X, w1 k# x
- import jxl.Workbook; # l, Z$ c% A6 c' {% o
- ! Y, o) f# Y% m4 |4 b: ]& R
- public class ReadXLS {
- 8 ]8 p1 S9 V! O; a4 Y7 e' |# u3 z
- public static void main(String args[]) {
- 2 h( b\\" `\\" _4 X. d% r
- try { & f0 n b, Q) E* Y2 H1 V\\" a
- Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
- 5 v+ _% ~; m( [7 m+ e% e% c1 k
- // 获得第一个工作表对象 ; g\\" } F4 |+ K& n\\" ]
- Sheet sheet = book.getSheet( 0 );
- 1 t/ j. m' r4 R4 ^8 n& Y& P* _5 r
- // 得到第一列第一行的单元格 3 Q7 e4 x2 x& }+ a
- Cell cell1 = sheet.getCell( 0 , 0 ); 1 A0 H) P2 }5 O6 F. m) |
- String result = cell1.getContents(); + U, j& _7 x4 A- u/ |# l+ M3 p
- System.out.println(result);
- - {1 E6 [- s8 G0 f* u! H
- book.close();
- ! J& L\\" `) h2 u# F8 l i
- } catch (Exception e) { ( k. C1 f\\" J, [' M w% s5 i
- //System.out.println(e); 7 `% E4 Y: C% l9 d# c% p9 V5 |' D
- e.printStackTrace();8 d7 _; s& F+ Z# ~% ~3 \# s
- } ! v/ u6 P9 {$ q: p T( l9 u1 u
- }
- 1 z5 t: x' @& Q* H
- }( n5 N* u; l( Q2 `. ~
- ; T8 C. l+ @5 @
- ) K) l8 s3 L7 x
- \\" p* K5 }) P: d2 x3 G
- 3 @8 g9 |, R4 f. G; z4 ?8 O
- (3)合并单元格、格式化单元格等4 R- G) H7 }! E' _
- ' j/ ~\\" p# k) D8 C3 E2 Z
- & \4 ]& ]+ U: X\\" e\\" f
- //合并单元格并在单元格中输入内容. T h( F0 _ T- y, s, }
- Y) R1 [! H0 K% m3 b' O1 K
- package additionalproperty;
- 3 x, \4 g9 H1 G+ _( y
- 0 x) s; _; }& l7 v2 Z$ N
- import java.io.*;\\" w. `7 j2 m3 r, ~+ x: F4 U8 a- h
- import jxl.write.*;4 }! f$ S8 t: `\\" g, X
- import jxl.*;0 E\\" ~3 A\\" z\\" J, X; o5 O\\" r
- 0 g8 [5 Y% P% k, {
- public class MergeCells {
- : _; Q0 a r* k. b3 D+ U8 @
- public static void main(String [] args){
- & n9 ^( Z9 q$ K( j( v
- try{- n1 F: b2 V: h; O. Q6 G
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 w+ x- S6 o9 |- o; ^9 o
- WritableSheet sheet = book.createSheet("第一页", 0);
- - G$ l9 [, @' }! r. b1 Y. t
- sheet.mergeCells(3, 3, 6, 6); //合并单元格+ D, S/ @: k, s6 H0 g
- ' C+ W, s5 z' J- `8 ]# Q
- //设置填充内容的格式\\" n# D# n5 L7 K! J/ E: z5 E
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
- : V9 J. R+ p3 L7 j
- WritableCellFormat format = new WritableCellFormat(font);
- . ]- M3 g+ h+ P( m; N& a# v) @8 l; v
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
- 3 v* {! ~! u8 J0 p
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
- ; w2 M\\" m8 _! Y) R: G( z6 K/ ~: Z# T' e
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式, ]/ n& v3 s\\" a k/ o
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
- - i! Z4 C. X! a8 J
- , a5 Y1 i% m) z2 o1 c% }! r
- Label label = new Label(3, 3, "合并", format); //添加内容
- 6 C6 |+ {+ _4 C! q
- sheet.addCell(label);
- , W$ z5 [0 h) h: ]$ p: h3 f
- book.write();
- ! U h/ p/ [3 I! h
- book.close();$ G+ X\\" a0 h& A; G$ R, n
- }//end try
- 8 K0 _/ x# b5 L# {7 @# ]8 I+ P
- catch (Exception e){) E+ v5 A0 B( d! b7 `1 B. x8 Z& t
- e.printStackTrace();
- \\" h8 \, b' q+ ?% Q9 _
- }
- % y' Q\\" U9 ~) e Q# a& Y
- }
- ' j& M' Z+ \1 O\\" ~
- }
- # Z8 H$ u7 d# S$ t( T
- 1 P7 y/ T p9 K
- 1 z: D# _7 u* \
- 6 X& J! C\\" j! b( I
- (4)添加图片/ [# a' h' h, v9 T
- 1 |\\" x8 f3 C$ X7 l6 v\\" ^ x6 i
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。. v1 |4 Q\\" A# J/ r. S- h
- / j0 r; N\\" x7 a
- 1 y$ C\\" T\\" b! J9 U! R5 p( `
- //在工作表中添加图片/ ]( w\\" e) z! P; y9 Z
- - v$ {, B0 D% W: r0 V% K
- package handleimage;
- ; l; `1 l( G. j, A1 E
- ' ?( I+ X d% m/ ?
- import java.io.*;( \/ H0 P$ J8 ~. G8 k
- import jxl.*;, v1 E\\" T. f# s' F7 s& d
- import jxl.write.*;8 s: _- v; C0 i; P z
- & e( X# X; f) l
- public class CreateImage {: l% E# m! z; J6 @& A* K
- public static void main(String [] args){
- ( e4 Z4 u/ S1 W. I9 k\\" Q
- try{
- % U9 ?; B5 ^) r) v
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
- ' Y# n$ [. r: z8 p# H$ ?
- WritableSheet sheet = book.createSheet("第一页", 0);# q& y2 T# D6 E) X' J, t
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式
- 5 a$ X9 Y V' i+ U$ @' J
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
- + j# X9 f$ x! q* V9 j
- sheet.addImage(image); //添加图片6 W9 n$ T. W& p6 Q
- \\" r, x. T, t' L' F- M5 [- p) {
- book.write();8 Z' ]0 {/ F, C7 m( B1 A
- book.close(); d* j/ P, g, l- \0 D
- }//end try2 D\\" P\\" G' T/ I) R: d
- catch (Exception e){ e.printStackTrace(); }+ V9 Y3 j0 v$ g4 A: ^6 n& Y
- }- {\\" w& ]; H' P. a N& z/ y, p$ K
- }2 s1 B: L5 L* d8 t7 ^# R1 i
|
zan
|