QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2469|回复: 1
打印 上一主题 下一主题

【转】Java操作Excel方法详解

[复制链接]
字体大小: 正常 放大

937

主题

118

听众

3万

积分

升级  0%

  • TA的每日心情
    开心
    2026-9-17 16:51
  • 签到天数: 265 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    跳转到指定楼层
    1#
    发表于 2013-8-9 11:28 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    1.   JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。
    2. : D; A' @7 g5 W4 N

    3. 2 X. y) t* H; c; S! s, _
    4.         1、环境配置
    5. : B; L; b1 J5 J& w) k  l7 T, G
    6. 4 {$ n& H) o7 x3 L; ^0 i
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    8. ) t! f0 y* S6 X$ f5 E3 X
    9. , [7 f; A$ s+ u$ L3 H0 z4 z3 r
    10.         下载完成的包解压之后,可以得到如下几个重要的文件:
    11. ! f: H8 `4 S' @! [# Q' e

    12. 7 Q& _\\" \$ n, m0 t
    13.        (1)jxl.jar  —— JExcelAPI 函数库;
    14. 1 H- Q# d6 Y+ g+ @( K! M

    15. 6 W: |( S/ P' s9 I
    16.        (2)docs  ——  帮助文档;/ o8 U8 h# R1 k6 }, k5 m

    17. : T* O/ W+ d7 E7 M9 t
    18.        (3)src     ——  源码文件夹;
    19. ' j2 X3 J# G# r2 @& ?' m: q7 T

    20. 8 A) k7 l9 L/ J  B: _0 k5 Y% m
    21.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    22. 0 }3 M' T+ ]+ w  N9 Q4 T

    23. - q* @0 i( }8 v) y; j\\" p! F8 V
    24.         2、Excel基础操作实例
    25. : s, h& _( x+ F6 f# S0 {

    26. 4 Q. o% A/ k8 r9 q7 W
    27.         (1)  创建Excel文件   
    28. ( q( `2 J4 c2 L0 U# b/ U

    29. , v# T  D\\" g. Q3 q* y6 _
    30.   /**读取Excel文件的内容     \$ _/ c1 o' N8 R
    31. * @param file  待读取的文件   
    32. 3 n0 ~6 B5 i# v8 l2 a9 m
    33. * @return   // 生成Excel的类    */
    34. - U: p5 L; }3 B! H
    35. package createxls;; i! x. Z3 q1 E* q

    36. 9 @1 z& L/ Q/ M# F6 I0 l, R
    37. import  java.io.File;   9 \\\" K$ x& O  g5 o- O
    38.   
    39. : a( V7 t  d; r. t( ^1 W
    40. import  jxl.Workbook;     F# E! b; y+ m. z% ^% e' D( c: d2 `6 K$ T
    41. import  jxl.write.Label;   . S$ N( t0 x2 _- i
    42. import  jxl.write.WritableSheet;   ) N+ e5 D( ]: Z3 {6 o) y5 @
    43. import  jxl.write.WritableWorkbook;   $ J( h3 F! ]( o: U  X
    44.   1 M6 k$ _\\" t4 h6 a3 r
    45. public   class  CreateXLS {   
    46. 1 @; s4 c: h( R$ k
    47.     public   static   void  main(String args[])   {   
    48. - Q1 w/ m+ L  n6 G
    49.         try    {   ' n* c1 F+ R0 I+ G, W
    50.             //  打开文件    # w8 I! ?4 Z+ }0 j8 G& _
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. ) h) H  \8 @2 }/ h! P
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    54. + W+ C+ F* f( M' R8 ~  W: A
    55.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   . i2 W5 g1 h7 {* F/ ~9 S/ T
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   / ?/ e5 \3 I5 n' `
    57.             //  以及单元格内容为test    $ K0 I6 s$ z& J4 t
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   : S9 v4 u) Y0 b& P0 y6 N) n
    59.   5 F- t* g! |( o/ j7 Z
    60.             //  将定义好的单元格添加到工作表中   
    61. ' @% R0 [5 m) o0 ?( M
    62.             sheet.addCell(label);   \\" E# G6 j& y; s% o
    63.   2 M3 `1 P$ k; e9 V5 z* [: O& q
    64.             //  写入数据并关闭文件   
    65. 9 R1 n' R3 ~4 N( e* g0 T
    66.             book.write();   
    67. 4 O: l( \, P( I# D, a: c; x5 L( L' H
    68.            book.close();   
    69. & H; m3 a6 B' U  J; k
    70.   ) j) _: G' F8 [4 I: A) C
    71.        }   catch  (Exception e)   {   & J: t: K, Z+ t$ l% x
    72.            System.out.println(e);   $ ~1 y: X6 Q4 V; v
    73.        }   
    74. ' @( t. A3 g: W% L$ {. X
    75.    }   
    76. 7 o; i1 X3 T9 @. C  z' d\\" f' p
    77. }   9 R3 f3 \1 E5 F, Y; ^: F7 q

    78. ' l1 k2 b' A7 v. _; \; d- W
    79. 7 R# y, F7 H% C- ~
    80. - e' M1 m: s. X6 R6 l, S, A
    81. (2)读Excel文件+ Z: G4 ~9 z: }2 k5 {
    82. * T1 P, ]2 }' V- M. `) t% ~7 ^

    83. ' B+ k7 |: F- m' Z1 U; t) e7 b
    84. package readxls;
    85. 3 w/ P9 N2 M% T$ q# u% K( F/ B\\" e! k  K

    86. ! e& I0 J1 s, d+ c* m
    87. //读取Excel的类    2 ~2 \; d7 ^5 ~* L
    88. import  java.io.File;     |; ]4 N3 E6 ]7 N- I& F# j& _
    89.   
    90. 9 X; |% J/ e& \
    91. import  jxl.Cell;   4 C; K! a' t4 j6 g3 Y
    92. import  jxl.Sheet;   , s% @7 D5 o5 R' ^; u
    93. import  jxl.Workbook;   
    94. % {: F3 S( u* j\\" e, `6 Y\\" [* b+ ?
    95.   , q# T\\" v3 J* O! N
    96. public   class  ReadXLS   {   9 v. ~3 J\\" L: f/ ~1 u9 L
    97.     public   static   void  main(String args[])   {   
    98. , t* r: M0 O, y0 B; T8 U7 ^3 k% p
    99.         try    {   
    100. * z9 X\\" I3 c5 m# E( z4 X- ]- O( ]( u
    101.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    102. ' b* A' P7 j9 J
    103.             //  获得第一个工作表对象   
    104. ; e6 N) B# V! o$ Q\\" t
    105.             Sheet sheet  =  book.getSheet( 0 );   ' K% P! n0 l6 a, I
    106.             //  得到第一列第一行的单元格    \\" P) R/ u& ^4 l2 J& T! a
    107.             Cell cell1  =  sheet.getCell( 0 ,  0 );   - ^; l0 Q2 j; C* N* i9 E9 i1 G
    108.            String result  =  cell1.getContents();   
    109. 4 Y, b1 _/ P1 O8 x7 n/ i- K* c
    110.            System.out.println(result);   * ~, p! m* o# t9 a
    111.            book.close();   8 i% L' p4 I5 @  a9 v2 l( B& H
    112.        }   catch  (Exception e)   {   
    113. \\" R, i7 y3 u4 c8 u4 ?6 d0 z
    114.            //System.out.println(e);   
    115. 9 K1 J2 _1 c4 N# c0 k7 ?
    116.         e.printStackTrace();7 h  K9 s5 o$ n1 g\\" o
    117.        }   
    118. 7 b; c; T# w0 B! A+ T7 V/ P$ Q
    119.     }   
    120. 0 M3 `3 x' ^1 o
    121. }# x& Q$ F8 o3 O' N

    122. ) I9 G; u1 S1 Z( {6 n
    123. 9 q3 S/ |1 X: T2 H% S8 m

    124. ' F4 _% o3 p. B- K

    125. * s' x$ }. T% C! G. y. {# ^2 g
    126. (3)合并单元格、格式化单元格等; B0 V3 v% j+ t& h% a2 A5 x
    127. ( C' Z  c$ ?\\" k! r5 K. y6 z\\" D6 A
    128. ' f5 W8 {0 t; j& W- A
    129. //合并单元格并在单元格中输入内容
    130. / K4 |2 J1 H+ E5 \5 k/ Q2 `+ Z
    131. 2 f( J% Y/ |0 p1 T; y3 t
    132. package additionalproperty;2 b7 e! [& a8 W  M+ y8 p* K

    133. 5 ~* q6 ^6 P; s+ L
    134. import java.io.*;6 L* r0 \2 o\\" S$ {+ L  @7 p% Q% `
    135. import jxl.write.*;2 m* Z0 M4 z( J8 I& j9 g* k% o
    136. import jxl.*;
    137. 4 I8 H8 ~- m( `' i
    138. 9 r7 C  D1 z( I8 G3 O
    139. public class MergeCells {\\" I4 b+ |7 L- x\\" p+ j5 Y; }; k
    140. public static void main(String [] args){
    141. 7 G0 B- j) p) K
    142.   try{' Z) G; a0 S4 ]
    143.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));* @( a# b0 i\\" A3 i1 _
    144.         WritableSheet sheet = book.createSheet("第一页", 0);
    145. 9 [0 Z3 c$ ^: Q/ }
    146.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    147. % c0 s' q' `( {' r( K$ |
    148.    
    149. ; h: V* |7 ]: D3 m\\" ^/ t
    150.         //设置填充内容的格式
    151. : {; B. E' R2 L: p4 _' ?# w( T
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    153.   k5 P. ^1 G! R4 C4 m3 C
    154.         WritableCellFormat format = new WritableCellFormat(font);* I) h9 h# ~4 [
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    156. ; Z8 p8 b) r6 p% _
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    158. & w1 t& T! [/ h; H( L
    159.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式7 b, j5 }6 X% Y- b! ~# S
    160.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式( S8 `! K4 V, m! g1 o( W
    161.    
    162. % s  V, }\\" V2 L! }# }; ~# O
    163.         Label label = new Label(3, 3, "合并", format); //添加内容
    164. ! ]1 M/ {* l0 b
    165.         sheet.addCell(label);
    166. ; p6 x! c\\" |$ y. K) E1 W
    167.         book.write();
    168. + |4 \& F\\" v, A) T: ]/ ?- m7 Q/ [
    169.         book.close();
    170. ; g- i$ C& l! E
    171.   }//end try
    172. # p) \* V# X3 F& U
    173.       catch (Exception e){
    174. ( q) Q7 ]  y- ?! l+ l! J. W4 O$ }
    175.            e.printStackTrace();+ l) Z0 F) c' n
    176.        }
    177. - \: F( z8 E: n% w+ J
    178.    }
    179. - _' D- J3 ~/ i, k3 Y9 d% E
    180. }9 ?) v6 {0 v  m/ i

    181. ( A1 T: e, {. L

    182. % R9 o% n- P9 T- t, p2 c% P5 Q
    183. ( F/ ^4 ?: o! L
    184. (4)添加图片$ U5 |9 F  D1 r5 n- C1 _+ P

    185. : p3 r. y) U& }
    186.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    187. 5 U1 O) C4 S4 J7 u/ V
    188. # T0 [% D. q5 p8 ~( f* R
    189. # v9 U& O: U7 |, i. w0 k/ C
    190. //在工作表中添加图片\\" u! f3 R+ t% z* T7 k

    191. % g; p- @8 f4 ?6 {
    192. package handleimage;
    193. 7 G. T, A8 \( x9 z, O
    194. , u1 N4 U! R* J: i
    195. import java.io.*;
    196. # H' w. H2 m, M% W- D% c% E9 |
    197. import jxl.*;9 c8 C; F3 [) @: e
    198. import jxl.write.*;
    199. % s; V# m3 B) ~! C4 H- s7 a0 r

    200. ) J, @$ _2 u/ J; ~
    201. public class CreateImage {9 ^. z4 U* A! n; o( j
    202. public static void main(String [] args){
    203. ! @/ q; }6 }! E& m
    204.   try{9 o9 O- K- [- y
    205.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));& `4 }* s, H2 P# {0 C# V
    206.        WritableSheet sheet = book.createSheet("第一页", 0);
    207. ; X, M8 F( K% r0 w\\" ?
    208.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    209. % D4 t2 Z% W/ N% U7 A0 y! [
    210.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));( p+ m% ~) D' O+ G2 G* ?
    211.        sheet.addImage(image);  //添加图片5 m. c4 X* ]8 K\\" Y
    212.    
    213.   ^% u: a% \; S) p( {. R
    214.        book.write();
    215. 6 J7 L- G* v: J4 d
    216.        book.close();
    217. \\" i& ~7 A/ l! k3 E( A8 M6 E5 P5 T
    218.       }//end try( X* Q& n( E  W7 `& V4 h
    219.       catch (Exception e){ e.printStackTrace(); }
    220. 5 g2 ~2 R; b( l+ j* R
    221.    }6 H9 g) ~  R+ K* Z3 f# H% A
    222. }5 q2 ~1 G0 H# l$ E/ Y, [1 i9 k0 K
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    guoaecg        

    0

    主题

    5

    听众

    252

    积分

    升级  76%

  • TA的每日心情

    2013-11-18 18:53
  • 签到天数: 53 天

    [LV.5]常住居民I

    自我介绍
    想学数学
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-9-25 01:18 , Processed in 3.218168 second(s), 61 queries .

    回顶部