QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2468|回复: 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. ) M. z* L' N+ i/ y! U

    3. ; d/ X, N7 O5 i& e0 B
    4.         1、环境配置9 h1 G- A( I' h( m\\" o

    5. - S, J  t( B6 `+ L3 O# a
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html1 m6 N4 H- U( B& m5 a
    7. 1 \- ]; g# p5 h' D9 _# @
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. . r5 l0 @7 n6 H2 b) n
    10. 0 t' A, d1 D6 W. }5 N* }
    11.        (1)jxl.jar  —— JExcelAPI 函数库;$ q7 N/ \, p! M% N( J

    12. 7 ~: n6 I8 R7 o# p
    13.        (2)docs  ——  帮助文档;
    14. \\" d- G+ Z1 m; A* Q* H8 c
    15. # n: `' `; K) p& J
    16.        (3)src     ——  源码文件夹;2 @  ?* t9 q4 V/ N; v+ S. l4 V4 e; H

    17. . E# w9 J) z6 @1 Y, ]$ v7 d2 a6 p, J
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    19. ; v! h, G; K$ [9 a8 Z1 B. E\\" j
    20. 9 H. q+ T& U7 o9 Y& k+ C1 |$ U
    21.         2、Excel基础操作实例
    22. ; H% [7 _# Y7 e, V, g3 q4 i

    23. 3 g2 P5 w$ r1 E
    24.         (1)  创建Excel文件   
    25. & k' M* L. d8 u& u

    26. 4 m$ b5 C' E8 p- i  ?
    27.   /**读取Excel文件的内容   3 P  r$ i6 r3 G4 q; h3 U$ X# W
    28. * @param file  待读取的文件   * v) j0 S* o1 y
    29. * @return   // 生成Excel的类    */
    30. ( K4 p4 `; z) s+ j% S3 w\\" O+ ?
    31. package createxls;
    32. , ~. I2 w- }/ P4 }. [3 o

    33. 5 O$ V$ b\\" }7 Z+ d  Y1 D
    34. import  java.io.File;   
    35. ! P) ?/ R' X9 R8 Q' x4 R
    36.   
    37. ' q* ?2 e/ R( P& \$ s
    38. import  jxl.Workbook;   - K% V- P$ T* l9 |* a7 ~5 W
    39. import  jxl.write.Label;   
    40.   Z* f7 n0 k, d- t/ R$ Q
    41. import  jxl.write.WritableSheet;   ! e( @1 [: v# t0 _: A5 F
    42. import  jxl.write.WritableWorkbook;   
    43. + m  C8 Q8 p* \; x, D' T/ E5 \$ k
    44.   
    45. 4 W0 e% W5 E5 N1 o- W
    46. public   class  CreateXLS {   ( y# i/ {' O( C* l2 q& F: w8 [/ R# O
    47.     public   static   void  main(String args[])   {   0 p4 a6 E5 m. z# Y
    48.         try    {   , Z( F, U1 s$ k' k0 r
    49.             //  打开文件   
    50. 4 n6 ~4 Z. Y  c# k6 h9 U8 D3 R! j- I
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. ' ~- a5 q' Q4 S% W' b
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    54. + t$ m( b& T* e7 t& U
    55.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   ! ^$ B# ]* E  U% v$ A. }
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   6 H  u8 w0 }4 U+ O8 H
    57.             //  以及单元格内容为test    7 z1 {; ~0 \  s# |) _$ q! f* Q
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    59. * D4 G4 o$ _  x: r* C- ?
    60.   5 w7 Q& j+ _2 x: A: q/ V6 M3 F8 j
    61.             //  将定义好的单元格添加到工作表中    & F8 g- m* X# d1 v
    62.             sheet.addCell(label);   + k\\" ^( \# J3 [* ]/ e/ h0 e/ S
    63.     }* x4 z& K, u$ e$ |5 t8 W
    64.             //  写入数据并关闭文件   
    65. 9 D: j8 n8 w) l- Q! b' S
    66.             book.write();   
    67. \\" L! n4 M* a0 K\\" z1 e
    68.            book.close();   7 ~, R. i0 ~: c+ \3 B% F) q- O
    69.   1 p9 D6 q) I% a  E
    70.        }   catch  (Exception e)   {   
    71. * Q, j) K3 b' F2 V- Z
    72.            System.out.println(e);   + U3 O& t' x; O& G  W2 e, C
    73.        }    ) R1 t\\" H& o  @0 `) {9 T2 H; i
    74.    }   
    75. 2 N\\" N# c! h: r# l
    76. }   ' ^  z\\" D2 Y* y4 Y# ]' ~
    77. * r0 }9 R2 k% z7 B
    78. ! m$ c4 h' g& [& Q\\" L' E\\" z
    79. / U% f* `0 `# q& ?
    80. (2)读Excel文件) y5 w8 x4 C4 {- W. x

    81. 5 l, _/ W3 @4 Y$ k& q$ h& c

    82. 0 U- F9 E2 U# t; U) K' `# o
    83. package readxls;0 T6 J. y0 [! e6 Z( E

    84. ( B* @5 Y4 @$ S9 W
    85. //读取Excel的类    0 G: e2 `% ~/ ]3 p, o8 g
    86. import  java.io.File;   1 l6 T' f* q\\" o$ ?
    87.   
    88. ! U# `& A9 P- y; f; M3 p
    89. import  jxl.Cell;   0 {7 T7 G7 ?0 @: {$ R
    90. import  jxl.Sheet;   ! c' v  J7 ?: x2 B
    91. import  jxl.Workbook;   4 r# ~& f* _- c6 x. r% C
    92.   
    93. * w7 j: ]7 e8 X+ M3 E2 `2 F$ L% Z
    94. public   class  ReadXLS   {   ! X. f9 P- t3 V3 z
    95.     public   static   void  main(String args[])   {   
    96. + u! q: x; ?+ @6 ^\\" Q. L* Z
    97.         try    {   8 D; g% b' e% j% f+ ]! @& A0 M# {
    98.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    99. ( D  C; I! p; \
    100.             //  获得第一个工作表对象    * E+ b$ l' N4 y( o\\" D& U
    101.             Sheet sheet  =  book.getSheet( 0 );   
    102. ; [% O8 T9 A  L/ _( m; M. ]! y
    103.             //  得到第一列第一行的单元格    6 E, i% B' m* ?; I6 l( N
    104.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    105. / {5 ^1 T8 p5 f% r8 `
    106.            String result  =  cell1.getContents();   , c9 c$ ?, Z- r% X% `
    107.            System.out.println(result);   
    108. 9 h/ P- f6 ~) U\\" _' b
    109.            book.close();   4 R* X* M7 ^* G0 g1 ]
    110.        }   catch  (Exception e)   {   
    111. - j* \; u# E\\" Q; k$ [' p, l
    112.            //System.out.println(e);   6 [; ^: d4 H% d
    113.         e.printStackTrace();
    114. 3 l# ~& Y; N5 ?' x3 C
    115.        }   
    116. , g/ `0 D& M( z
    117.     }    9 {$ D% X& u2 q3 h- \) ~
    118. }
    119. 5 a# J' p4 }/ ~\\" ]$ G8 i

    120. 3 F5 c' N+ C$ w* x% k# A
    121. + Q% T/ C; \! J0 m& s* G* c

    122. ' `/ F: P; \7 p& q
    123. / s; X* |  [/ i2 D' v; c! t
    124. (3)合并单元格、格式化单元格等
    125. & H' u# d; g  n' p3 @& `9 ?
    126. & c4 {% k- u0 V  j; A
    127. ( ?0 ^7 m5 V8 P4 k
    128. //合并单元格并在单元格中输入内容
    129. 5 t) V8 f+ U, c
    130. ( h0 k# E5 Q) R4 i  a
    131. package additionalproperty;
    132. & w- W7 n: t1 A# ^( Y$ ~+ Q$ X
    133. ( i+ L9 |2 ^' P2 e. |8 S+ Y2 k
    134. import java.io.*;
    135. : _. v/ C8 w8 k
    136. import jxl.write.*;4 [  w% U! t  h2 L8 _, \# M
    137. import jxl.*;
    138. ; l: W\\" b  K4 N+ F3 I1 m3 r! T
    139. # J$ Q, ^' B# U
    140. public class MergeCells {
    141. 6 _) {/ B: Z# Y1 _- s2 ?! d4 h9 E
    142. public static void main(String [] args){
    143. / k, O1 F9 V\\" w& A, x! q+ p
    144.   try{7 H9 @7 {* I$ C( ~\\" S
    145.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));5 l% m. @9 L3 I* v+ E
    146.         WritableSheet sheet = book.createSheet("第一页", 0);
    147.   Y3 T$ U' M1 b/ j8 N9 \) |2 ^
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    149. ) h- O, v3 @- m5 c2 Q
    150.    
    151. , E  N1 Q% V5 T) n9 z! V+ a- d2 O
    152.         //设置填充内容的格式, L( H  G  j! H7 P8 y0 |
    153.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);8 a. i3 {/ ~4 c, D  t. s. l( D2 a
    154.         WritableCellFormat format = new WritableCellFormat(font);1 k\\" I7 p' X$ l* u' |* g
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中: l1 }- P) j- K0 T; q
    156.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中3 Y' y# w% |# z. ]3 r2 J! j
    157.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式$ I6 g9 k9 a: d9 `% `  J
    158.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    159. * b; S; w4 b\\" B6 l' q
    160.    % i. |7 E\\" T* A' ?3 C
    161.         Label label = new Label(3, 3, "合并", format); //添加内容
    162. # C( H# E9 ~- b2 n
    163.         sheet.addCell(label);
    164. ' o. ~. S/ J5 M7 _( G0 l8 T
    165.         book.write();
    166. ; l% H: i+ U4 d
    167.         book.close();
    168. \\" S% M7 G2 W( {2 R0 x
    169.   }//end try
    170. 6 t2 P\\" c% m' O3 y0 d) S
    171.       catch (Exception e){9 I9 h1 F3 C; I
    172.            e.printStackTrace();
    173. ) Q3 Y! l# J2 Y1 f8 k
    174.        }
    175. 9 S6 k$ k/ O6 A7 k6 _! ]
    176.    }% B% C0 f( s9 K+ f2 r8 ^1 q1 @
    177. }. ]2 u1 b& _2 j( f% S8 i1 o. V. j

    178. % E# ]+ L$ @\\" X5 T: Q

    179. ) `  m$ s- F1 X7 j. C

    180. ; w9 p3 d- ~+ J+ X0 P' t
    181. (4)添加图片
    182. - d+ T8 |9 y# F  O- T1 L
    183. , o! _, }4 ]4 d
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. 5 ]8 q* P4 P! ?0 L8 q1 A
    186. 3 l; `( b+ `' g) \( v
    187. 8 j\\" {3 N5 ]0 {/ }& Z! Z
    188. //在工作表中添加图片: d/ r$ ?; g  \. S% p+ f\\" b* C
    189. 5 {3 p7 I+ H# K
    190. package handleimage;
    191. 3 j* R  v5 Q* C+ x9 }9 ~7 n

    192. 0 B, M  H- p$ y6 W
    193. import java.io.*;
    194. 3 c5 ~; v  ?! [1 Y& @
    195. import jxl.*;7 b) G& l7 G7 |/ Q! S- X
    196. import jxl.write.*;; o# _1 E& D) }+ p& `: Q8 r/ V
    197. 3 x3 a\\" v. ^0 v/ b
    198. public class CreateImage {
    199. 3 v# B3 J8 {\\" A8 Z. ?
    200. public static void main(String [] args){  R; U- `) g9 g9 T' U0 U4 m. s
    201.   try{
    202. - d2 `$ I+ b\\" Y0 o0 [' @
    203.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    204. % D1 o6 s; ~5 s# p: ^, s
    205.        WritableSheet sheet = book.createSheet("第一页", 0);\\" i\\" J6 j# h& t; Y: Y0 T
    206.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式; _/ t( @1 |! S% c+ {+ r
    207.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    208. 3 q5 g/ X2 C2 t% A( M2 J9 P
    209.        sheet.addImage(image);  //添加图片
    210. 4 e. R3 R: E- I
    211.    
    212. , b8 Y% R# \9 c
    213.        book.write();- b+ H) _9 o& C
    214.        book.close();
    215. ' m. v: g1 U) ~- w* q+ z! x
    216.       }//end try; T! c\\" C* X; m
    217.       catch (Exception e){ e.printStackTrace(); }
    218. / {2 T5 l; w# T( l- t
    219.    }- u0 M4 |- L- y/ v- d
    220. }; E\\" Y% ?& ~! K9 p9 A1 x5 k3 y
    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-24 19:35 , Processed in 0.441936 second(s), 60 queries .

    回顶部