QQ登录

只需要一步,快速开始

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

【转】Java操作Excel方法详解

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

937

主题

117

听众

3万

积分

升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

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

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

    群组2013年数学建模国赛备

    跳转到指定楼层
    1#
    发表于 2013-8-9 11:28 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    1.   JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。+ x2 z. [  ~1 G! |
    2. 8 b4 S\\" w$ t/ u
    3.         1、环境配置\\" ?3 i$ q3 _\\" {4 B
    4. 7 D# L, D9 Y! }) N; H/ H
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html6 s$ A1 @/ a' E$ c6 ^! [

    6. \\" W; l6 r. Y4 k9 @6 Q  W
    7.         下载完成的包解压之后,可以得到如下几个重要的文件:
    8. 2 x: Y+ V, _+ c* S6 Q) E  _% W
    9. 6 b# `( K/ j% f7 h2 t, j- L
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. 9 J4 W' k% S$ `\\" M1 q  }
    12. . L' P# |# H# R2 c9 l- l5 a1 D
    13.        (2)docs  ——  帮助文档;
    14. * V) T1 {6 O1 i# h- g

    15. ; Y+ _0 ?+ D/ Z3 w7 i6 n7 W
    16.        (3)src     ——  源码文件夹;) P; i/ S: A7 X) m- E& j\\" f

    17. ; ]\\" s# _' ]# D1 L
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    19. 0 f0 M* \/ {9 p\\" o% c* Y6 h
    20. 4 ^: _1 Z: O9 \) Z# f; \
    21.         2、Excel基础操作实例
    22. * z8 s/ u6 P1 x- ?

    23. 1 t( D( Q\\" f3 p/ x* I% j
    24.         (1)  创建Excel文件    - |( A- _# W8 b4 k8 B
    25. 1 U\\" }1 ~6 `1 n( P( o1 Z
    26.   /**读取Excel文件的内容   
    27. ) u0 ~8 D1 _1 `3 g& m
    28. * @param file  待读取的文件   
    29. ) _  P& c+ ~+ P9 x! N$ t
    30. * @return   // 生成Excel的类    */& Z, N3 p! c+ D\\" n9 I. I' K  }
    31. package createxls;/ H2 Z  T: \- L7 b1 u

    32.   h8 e) y7 x5 W% T* q( \
    33. import  java.io.File;   
    34. 2 A% R9 u- n4 ?) X\\" i9 ]/ r
    35.   ( W3 D- U6 j4 A' M4 i
    36. import  jxl.Workbook;   ) {) k8 M, C- O7 S
    37. import  jxl.write.Label;   
    38. ' ?1 J, A5 L$ z! t. q2 F
    39. import  jxl.write.WritableSheet;   
    40. ! d7 u) H- J; L5 T
    41. import  jxl.write.WritableWorkbook;   $ w4 n! m) S3 l1 U# L
    42.   
    43. 8 H' Q\\" J$ ], N5 h( ?
    44. public   class  CreateXLS {   
    45. . Y# p% w2 J8 U! \$ l1 y9 F9 v* l( W
    46.     public   static   void  main(String args[])   {   , e% `& i2 c$ b  S- a* ?
    47.         try    {   
    48. ( G/ {+ g) c+ P- `/ t
    49.             //  打开文件   
    50. , A( d% _& Z2 I0 s- b' Y
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. 8 V% `; ^2 @* a! n
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页    ' k\\" Q& L, A* @0 A: e
    54.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    55. 3 D! S3 v: G7 F/ _+ v0 ?  p& v
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    57.   g# c0 F6 Q/ o; ~  c4 e! y$ X
    58.             //  以及单元格内容为test    ; i; ^% H/ h0 ~' _1 C3 n
    59.             Label label  =   new  Label( 0 ,  0 ,  " test " );   1 W: f8 \, M, v7 L6 o; L
    60.   
    61. ' y) h3 J: [4 }* w  ?
    62.             //  将定义好的单元格添加到工作表中    ; P8 d6 N1 O% Z! q8 g
    63.             sheet.addCell(label);   
    64. 4 f2 Z3 G! d5 y+ [  b& Q
    65.   
    66. $ M$ b4 h$ d0 o8 ~( H4 g
    67.             //  写入数据并关闭文件   
    68. - o; s1 Y& F$ |$ N! ?  ^
    69.             book.write();   
    70. 6 @1 b( X2 G0 H7 n& G
    71.            book.close();   9 s, ?8 D& N\\" [' f6 d
    72.   
    73. ) g( ^* B9 B; J! e
    74.        }   catch  (Exception e)   {   \\" T; W6 o* I3 s8 b; a, ~: R
    75.            System.out.println(e);   
    76. \\" k5 Y1 G/ C+ e\\" B0 T$ O; L
    77.        }    6 f: M# C- X' \! o' i% e; R2 Y- s% W
    78.    }   
    79. . D2 w/ h% P/ R3 u* [) H6 g5 F
    80. }   
    81. 2 P$ N0 q\\" J\\" q3 [6 ?: M6 j
    82. ! T  N5 n( _2 c- M  ?% \6 O
    83. 2 d: @  q/ n' g1 B& i
    84. ; |1 h9 c, U4 d4 e3 a
    85. (2)读Excel文件
    86. - B6 E\\" V- i. b
    87. 3 ?; \9 z- G  S! J$ O' P3 ?+ r
    88. ! e  G4 [, e( b; M7 h6 V
    89. package readxls;4 J# j& D$ v- i1 L) ?
    90. . M! ~/ W5 L8 W) e& z  Y9 P
    91. //读取Excel的类   
    92. * B, @* o+ }, o\\" w( r\\" p: v
    93. import  java.io.File;   ' u* {5 `# Q6 y0 d0 j) J$ C
    94.   % ?# p+ P3 b+ `6 i4 l* M/ X' y+ i
    95. import  jxl.Cell;   # E9 d. k! g! i
    96. import  jxl.Sheet;   
    97. 8 a  p' w9 H! L
    98. import  jxl.Workbook;   # C2 D& }! F, a
    99.   / u) C/ `) ], T4 u
    100. public   class  ReadXLS   {   1 _( p1 u' U1 @( k1 L
    101.     public   static   void  main(String args[])   {   # a1 t8 D/ G( d- o. P
    102.         try    {   ) ]' W& z- L1 q* e, o  O
    103.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    104. 1 B  U/ |8 }* O& U+ M
    105.             //  获得第一个工作表对象    - @* o2 ]( o+ i% D1 z) @9 [
    106.             Sheet sheet  =  book.getSheet( 0 );   2 O, r. v8 G4 q! Y& m' p) n0 u
    107.             //  得到第一列第一行的单元格    ! e' D1 [# d+ s) C% h9 H! @
    108.             Cell cell1  =  sheet.getCell( 0 ,  0 );   # X0 a% d8 Z1 I7 a8 q8 C' I( c7 q
    109.            String result  =  cell1.getContents();   
    110. % N% j1 w: u( P
    111.            System.out.println(result);   
    112. 4 ~* j# J# w) k9 H' l
    113.            book.close();   
    114. . [' S( |8 J  \! @
    115.        }   catch  (Exception e)   {   . L  E: V9 \+ u* l: A5 L
    116.            //System.out.println(e);   0 }$ L! r8 z/ k\\" I, Y/ S
    117.         e.printStackTrace();4 Z; v7 F; K! `  E+ p4 U. H; W- Z
    118.        }   
    119. 2 s, ~) J4 @; E( w2 c
    120.     }    6 R7 ^0 {) n8 v: g3 D+ E/ l3 ^
    121. }  J3 q8 Q1 X) @0 Y3 c# J+ }5 w

    122. # ?5 [% N2 C. E
    123. 3 `5 ?$ m4 T  ^0 R) w& [, I\\" ^\\" \  e
    124. ! q3 x* J$ M\\" ?/ Y/ I/ W0 K
    125. ! p1 i\\" `& R0 F/ [: P
    126. (3)合并单元格、格式化单元格等4 S* P5 ~; {+ c# w
    127. # i. ^3 x6 F2 T! X' n+ z6 w) q3 e

    128. ! m# y2 b& [8 [1 j/ Q& }& f
    129. //合并单元格并在单元格中输入内容- N! ~2 F# C2 `& T6 ^
    130. + v7 S* p4 _3 u) P
    131. package additionalproperty;; v\\" m8 {; }: N1 {4 b, K9 j8 L
    132. % r' {9 }& X- ^+ X# t6 u, j
    133. import java.io.*;4 D! A3 d8 o& [+ z
    134. import jxl.write.*;# `6 t* a4 {+ \1 b. k& [0 I
    135. import jxl.*;) _& i7 C2 Z/ w3 q+ B% B6 a7 o7 U
    136. 9 ]8 L: Z$ l- F9 \8 _
    137. public class MergeCells {8 t/ N$ ?. g* `& ~- e
    138. public static void main(String [] args){) E+ o' ^- V$ |7 k( A8 B$ C
    139.   try{& ^! w. K9 M1 j5 E# Z
    140.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));1 j1 D6 {6 a# O3 R# g0 B/ v9 k
    141.         WritableSheet sheet = book.createSheet("第一页", 0);! R, C$ P7 Q* J
    142.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格( C! X8 T& O( O. n% l
    143.    ; g$ e/ c& u/ [  r
    144.         //设置填充内容的格式9 }# R7 B% g, G- d% Z' e
    145.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    146. ) j( E/ c% w9 ]2 o$ t
    147.         WritableCellFormat format = new WritableCellFormat(font);5 w* Q, T$ b! q1 i$ z; \7 d2 X
    148.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    149. ( J$ h. P, c( @4 E& N
    150.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    151. . X6 g) {# j; D' Y2 o\\" w/ ~6 a: a
    152.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式9 L$ F- u+ E, T
    153.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    154. 3 b5 g7 p& A2 a1 z8 b8 M
    155.    + i' i\\" b- t' [1 X& T; u
    156.         Label label = new Label(3, 3, "合并", format); //添加内容
    157. 1 a* K, |: S: ]
    158.         sheet.addCell(label);2 Y' M; B- B6 {8 D6 @
    159.         book.write();: s0 d% V# _9 V3 ]' j( w* }1 T
    160.         book.close();$ L2 t5 m! S5 |# {  S, H. B8 [
    161.   }//end try9 \1 `  ?0 T& d5 W3 o, Y( H
    162.       catch (Exception e){: c; T) N3 g  N% G/ d
    163.            e.printStackTrace();+ v8 ]% F. l# ?& S
    164.        }* g) {2 n\\" I- Z  H' Z4 v
    165.    }9 y7 S0 m3 j, c( A- J9 B
    166. }) U9 Q\\" n  q\\" G/ A: c
    167. 6 i2 V7 o/ ]# ~  _
    168. & [4 `  u4 Z2 I: _6 Z3 [& \. v
    169. ' z\\" Q/ M! _, h\\" c5 L
    170. (4)添加图片) d! M9 x- o3 w9 [+ y7 w$ `  F

    171. ( W\\" k6 |5 K( u+ ~
    172.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    173. 7 i/ a- u\\" U# K: r7 U

    174. , F  T: j+ n; J6 e( n2 w
    175. / c' @1 T. Z% Q\\" J) J; ^4 i
    176. //在工作表中添加图片
    177. 9 @* w/ t- T$ K
    178. & E& e0 v; ^$ q8 C, o
    179. package handleimage;- Z\\" B5 U4 K: \3 N
    180. , Q4 p  C0 M# J& a$ w2 r
    181. import java.io.*;
    182.   }1 v, V' C9 ^8 c/ V9 \4 `% L: D
    183. import jxl.*;7 @; E  Z7 h; d0 i0 U# H
    184. import jxl.write.*;* S5 w7 N( S8 p\\" W# b) D) G

    185. \\" M% s/ w' j- }  g# G7 e
    186. public class CreateImage {8 T# l: R' `7 U' Q4 _2 ?; {6 p1 Q
    187. public static void main(String [] args){- P+ z* b+ M3 B6 j, s5 o; s
    188.   try{
    189. ; b: M! P  v6 s' L8 d# |4 w9 n: Q  O
    190.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));& ]  d7 S$ g4 d4 ~\\" Y2 c* u2 `
    191.        WritableSheet sheet = book.createSheet("第一页", 0);& j7 I+ p. a8 {: O- \8 H& @0 o
    192.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式\\" ?: {2 X6 t8 b) Q, r( }1 R9 e
    193.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));3 R3 z/ d6 u4 X. B
    194.        sheet.addImage(image);  //添加图片
    195. - I' p\\" N) C, o4 g7 a3 o0 W3 ?
    196.    1 m; w; \- e; D6 [, j% B
    197.        book.write();
    198. + U- h0 U3 Z+ T2 ^' r* {! W$ f
    199.        book.close();) L2 u% o\\" j# ?# v  k) P0 F\\" H
    200.       }//end try\\" s# n\\" X# o8 W/ p+ B
    201.       catch (Exception e){ e.printStackTrace(); }
    202. # F3 e% Q, _: D8 c$ L1 Z
    203.    }% h% r% u9 D# m% q- ?0 p& ?- w% L
    204. }
    205. # ^\\" B$ g6 _  ^
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    guoaecg        

    0

    主题

    5

    听众

    252

    积分

    升级  76%

  • TA的每日心情

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

    [LV.5]常住居民I

    自我介绍
    想学数学
    回复

    使用道具 举报

    3#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-24 06:53 , Processed in 0.434559 second(s), 66 queries .

    回顶部