QQ登录

只需要一步,快速开始

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

【转】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. 2 q$ G: ]% ~\\" r4 [
    3. * j$ J: k8 f+ K2 x\\" P1 E+ z
    4.         1、环境配置, N+ {9 q9 O7 t1 y2 E7 Z
    5. 1 P  F! w7 P0 q( Q, M
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html; f) l$ E' U0 m% S. q
    7. 8 o$ P. U% A7 w
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. 9 g\\" ], o( w2 u' M
    10. ) {! K+ w6 b) V\\" ^  n. J
    11.        (1)jxl.jar  —— JExcelAPI 函数库;# P: Y* `' T. E3 R: P% l

    12. + q0 C. L; S\\" N3 x9 Z* r
    13.        (2)docs  ——  帮助文档;. r; c6 w+ w2 ~7 t9 E
    14. 4 z+ @\\" |\\" m, r
    15.        (3)src     ——  源码文件夹;* ^1 h' Z* `* ^4 P- h$ I0 d
    16. - P# q* E& \, u& A; h9 m% |! d/ ?
    17.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    18. 7 ?5 b: d\\" v% T5 d7 J
    19. 6 v3 P* z2 b. q; o2 T& D9 }% F
    20.         2、Excel基础操作实例
    21. \\" {0 \, t$ @- _: U) R, o

    22. ( g/ |/ i9 Q# e: R9 M! c; Q
    23.         (1)  创建Excel文件   
    24. 1 ^6 _2 o0 s# n9 p\\" s6 ~

    25. 2 R9 A) j0 S* z9 [8 D, L
    26.   /**读取Excel文件的内容   - j! ^7 H( [2 x
    27. * @param file  待读取的文件   * I9 {0 Y! y5 `9 K
    28. * @return   // 生成Excel的类    */
    29. 8 `( {' T) L  d6 m8 M) p9 t
    30. package createxls;
    31. / P5 i+ q4 @5 c

    32. & t3 _# x- C\\" Q% q
    33. import  java.io.File;   % n* C6 U+ |; F: Z% S$ `; }
    34.   ; S# u' k/ \9 Y% I$ {# r
    35. import  jxl.Workbook;   
    36. 2 S; u- Z' D( _' L5 E& X7 U
    37. import  jxl.write.Label;   1 f& C4 E: z) M* c
    38. import  jxl.write.WritableSheet;   
    39. ! Q7 Z& @2 m0 s# l- C' ]
    40. import  jxl.write.WritableWorkbook;   9 p0 r1 K8 n! y, E8 h! K; V
    41.   7 f) _, Y! @& H; E3 w, y' L
    42. public   class  CreateXLS {   
    43.   H3 B5 G  W  _* p
    44.     public   static   void  main(String args[])   {   
    45. 6 v( w2 l; {! L\\" Z* f5 u
    46.         try    {   4 z# e1 q4 }$ D6 S7 g
    47.             //  打开文件   
    48. : Z& E( r2 F+ ?: N# y
    49.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    50. . f2 d' }! o9 U# n7 l7 O$ e/ y6 E% i; u
    51.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    52. 5 {# ]7 C9 |' j- B5 s# \
    53.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    54. ! B) V  o8 d3 S$ o7 F7 n
    55.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    56. 2 O3 W& L6 L9 x) `/ P3 I( o7 n/ R
    57.             //  以及单元格内容为test    1 _' @6 [  v$ s( F+ \1 p
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ! F3 M, x- W2 e) W# ^
    59.   
    60. 2 G( T+ W: C9 N, z7 l) G; p
    61.             //  将定义好的单元格添加到工作表中    # ^/ Y4 G3 I0 A0 g
    62.             sheet.addCell(label);   9 ?8 U$ s% M  X: A: i) _+ Q. |
    63.   3 I% N. z; f  \5 y3 k& l
    64.             //  写入数据并关闭文件   
    65. 6 Z2 m2 f\\" i% K/ @( O
    66.             book.write();   . W6 C& W: Q. h5 e( ]% p
    67.            book.close();   \\" `8 n' e\\" Y7 w1 D6 T
    68.   2 [9 Q4 {2 p& d) o, C2 N( ]- q  ]
    69.        }   catch  (Exception e)   {   
    70. $ S7 _- k5 l$ P9 a/ d' H+ E
    71.            System.out.println(e);   5 d1 V) r; v7 ]\\" \
    72.        }    ' f  b- J9 s# B8 D
    73.    }   
    74. 5 v* j0 x9 s7 A7 s* V; Z1 E+ u
    75. }   
    76. \\" z\\" }( j) y0 A; M$ B$ X1 }\\" J. }
    77. / _! l) {, K5 p\\" {  N7 X
    78. : _\\" M& R  \\\" L6 P/ _! J

    79. 7 T( `- V6 `+ X/ ]( b' `) s
    80. (2)读Excel文件\\" @- b( v6 z9 g' {* i& N
    81. $ E5 [1 H0 K# T

    82. 3 {% e  Y5 y' z/ W3 D& ~; }+ Y\\" l
    83. package readxls;+ L6 b  j\\" ~* @0 n& P) C5 d& p2 |& G

    84. - i6 G& |5 F$ W# H( a% n- a9 z% B. z
    85. //读取Excel的类    & U0 u2 \. ^\\" C
    86. import  java.io.File;   5 O/ m! ~0 o& p
    87.   
    88. 9 e' D1 z) T  U1 W7 a/ T3 N
    89. import  jxl.Cell;   
    90. ! q1 m1 @; G8 o, [9 g\\" f
    91. import  jxl.Sheet;   . P8 p; x9 b+ F  d, q
    92. import  jxl.Workbook;   
    93. 9 N4 N. p9 j8 g+ k3 b- P
    94.   
    95. + g& d/ v# _9 I
    96. public   class  ReadXLS   {   
    97. ) H, ~7 K3 J\\" {7 k' a  f
    98.     public   static   void  main(String args[])   {   
    99. + ]1 h% n9 o) v  ?/ z
    100.         try    {   7 c+ M( M; W# }8 w1 f/ N
    101.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    102. 7 O1 p$ \  H* Z7 x4 z& p, J
    103.             //  获得第一个工作表对象   
    104. $ y0 ?& Z# v' a, j; C7 v( ^* h
    105.             Sheet sheet  =  book.getSheet( 0 );   
    106.   V1 T5 @& W) d( W0 K
    107.             //  得到第一列第一行的单元格   
    108. 3 b\\" Q2 W  c: r0 o; S1 o% p\\" s
    109.             Cell cell1  =  sheet.getCell( 0 ,  0 );   % g: {. w, Z8 v! x: d
    110.            String result  =  cell1.getContents();   
    111. $ O: J% o1 \\\" l6 H
    112.            System.out.println(result);   $ ?8 c+ F) v* S- c
    113.            book.close();   
    114.   b2 `9 g1 J5 {( o
    115.        }   catch  (Exception e)   {   
    116. ' k' X- f% a: ^- ]: o
    117.            //System.out.println(e);   3 J9 g8 T' r& ]$ R& E
    118.         e.printStackTrace();
    119. 2 u# {9 |- B* s# r
    120.        }    7 p  }. |; k/ j* o7 w( @7 O
    121.     }   
    122. ( F! y1 E0 p1 ?- Y- U0 F
    123. }
    124. 2 {& D( ~) V4 A$ o9 d0 k  G5 P

    125. ! Z) z! \3 ~( R/ y7 L/ t5 r. o8 ~

    126. ) b( ]% K' g\\" _) Q& s
    127. . {6 u, R4 U9 h' e/ y% y

    128. : `( h- ]2 b, z; I; U5 r1 z
    129. (3)合并单元格、格式化单元格等5 b( ^: W( e8 B/ X

    130. - l3 @+ F8 V; u$ A/ P6 I6 @4 M

    131. 2 x9 H0 g5 V8 ~( l1 M4 M
    132. //合并单元格并在单元格中输入内容
    133. ' u2 u( l2 w, i6 b  L/ i
    134. & M, n9 G/ d) E- Y
    135. package additionalproperty;
    136. 1 P+ i- p# X: F\\" T# e4 D; F
    137. ; k1 |( C8 ~: M* x: N* E
    138. import java.io.*;7 Y% D2 A) V1 h) O. i* x
    139. import jxl.write.*;* O5 d3 n+ X* {$ [: \7 Y: H
    140. import jxl.*;+ j\\" E* g4 m/ \# V* z# \; j
    141. # J: C) l0 U: _! i) H: f$ @! [
    142. public class MergeCells {& i5 m5 Y: O0 ]  b2 F7 l
    143. public static void main(String [] args){1 B! x: V+ C/ y
    144.   try{! D( N- W8 S1 ?( O, S$ B# e& O
    145.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 T3 b, y: H8 B  D7 m
    146.         WritableSheet sheet = book.createSheet("第一页", 0);6 O% b+ _* A1 k4 \: F
    147.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格6 h+ U! W4 d# H9 \, Y
    148.    & s% O( q9 v8 N% d; |$ c  g3 P- d: I
    149.         //设置填充内容的格式- _! X9 v: @' s: v1 F
    150.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    151. 1 s5 R/ L  X; i1 V' e9 U
    152.         WritableCellFormat format = new WritableCellFormat(font);
    153. 1 R! [& b+ ~\\" u, Y& L8 o
    154.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中2 I8 w* y, x0 c' i# x5 D
    155.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    156. ) Q! ~) O1 Y+ l  w+ ?5 N5 i: k
    157.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式4 a4 F* B) L: b) B, ]
    158.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    159. ; J\\" q- o& _% ^! W
    160.    
    161. 0 [- k, x: x, w  _5 d4 b( ^! {
    162.         Label label = new Label(3, 3, "合并", format); //添加内容
    163. ) O* |' J; h& A# s. L; E0 G
    164.         sheet.addCell(label);
    165. ; p/ L\\" n- h- e+ F* j- C1 k! Z
    166.         book.write();
    167. 3 B1 B* ~' Y, u9 d# a
    168.         book.close();
    169. 4 r1 H8 s% U# X6 q# {4 A
    170.   }//end try( l' R) M# k\\" @  d+ T
    171.       catch (Exception e){% J) G# L0 j( |  i, g0 q
    172.            e.printStackTrace();, Z1 z! X4 d0 t7 k
    173.        }
    174. % \* o, s' E. p) O\\" g2 i
    175.    }, W: w3 i6 W  N
    176. }; j  @0 z/ v# k& n

    177. ' z1 e* t\\" B6 h/ a4 p- |/ P. x

    178. + X\\" p, M: }- L; F2 S' H

    179. 3 [9 U! ?/ J\\" y) X4 ]
    180. (4)添加图片
    181. 4 y* m+ g6 ]( [- x8 v

    182. 3 W! H' w! D5 i* @\\" P3 ]2 @
    183.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。% d6 O& I* d, }3 I
    184. ( i8 r8 }5 A. q\\" y) ^' G
    185. + y, k1 A7 }/ _/ \* ~+ K
    186. //在工作表中添加图片1 L' u7 i5 g3 m: s1 n4 Q  y

    187. % f6 w. i3 Q( g- u# u
    188. package handleimage;
    189. + o( e  _, U, v\\" |8 H
    190. 2 h/ i% T9 b\\" _) r. N, R5 V
    191. import java.io.*;
    192. % U% n3 _7 x- W$ E# V3 M; X- x9 c* L
    193. import jxl.*;
    194. # h# H9 p5 G6 }4 U+ |0 C
    195. import jxl.write.*;
    196. + s4 q+ j+ x+ w8 L. j

    197. ; G) m3 f5 @/ M9 q2 G5 ~& d9 t+ }
    198. public class CreateImage {
    199. # c2 X/ _3 L- X  E8 A
    200. public static void main(String [] args){
    201. # D% e: |$ x1 ?9 N) ]8 s) h1 S8 p; c
    202.   try{
    203.   u: H! R* K2 R3 |  n: C: |
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));6 g: b) x3 N+ c1 @8 E8 M' Q6 [
    205.        WritableSheet sheet = book.createSheet("第一页", 0);
    206. 4 e% d% }8 L- z, H
    207.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    208. 3 Z& K9 F- r9 C. C2 F% Z' n
    209.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));/ x& y3 h* o$ M. N% B) q7 f
    210.        sheet.addImage(image);  //添加图片
    211. , R; A2 D/ [. E- T; _& u6 b
    212.    3 A* q& R' d. d/ M8 _5 j5 x
    213.        book.write();
    214. . O' s0 Q, C% r( e5 ~
    215.        book.close();
    216. + P3 o) N) G/ B% Y5 m
    217.       }//end try
    218. 8 F' c. W6 Y* m  J
    219.       catch (Exception e){ e.printStackTrace(); }
    220. $ Z3 v+ Y5 e/ n# h7 {3 ^0 c: D
    221.    }
    222. - G) O: I. ]( E: H: E! Y( H7 D
    223. }
    224.   a4 B; Z0 F4 a; E9 {% L, |9 K
    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-9-24 17:17 , Processed in 0.455559 second(s), 67 queries .

    回顶部