QQ登录

只需要一步,快速开始

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

【转】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的使用方法。# _9 i! x+ N5 ]\\" A& [
    2. 8 V  E0 z. a( }+ ~7 J  }) w& ^
    3.         1、环境配置
    4. / v* o$ y$ W6 J7 [6 u

    5. % A; m+ |' |+ @  a* }% t  y
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    7. 6 F# y/ D! A. R9 \2 S  _
    8. 7 R# Q' K) ?, {. P. d# A: A
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:- g9 G, r) D7 x( |8 x
    10. 4 q, j& n1 L\\" {3 p+ F( x7 f. Y/ N$ Z* u
    11.        (1)jxl.jar  —— JExcelAPI 函数库;8 a7 |\\" R0 i, ~
    12. 9 j$ E8 z) g% `- V. x$ S3 l
    13.        (2)docs  ——  帮助文档;9 \3 _2 s. _+ ~, Y. |& j2 b
    14. + P( k  n+ h7 ?1 K: r) l( y
    15.        (3)src     ——  源码文件夹;
    16. & K+ R9 L  d1 s& j% S4 w# N

    17. - p7 a. z7 y$ |
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    19. ! D8 @0 P7 G3 T
    20. 3 j  w\\" G* r$ f4 F2 m
    21.         2、Excel基础操作实例2 l$ q1 d\\" |4 K0 X9 ^3 k
    22. + g0 f8 X/ w/ O: y
    23.         (1)  创建Excel文件    4 _9 ]8 i1 C# s* n: C

    24. % ^# t& S$ o8 d
    25.   /**读取Excel文件的内容   , {' p! R0 P/ v\\" C; r' @, T
    26. * @param file  待读取的文件   $ K, N- ^' a/ V8 G) R; s; E& E
    27. * @return   // 生成Excel的类    */\\" d' m  d0 c) c
    28. package createxls;
    29. % P7 O; h( o* R3 v# U$ Z3 {
    30. & ^  H$ Z8 x, I0 E3 I) j\\" \1 e! L
    31. import  java.io.File;   2 `  M7 S) Y: b, }2 a
    32.   
    33. 5 F# w3 N- J: j. c2 O7 Q$ z+ n
    34. import  jxl.Workbook;   * t\\" Z2 d1 _6 r' ^7 t6 Z
    35. import  jxl.write.Label;   
    36. ; a* d9 A% Z\\" e* }( m: a  Z  V
    37. import  jxl.write.WritableSheet;   4 D& D( l5 J& \3 C
    38. import  jxl.write.WritableWorkbook;   
    39. 5 k5 {* C9 u9 Z+ r
    40.   
    41. * \2 R2 v+ }# G\\" {4 x2 I
    42. public   class  CreateXLS {   
    43. % B  V/ }# Z0 k  i& u7 \
    44.     public   static   void  main(String args[])   {   2 Y7 |% n4 A; K# z
    45.         try    {   * r  y) a. F+ M: v( [, g* J
    46.             //  打开文件    ' ]9 u5 Q  r$ [0 @
    47.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   6 v! H\\" v9 J! |% w& K$ h) K
    48.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    49. / P) u; Y' J0 _* k1 q4 c
    50.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    51. - v! q! p7 K) g, x) y
    52.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   / e7 c, C- e. ~9 {- N
    53.             //  以及单元格内容为test    - j4 y0 b, L& F& [! q% Q  k4 V
    54.             Label label  =   new  Label( 0 ,  0 ,  " test " );   / b' k. x* y) i0 Y% a* s$ g
    55.   
    56. \\" `3 T7 t% r8 G5 o
    57.             //  将定义好的单元格添加到工作表中   
    58. - D  h: N0 U# A+ g2 T
    59.             sheet.addCell(label);   
    60. 1 _, v/ r8 C- c
    61.   7 U% d/ [0 @% d# x, c: S( a
    62.             //  写入数据并关闭文件    7 k+ b\\" c3 X  R6 [
    63.             book.write();   
    64.   N, R6 t7 W/ D9 u, Y( F+ J
    65.            book.close();   
    66. . F' V\\" B  j/ ?. t+ Y
    67.   ; C5 `+ L+ `8 d3 Z, B7 i! D) e0 T
    68.        }   catch  (Exception e)   {   3 Y+ c5 e! ~% C1 y2 [\\" I; v
    69.            System.out.println(e);   
    70. ; h, M4 I. i9 t6 @$ \9 c/ ^
    71.        }    % g( p# Q7 k7 h& {$ ]1 T
    72.    }    4 M( @  Q; y4 i6 {
    73. }   # E3 \5 E1 R* a, ?6 n
    74. & Z- c9 a% }6 K( e, O6 Z0 H, u
    75. $ A) C6 g; x  ]' i  ~  {\\" C
    76. : T' |) d0 l- ~$ z
    77. (2)读Excel文件
    78. 9 ?- q! U* u8 v2 a$ j  R, R
    79. ; S# d& {3 c  s( y2 w. C' d9 D& ^

    80. & K- P2 a% j+ b\\" i$ R$ T
    81. package readxls;+ q# Z, p9 i5 }2 B4 W' t

    82. 0 @: B, U. i, H2 {6 S
    83. //读取Excel的类   
    84. : {4 V; t* f' h) I/ m
    85. import  java.io.File;   7 U. Y. v5 Z0 E* D\\" X: I7 e9 j) P
    86.     N% s$ ]: I( V
    87. import  jxl.Cell;   3 Q/ U0 {6 ~7 \' \$ n0 k$ x
    88. import  jxl.Sheet;   
    89. / p  v; v. Q* O6 \9 F: T8 r
    90. import  jxl.Workbook;   
    91. ) q. W* G( Y; ?1 m
    92.   
    93.   k8 o& J9 }/ [$ e$ w# j* |; [: G; v
    94. public   class  ReadXLS   {   ! v# ~4 t; d9 o0 D6 Q+ T& O3 f
    95.     public   static   void  main(String args[])   {   
    96. ' g7 T0 A4 |6 j- B! J7 u- s8 m6 X0 {
    97.         try    {   
    98. 3 g- x5 c0 |9 ~8 n2 y) h2 @
    99.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   , f4 e& H1 J* Y0 K0 p$ f
    100.             //  获得第一个工作表对象   
    101. 1 |4 U9 o9 \; [0 r8 v+ d! [# L5 n; ]
    102.             Sheet sheet  =  book.getSheet( 0 );   5 k; S  e. o$ L5 K( n3 ^
    103.             //  得到第一列第一行的单元格    - _9 g\\" F; B: a8 k0 ]* `
    104.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    105. 2 b; s7 l6 \- }: u$ X; ]
    106.            String result  =  cell1.getContents();   
    107. ! r- N5 C' C- U8 V! x2 @
    108.            System.out.println(result);     S' j1 E* w8 x* R2 u; r
    109.            book.close();   
    110. : t5 H7 N8 ]- i
    111.        }   catch  (Exception e)   {   
    112. - _9 m$ @1 ]7 T9 e0 x
    113.            //System.out.println(e);   
    114. + N- r2 t+ d/ Y$ K( F1 g
    115.         e.printStackTrace();% f\\" m+ G7 E4 i4 [
    116.        }   
    117. ) i: E, F# L0 q  ?
    118.     }    ) p+ {, |4 n  b9 c
    119. }
    120. . H- \/ t4 A4 ~, N
    121. ) q+ F3 x$ J# z3 A
    122. , H  Q( X( W8 Z2 B4 B
    123. 8 q$ G, \, F9 e& `) l6 g  A6 o- s\\" ?

    124. 3 X8 H* Q/ V4 N$ M8 }
    125. (3)合并单元格、格式化单元格等! z# Q4 g7 \\\" s: a- N- N
    126. 3 U6 A3 E. n$ y9 |/ o  Y* v

    127. - V. J' H% w% ?/ @5 s
    128. //合并单元格并在单元格中输入内容
    129. / f$ g/ ~# Q\\" B  V: _4 R
    130. ) G8 p, k5 ^$ a& c  {
    131. package additionalproperty;
    132. 0 C; M6 ]% B( J* W
    133. ! r$ A' }2 I2 ~2 Y
    134. import java.io.*;. }, n3 U9 N* x% ]' c$ ~6 q- Z
    135. import jxl.write.*;4 A\\" T7 H7 t2 q+ v/ R: \& q
    136. import jxl.*;
    137. / W/ R. k. g- o* @
    138. \\" a+ b3 v# t$ t1 s1 v6 j  N
    139. public class MergeCells {
    140. 1 J: \0 Y. b4 F+ J5 G7 S
    141. public static void main(String [] args){* K: s# F$ E' I2 T7 D6 P2 ?
    142.   try{
    143. * y/ u* Z\\" N. l$ r3 N; V
    144.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));3 c! y4 @1 M; A1 }3 F7 y; X$ g
    145.         WritableSheet sheet = book.createSheet("第一页", 0);. g% z% m7 M8 d) {8 l
    146.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    147. : @* _  Y( m8 ^/ f6 t, q, v; _
    148.    
    149. ; \- r/ ^+ L8 H8 d
    150.         //设置填充内容的格式
    151. % I9 Z) \. C* R
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    153. 8 A! w7 C) P' g$ z, X9 t( `8 |& C
    154.         WritableCellFormat format = new WritableCellFormat(font);
    155. 1 R# w. h\\" F5 s9 ^
    156.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    157. , v4 Z) |1 \- C( H6 x' ]/ m- l
    158.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    159. ' b\\" ~( M2 S2 c8 }
    160.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式: o! n# O! p5 c8 d- h/ q- z( y
    161.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式0 s* p. ]. Q, X0 y: z6 n4 Z; d
    162.    2 D2 \8 @8 d+ Q  c, d
    163.         Label label = new Label(3, 3, "合并", format); //添加内容
    164. $ U4 i. F& l: S0 N
    165.         sheet.addCell(label);+ x6 w, p0 p: g% f3 ?
    166.         book.write();
    167. - U' c& p: `  \2 N' a: V
    168.         book.close();& ~$ _, F2 Q& P1 }0 c
    169.   }//end try
    170. $ D3 [& H# B4 K7 O1 E0 `
    171.       catch (Exception e){
    172. , [3 n3 J: E0 ?8 T
    173.            e.printStackTrace();
    174. ) P+ n2 {& t\\" H: b% H
    175.        }# }7 T- H$ T! z; N. q8 B9 N* q
    176.    }. T  |; ~6 A7 t% J6 f/ v0 _2 U# L
    177. }
    178. + A9 b& k% f8 [1 q4 p

    179. 1 P8 b7 @5 @* D/ h

    180. ' B) e) ^; `0 W
    181. ) i6 P% q6 ^9 U9 G) }0 {5 f
    182. (4)添加图片: Y* I6 j& p* ~
    183. # s+ i6 J: U& k4 g% ]\\" }  s* f
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。( W8 O8 p) G+ u0 u\\" [
    185. 1 b( }( D7 Y' x$ J, A' v

    186. 6 ]6 e; O8 @) s; T6 P
    187. //在工作表中添加图片5 R3 i) @) J- V

    188. ( ]# F. r& G6 C6 y1 u1 p) x: S* @) _
    189. package handleimage;
    190. , D- o\\" m4 E7 e* C5 G

    191. / {, A6 O* ^$ j( a. i  o$ R) o+ B
    192. import java.io.*;+ c. K  a4 F& K) v
    193. import jxl.*;3 e+ Y: T+ Q6 E4 ^: ^
    194. import jxl.write.*;' {5 ]) @2 e3 H  B* p. v$ f

    195. + t2 l7 l* C: s  ?, u1 @1 n
    196. public class CreateImage {/ J: l# M0 j8 g- A
    197. public static void main(String [] args){; O: }3 T/ A2 B
    198.   try{
    199. / \/ \\\" H+ }9 v* C6 ]
    200.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    201. 2 c: N* n' [+ G: ?: g* Q: I
    202.        WritableSheet sheet = book.createSheet("第一页", 0);
    203. , v5 G5 {  O9 ?) P4 K& Z
    204.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    205. % [! ]6 |8 w) ?& K: a! J1 G) O
    206.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));$ L7 `2 w6 B$ G( E0 j  E$ K& M
    207.        sheet.addImage(image);  //添加图片
    208. + C6 d; ^$ o3 u9 o1 C
    209.    / a4 X) i7 B+ {; n/ L( E
    210.        book.write();
    211. 6 T( i+ r* ^) @  b# r& f4 k
    212.        book.close();, u1 S, n; `4 M+ N
    213.       }//end try  T0 P8 z2 v- \( X0 S1 w6 z- ~' ^
    214.       catch (Exception e){ e.printStackTrace(); }; S; h% ^: `( |* v
    215.    }
    216. 3 ^; |: E8 Y5 ?. M5 Q* r
    217. }0 [4 t0 Z' q8 K( b9 B+ d/ h. x
    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-6-10 23:37 , Processed in 0.408706 second(s), 61 queries .

    回顶部