QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2362|回复: 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的使用方法。
    2. ! p5 _. k6 E! N7 W  M& }+ F, t
    3. ) G& H+ W( a2 W7 }7 M
    4.         1、环境配置
    5. 8 }8 L# o; ^! b% x: B+ v! A8 z& O

    6. 2 N, v! N$ B# ?( ^2 _\\" K5 d
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    8. ; O( ?0 v2 h- Z8 H( F
    9. + M+ i7 P- }' ?8 Y2 C5 F
    10.         下载完成的包解压之后,可以得到如下几个重要的文件:+ K  Y. l/ t& r( u6 r( p
    11. 7 K0 t$ q& W. I4 E
    12.        (1)jxl.jar  —— JExcelAPI 函数库;9 u2 W- d1 [0 O2 E5 D\\" G

    13. : I7 p# _: U! G2 C
    14.        (2)docs  ——  帮助文档;6 r- J! {: U- N
    15. 9 J& W4 h6 R$ [& y
    16.        (3)src     ——  源码文件夹;( C; N& Q$ e3 y( u5 Q! ]/ u
    17. + P' |. e7 _4 `+ p
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。8 x7 m6 \- {; g% K- ^+ T* ~) `, a
    19. \\" ]9 _2 O1 z) g9 E
    20.         2、Excel基础操作实例
    21. . P8 y; I( l3 \9 |/ n- a6 j

    22. ( ?; ^\\" q2 d; @1 e- x) Q
    23.         (1)  创建Excel文件   
    24. ! g+ d4 d/ ]+ a% T# f- z% Q
    25. # x( l* j! X2 `2 u* g5 c
    26.   /**读取Excel文件的内容   
    27. & D  {; R: r1 T
    28. * @param file  待读取的文件   
    29. 1 q7 n1 N3 A; R9 n3 r6 S
    30. * @return   // 生成Excel的类    */
    31. ; m; |% B& L, K6 W
    32. package createxls;6 }; e1 D$ N+ r# s5 ~
    33. $ h6 I& S! a  e; f( ^- h3 V
    34. import  java.io.File;   
    35. 9 G, D  ^! i- w/ k4 L- f
    36.   
    37. 9 y9 g( _- |1 l, w\\" u, A7 L, G  l
    38. import  jxl.Workbook;   
    39. 1 l9 l( c6 e8 M
    40. import  jxl.write.Label;   ! A/ u2 a6 H: V
    41. import  jxl.write.WritableSheet;   
    42. + U2 _\\" J. w9 r1 V$ M* K- s
    43. import  jxl.write.WritableWorkbook;   
    44. + l; c4 x( C% U- S! I& a
    45.   7 _; q1 \+ t0 X0 F
    46. public   class  CreateXLS {   : ?$ U! y$ Q3 V8 n' x5 q9 Z, O\\" O3 Y
    47.     public   static   void  main(String args[])   {   
    48. 0 C4 ^5 E\\" f0 c\\" h( v
    49.         try    {   2 C\\" T5 v5 B1 a% e1 V9 Z( ]
    50.             //  打开文件    0 V6 I- i9 I% j/ e, ^
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. 3 Q( D8 u  M- f
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    54. 5 D! l1 u; a- M
    55.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    56.   d2 e; I# s3 a$ L, ^
    57.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   ( ]1 |* i9 I- \* u* |# z+ C
    58.             //  以及单元格内容为test   
    59. ( a/ W) Q8 H9 Y! k, l$ w8 l
    60.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ) w% q2 b* R* p\\" ?/ C/ [
    61.   
    62. & z, X* K: e9 N2 Q: a' [
    63.             //  将定义好的单元格添加到工作表中   
    64. ' n% L9 t+ y3 g0 W: w
    65.             sheet.addCell(label);   
    66. 8 v; [& ]; _, N) [4 o
    67.   ! J6 h' _: _9 y) ~8 j/ ~9 ]5 ~
    68.             //  写入数据并关闭文件    1 B\\" g% ]* M/ N8 R- A\\" R
    69.             book.write();   
    70. , N1 A3 b8 e+ a6 e7 ?2 P3 U% c
    71.            book.close();   
    72. ' c* e8 i  W+ I: [6 @  ~
    73.   
    74. : b3 a  e0 g; J
    75.        }   catch  (Exception e)   {   7 J% S( s: G' q3 R
    76.            System.out.println(e);   
    77. 9 K8 ~/ \( V; q3 \
    78.        }    2 a! Z: p/ ^# h& d  {' q1 W8 y
    79.    }    ' m% a; q1 N& i- ]* D7 O1 Z
    80. }   
    81. + W$ p, W: q5 N) z* I8 t* O
    82. - t. s9 _6 f$ d- ^1 H& Z

    83. 5 h) C+ s8 C/ c% [! ?; ]
    84. 3 z! b) E9 c. A/ v* T# \
    85. (2)读Excel文件6 K. l: ^8 n4 J8 x$ y
    86. 9 R, ~! s\\" M) H- l3 b) E

    87. 5 [% W- d0 W0 o3 G* d9 B7 ?  {6 W5 f' G
    88. package readxls;
    89. * k7 G; d7 z0 P% x
    90. , j6 f9 D( d- b* e1 m6 s
    91. //读取Excel的类   
    92. / c2 ?/ }( _; Y0 \8 f' @
    93. import  java.io.File;   
    94. \\" i  H% ]7 C: v7 Y6 @! H3 b
    95.   9 i1 \2 o6 t\\" ^) [/ {8 v
    96. import  jxl.Cell;   
    97. + V( G/ c$ p! O
    98. import  jxl.Sheet;   # _6 r% ^8 V' f( E
    99. import  jxl.Workbook;   + \2 [\\" R$ X+ H0 F1 a% O
    100.   / }5 P% q9 G! e, i+ c8 C! s; d\\" U
    101. public   class  ReadXLS   {   5 A7 E6 N6 @' |6 k( Z4 ?
    102.     public   static   void  main(String args[])   {   \\" y' A6 G3 ~2 `7 E9 |
    103.         try    {   4 ]# y2 ^9 U! J' g
    104.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   # X5 b- n- n\\" }' w6 F0 ]9 @
    105.             //  获得第一个工作表对象   
    106. $ X. v3 W\\" Z. g; o( Y
    107.             Sheet sheet  =  book.getSheet( 0 );   ' \' s% ^: |3 t7 L# I
    108.             //  得到第一列第一行的单元格   
    109. & Q0 M' s' R8 }' G9 A6 y
    110.             Cell cell1  =  sheet.getCell( 0 ,  0 );   - ~, Z- D3 ~. L# p7 y$ D- ~$ `
    111.            String result  =  cell1.getContents();   $ h: j\\" H' I- e. _9 ?5 H+ J
    112.            System.out.println(result);   & f. e- w; ?9 c) }9 F
    113.            book.close();   % \# z* Y  w6 l& ?0 ^9 A. g
    114.        }   catch  (Exception e)   {   
    115. 0 @5 ^' J* I/ H6 ]7 k1 @
    116.            //System.out.println(e);   9 |) ~- `9 C# m& v0 S
    117.         e.printStackTrace();
    118. & m) u6 q$ Z& C% B6 ~4 q
    119.        }    2 z4 [' b' T9 K
    120.     }   
    121. 3 V0 U6 T* i/ a8 n7 d6 H8 S
    122. }# a\\" S+ p3 u2 ~. G- y5 d  B
    123. & f2 E/ U\\" `  v2 h  }/ }

    124. 8 G8 }+ m, o7 n. {/ V% @, |

    125. \\" i: `\\" x* h- z/ C  c& k. g\\" v
    126. 0 K* o+ `. A! }: y- S6 M4 c* ]- m
    127. (3)合并单元格、格式化单元格等
    128. - I/ p$ U$ ]\\" g) K! d. h0 {
    129. % G' Q6 E, i( C0 T* a2 ?9 V& Q, l, Q5 r

    130. 6 ^0 @' b2 K4 w
    131. //合并单元格并在单元格中输入内容
    132. - G8 h$ q: l2 q

    133. ( s. a\\" K# j  l( j1 R
    134. package additionalproperty;! c' _$ D4 i8 n9 z$ X  M! F
    135. ) a! ]) y6 k: X/ r* d, ~& _
    136. import java.io.*;4 R3 e1 y$ Y4 T\\" b
    137. import jxl.write.*;( p9 @\\" v$ z% g  M\\" z
    138. import jxl.*;3 U\\" N$ D8 x# W& W; g
    139. 3 ~# C; V! a% i3 S6 }
    140. public class MergeCells {  D+ z1 o+ w8 R, L
    141. public static void main(String [] args){
    142. : n\\" j% D' x* b' \8 i) v
    143.   try{
    144. 8 w* W$ ]\\" B2 o- s/ h\\" a7 C
    145.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    146. . B2 z8 e% ~% m& q6 h
    147.         WritableSheet sheet = book.createSheet("第一页", 0);
    148. % k6 P% D: V6 ]! G6 d7 a; R3 C5 U, ~
    149.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格9 T' ^3 t/ f/ t/ R0 G+ Y
    150.    9 o7 P# y$ _1 l1 \2 S# {
    151.         //设置填充内容的格式% x$ m! _& E$ g5 [, ^+ g
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);4 u% l* o9 u7 O% x- S; S
    153.         WritableCellFormat format = new WritableCellFormat(font);2 b- |% R- R) ~% G2 J
    154.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    155. * K\\" j2 Q# v. V/ C4 G
    156.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中* K3 v% m3 D3 B1 ]
    157.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式$ k0 B% `  B) a; |
    158.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    159. ' x* _. p6 f1 i4 z. E
    160.    
    161. 7 L! N5 Z1 |5 g' ?5 M$ }* E
    162.         Label label = new Label(3, 3, "合并", format); //添加内容/ `2 S1 ~\\" c0 r3 ?* l8 g5 H' H
    163.         sheet.addCell(label);+ v0 G, I* H+ M
    164.         book.write();  z* a4 o; ^! B8 g# V
    165.         book.close();
    166. 9 U8 n: v8 j9 s) j; O
    167.   }//end try. t4 J$ q0 K# Q0 u
    168.       catch (Exception e){9 z- X7 J3 A1 h4 R0 _/ ^' k  [
    169.            e.printStackTrace();
    170. , K2 c+ x$ H: i+ z2 {2 G
    171.        }% e* ]1 I# l8 Z
    172.    }% T3 a) X( A* E1 W. a\\" M+ f+ i
    173. }
    174. / f0 u/ F\\" T) [: b9 W* J* [7 |' r9 f

    175.   v5 N1 V7 s  q3 B+ j3 h

    176. ! h8 e! D: y4 Q! W
    177. 7 Y$ u6 q4 }4 C2 I1 d
    178. (4)添加图片
    179. 8 y2 n* M0 _, e8 y0 p0 M, F

    180. 1 l) R+ t: k  Q. s8 |: Q( A
    181.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。/ h\\" u, O( e( u
    182. ! Z0 x3 z4 i3 M9 _2 E' a  h
    183. 0 p6 s& Z4 ^/ m! {7 ]
    184. //在工作表中添加图片: X+ b- G* W7 x/ @) O
    185. 3 R9 ?1 o, @  X6 O
    186. package handleimage;0 }8 D0 _( Z- O8 D$ M! n7 ~- S) @5 e

    187. - Y8 [5 z6 e. }\\" j) _; {3 M
    188. import java.io.*;. z% s7 I9 K$ E4 R! D3 J
    189. import jxl.*;$ A1 |\\" B' \9 f
    190. import jxl.write.*;' I6 H' V4 E: E; M( X$ z. b
    191. ' m' [6 j% ^' X6 |9 k6 Z) a4 p
    192. public class CreateImage {
    193. * n) Z7 p- m4 C6 |, n8 H
    194. public static void main(String [] args){
    195. % n; f9 G. ]  D& k8 |8 D
    196.   try{
    197. 9 |/ Y+ B  p' W/ G, `( W+ I8 v* N4 `
    198.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    199. ! Q' b( K, v; e; O' z! K' c$ y9 J
    200.        WritableSheet sheet = book.createSheet("第一页", 0);
    201. 0 K  K: l6 S5 b* f
    202.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式7 Q6 _$ ]9 `- k- G2 p\\" ]
    203.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    204. 9 s( v1 ~' F$ o& V6 Z
    205.        sheet.addImage(image);  //添加图片. |! l. I4 [5 t, z0 M: w! S) `. e8 C
    206.    ; X  R. _5 p: G0 q  b+ x9 W
    207.        book.write();2 o/ R. h8 S' a3 T: W. }
    208.        book.close();
    209. \\" J4 L. h/ d) q7 w. g  C. ?) C
    210.       }//end try3 K$ w  S8 J/ k7 `9 _) H1 ?
    211.       catch (Exception e){ e.printStackTrace(); }6 A. t) I. z$ ?
    212.    }
    213. 5 |2 o6 _  z6 n\\" v2 F9 p
    214. }0 X  Z8 ~( e$ Q
    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-4-17 03:54 , Processed in 0.440334 second(s), 59 queries .

    回顶部