- 在线时间
- 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的使用方法。\\" ~9 P0 k6 X3 r; o' T, h) j
- 7 s. q: `# H* a
- 1、环境配置
- 5 w, R/ s J8 Y7 U9 S: P2 p
- + A/ k. u) Q A% o
- 如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html$ o) I' y1 l1 | a) c
- 7 a. _! t8 @( Q
- 下载完成的包解压之后,可以得到如下几个重要的文件:# i3 D7 h6 J1 x8 S! H
- 2 l: u$ `\\" D; r\\" |/ Y
- (1)jxl.jar —— JExcelAPI 函数库;& \\\" ?+ E( Q& k. a1 K* G4 j
- 7 v$ Y& {! T\\" E$ y
- (2)docs —— 帮助文档;
- \\" n, u* O1 m I z: H/ v
- 6 \! u* [. F! ?* b# ]! l# p
- (3)src —— 源码文件夹;
- 1 `% O1 `7 z1 b5 ^9 f! W: h
- 5 C& w5 s8 J# D3 I% j6 _
- 将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。, w( v3 e; g7 g
- / t# k& `$ k4 Y6 y8 h0 u
- 2、Excel基础操作实例
- ! T! u& h# v+ c& \ e2 E
- ' v$ O4 H7 D7 Y
- (1) 创建Excel文件 , _. \8 F5 o8 C4 M3 w7 X }
- / g$ A9 S ]5 T) @
- /**读取Excel文件的内容
- / x( v* S3 F\\" W! ^
- * @param file 待读取的文件 / L( _1 k- W) M3 m2 x* U
- * @return // 生成Excel的类 */
- 6 n7 |4 P/ b1 l3 e
- package createxls;- ?3 F. |3 `/ K: X4 v- M
- ( A6 Q3 ]2 j7 A0 w/ z8 ]* d
- import java.io.File; {! H. D+ @: k& J
-
- 3 ]; M2 @& i1 s2 N
- import jxl.Workbook;
- & ~' Z* n* p/ O) L) A
- import jxl.write.Label;
- % N& f$ }5 l\\" \' D
- import jxl.write.WritableSheet;
- 6 O: ~3 L6 E( N
- import jxl.write.WritableWorkbook; + s$ K3 h7 E! e% l M
-
- ; L* n0 k. R5 J3 I( @1 A
- public class CreateXLS {
- z$ S\\" C' y- _% r3 `\\" G
- public static void main(String args[]) {
- # {5 M, l( P# L: F4 B7 z
- try { # n\\" G3 ]5 S( @1 Z
- // 打开文件
- \\" [1 f0 b8 f: y9 y( N1 }
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
- # B/ g# Z* B; u, E% y2 ?7 V- I
- // 生成名为“第一页”的工作表,参数0表示这是第一页 9 w% ?% S7 \9 K/ ~# b' B |
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- {8 p) V\\" i. t b
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) ( t! }9 R: [; W
- // 以及单元格内容为test
- + P% c' z2 k P5 U% l$ d
- Label label = new Label( 0 , 0 , " test " ); 7 D9 [( X. z0 U1 o% N9 U8 ?' t
-
- 1 C! c- L' B1 s e, g( j
- // 将定义好的单元格添加到工作表中
- 0 E6 S) M( i h\\" d- y9 v1 U\\" y
- sheet.addCell(label);
- 1 @- n+ C0 F& Q/ d! y
- & d\\" s8 Z! z7 K R4 y4 e9 R
- // 写入数据并关闭文件 & [0 B( \\\" `$ n# z8 {3 `
- book.write();
- 1 x7 `4 P5 G8 I/ N% \
- book.close(); 7 O1 I' f2 L9 X% o\\" J
-
- , B/ O4 y* C, J% ^# ]8 s0 Z& [
- } catch (Exception e) {
- / F/ w( L) H\\" }/ \: ~2 E1 s. G
- System.out.println(e);
- $ p/ S/ p* \/ O4 t
- } 3 U& w* O4 u0 @. d) i5 O
- }
- 4 W\\" f. m& A4 _
- }
- l7 n6 K* }* [' e
- 4 ?; J9 ]; ~) }! B3 N- _
- 4 Q' {4 Q0 b; S4 q0 R- ~7 G
- 4 K0 |: p\\" Y6 u+ D
- (2)读Excel文件5 C\\" \. U/ Z. y- N3 O
- 2 Z( E8 t0 t1 d3 f5 \
- / q4 W9 Q O r/ R$ y/ L' Z- p( S
- package readxls;
- . V5 h: i& B; I% ], A% P0 y
- - I. L7 B' v4 } r
- //读取Excel的类 0 J( `3 Z: L4 ]! b1 a
- import java.io.File;
- & ^3 ^* x) s6 _( V8 K. Y
- 0 Y9 Y1 T: [$ e a+ i& {
- import jxl.Cell; 7 l5 M/ i6 I0 `) i
- import jxl.Sheet;
- 1 ?) M& I- }: Z0 |
- import jxl.Workbook;
- $ ?$ }( n+ ^1 Y: }
-
- \\" j) I- s& }- t& C! e
- public class ReadXLS { ! k1 ]# ~% G4 O7 w- w4 Q# O5 a
- public static void main(String args[]) {
- - t6 ?5 c/ Q$ d, s+ I: ]
- try { ; q# ]5 w4 D% b0 z0 w: d
- Workbook book = Workbook.getWorkbook( new File( " test.xls " )); 0 x+ ~% ?, e4 x7 H: k( i
- // 获得第一个工作表对象
- ; @5 n* G% \\\" }; S7 ^
- Sheet sheet = book.getSheet( 0 ); 2 G9 x2 w( ?4 }& ?1 S2 h! W
- // 得到第一列第一行的单元格 ! H5 l+ {8 ~3 y) t' i5 z. \
- Cell cell1 = sheet.getCell( 0 , 0 );
- + F\\" l5 A! s2 K4 a\\" D1 O
- String result = cell1.getContents();
- + Q% G. y7 L7 v: y. F
- System.out.println(result);
- 0 S7 ]9 ]9 D k6 Y5 t9 H
- book.close(); ; g+ z, x6 e4 [, V {/ [7 c
- } catch (Exception e) { * ]+ E5 J; N/ L. u& K- n5 i
- //System.out.println(e);
- $ p8 h; l( E& X( l( F
- e.printStackTrace();/ M6 Q a' ^* p# `- c2 @& F/ b5 Y
- } 1 ?' F) p3 F0 D7 N# Q6 o5 ?* [2 M
- } 8 K7 Q1 C( m/ Q( C& h
- }
- ! A& m$ o$ R& x
- 1 R% U1 q\\" Y) M! R
- 7 i) J U% V+ f, x
-
- 3 C! \* Q6 {5 @( @\\" q! z
- \\" j( E, y. T( i R
- (3)合并单元格、格式化单元格等
- 7 G q: a, |; i3 x/ C5 W
- % d# k! U6 [9 D9 e. T
- , \ u$ Y; F7 h- Q/ a4 g |2 x( f
- //合并单元格并在单元格中输入内容( j' o' Q2 u( y+ [+ m
- 7 s9 e, w; x; @5 {+ p, J/ u! h& X
- package additionalproperty;
- 2 C2 U% |6 m9 I
- 9 P, p$ t! v% y+ Q( y) J/ U
- import java.io.*;+ t, t8 e3 _* t: t: T1 U
- import jxl.write.*;
- ; \* Z d7 ?! k9 ~: u. o
- import jxl.*;
- ; h# ]4 H1 m, ^- d8 D% U* R) L' o
- ) G\\" e4 H$ z/ ?9 N* ~/ s. H8 d2 ?
- public class MergeCells {
- 7 M4 l) O+ @ h9 c, c: R1 s
- public static void main(String [] args){( S7 e1 ^; X' p
- try{
- & m& B& Z\\" w, Z! U
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));5 c# r/ T: ?% U V$ p6 g% @
- WritableSheet sheet = book.createSheet("第一页", 0);9 D8 V1 o0 H) u\\" Y& M& Y! p; X
- sheet.mergeCells(3, 3, 6, 6); //合并单元格7 o4 X# n- A. Q: W
- 7 c' ]. J\\" V' K
- //设置填充内容的格式: N% A2 K& |- h2 m2 J. J( a2 X) V& m
- WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
- : q/ s0 l8 P: N% h6 z4 {
- WritableCellFormat format = new WritableCellFormat(font);
- ; r8 T0 l4 n W+ D `
- format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
- 0 g6 l# h( ?* Z3 } X1 o% X( b& ^3 T
- format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中/ b3 M, H* \3 S \; y
- format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
- . Q- R9 n1 v. _
- format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //边框样式
- 4 O D! R7 _; s- B. L# [ S1 J$ f
-
- 2 W E: c; Q& [+ b6 U1 r
- Label label = new Label(3, 3, "合并", format); //添加内容
- / q\\" r. d2 F7 W
- sheet.addCell(label);
- 5 m; y1 t7 t C* {
- book.write();
- 4 g1 T% a8 A/ {# V
- book.close();
- - ~\\" R' V\\" O2 m# G( `- z
- }//end try; z5 W3 v. |, h
- catch (Exception e){- p2 u- K* ?3 O: b
- e.printStackTrace(); N4 A+ g/ h( Y$ }! t. v
- }
- % @. `0 q; p9 k# R
- }! z6 ~ @9 w- L! S
- }
- 0 m E7 \; y9 y9 b; \: j( c% M
- 4 r# Z% D9 T; B6 p( P9 u( I
-
- ! e, r9 W# P* I
- \\" x. l k' C' k: ?0 ~ K
- (4)添加图片4 b& U4 D6 S\\" h. r8 p6 \$ P
- # T+ @, E1 V Y( M
- JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。7 V; x$ [- h9 [' \6 R n0 d
- / i! U1 a& |; u+ k2 G
- . k\\" s5 ]* p$ N2 c- O
- //在工作表中添加图片
- + I2 W# g4 R3 l1 v9 e) x; l
- ; p0 T8 n& Q7 _- C& F5 Y\\" A& k
- package handleimage;+ h& e7 [; d\\" T, w; [
- ) s( f/ H, x4 S0 Z\\" g
- import java.io.*;0 ~5 n$ x2 t* z# @
- import jxl.*;
- - G) M* ]; f1 L- R' M7 M# N- i
- import jxl.write.*; z! n* O/ G- n
- + d1 f; n) t. r& v* n' M
- public class CreateImage {
- % U: {% G8 L1 H& q
- public static void main(String [] args){
- 9 j\\" F9 j& B6 L! ]5 g5 U0 p' v
- try{* \/ m/ o2 J\\" `: d* l% g6 E0 c4 Q
- WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));5 [; U! |0 p3 u6 a
- WritableSheet sheet = book.createSheet("第一页", 0);
- a. X5 o* X, h+ i8 q
- WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定义图片格式; y* F; \0 k' a5 O4 S
- new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));0 ^. B0 T: p$ C1 b6 Q! ^
- sheet.addImage(image); //添加图片
- ( A: m2 Z' P9 R$ v% a( C+ v
-
- 0 _' g2 N/ I1 A' O) q
- book.write();
- ! \8 \* g4 v: |4 n* B+ h4 x/ x
- book.close();7 j; }, u0 Z% w
- }//end try
- # L1 d% ~/ V4 X# U2 C8 l3 U: E2 `9 c
- catch (Exception e){ e.printStackTrace(); }
- # ?& O\\" [. B0 N\\" F1 ~
- }/ c! H4 O% b) c, E$ E
- }
- ; B) u0 }+ ~' q6 M* D7 k
|
zan
|