QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2372|回复: 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的使用方法。6 ]\\" q6 q0 r. z! M. P: Y
    2. # H1 F7 c! p& l, f8 c. F
    3.         1、环境配置9 I8 ?1 |  d; I( j5 i

    4. + D% ]. c( w$ M( c5 J
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. ! O& _; g$ z, W. H2 m

    7. : x3 C3 E; p/ r% n' ?0 I  J
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:- Z\\" F; ?6 c- G' @# W% k' {1 s

    9. 4 K3 j' q* {9 t' J
    10.        (1)jxl.jar  —— JExcelAPI 函数库;1 {8 a\\" r1 F6 E5 A

    11. ' J+ Q0 t\\" U$ x  k; p1 k
    12.        (2)docs  ——  帮助文档;
    13. 5 m& F9 I1 ]+ d4 r4 d

    14. ! P0 i8 O, ~- m: {. l) n& {
    15.        (3)src     ——  源码文件夹;
    16. 5 z! C- u. d' c1 a! `$ l\\" ]5 }7 m( X

    17. / u' a  D- W$ A& p/ h
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。. ?8 u3 G: E1 s: s! t3 R$ M3 ^

    19. 6 a# b  \% a( l5 b2 V8 X
    20.         2、Excel基础操作实例
    21. 1 P6 G( e( X7 V\\" F- Z: E
    22. \\" R6 f3 F3 J4 g\\" m3 _: E3 V\\" x
    23.         (1)  创建Excel文件    1 s4 l! x$ z6 U+ n# O( I

    24. 8 P3 `( m( {7 B) @1 n  U5 _, Y; @
    25.   /**读取Excel文件的内容   8 p/ k8 z6 `& h0 i, u
    26. * @param file  待读取的文件   
    27. 6 q* L4 j# W9 {) _
    28. * @return   // 生成Excel的类    */6 ?8 D+ p( v* ^7 u/ H/ Y0 D
    29. package createxls;1 j. @) v0 {\\" ^

    30. 0 Q. a8 z2 u; r) e
    31. import  java.io.File;   
    32. % {' ]9 ?% y! E* L. W
    33.   
    34.   L+ d\\" {' ?/ e% }3 n4 p0 ]
    35. import  jxl.Workbook;   
    36. % L* q0 R, y7 J, `2 {$ @7 a6 T
    37. import  jxl.write.Label;   
    38. * |# Q' R7 z, z: Q- p+ i0 U
    39. import  jxl.write.WritableSheet;   
    40. 6 @) V% i; _  t0 L! J# J
    41. import  jxl.write.WritableWorkbook;   3 M\\" i' J( M  ]- F8 ]+ X& k# ?
    42.   8 C& [3 D3 \' H# y7 _
    43. public   class  CreateXLS {   1 O  e3 _5 [$ L- D' ^
    44.     public   static   void  main(String args[])   {   
    45. ' I+ V6 d( `\\" T$ ?- _5 m. U
    46.         try    {   2 C5 Q/ E2 n6 {2 v\\" R5 O% r
    47.             //  打开文件    & i! ?( O  e3 q. F3 V( X
    48.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   9 c  c+ K9 z\\" x
    49.             //  生成名为“第一页”的工作表,参数0表示这是第一页    \\" e: \1 m' Y9 k  R
    50.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   , m  x* ]( \4 v# b0 n6 l% j7 F' c
    51.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   % c0 v' }% K  U# M% ?
    52.             //  以及单元格内容为test   
    53. \\" i6 o! n7 K5 X2 k$ v
    54.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    55. 9 L8 [9 c! S& b+ k! H
    56.   . S/ ~/ U/ p: o; [0 r
    57.             //  将定义好的单元格添加到工作表中    9 D+ ], F1 Q9 s1 u/ g
    58.             sheet.addCell(label);   9 |7 ?  N6 t0 ~' N/ f- ?# J! x
    59.   
    60. : }# H# Z/ q, ?5 c\\" F# D3 e
    61.             //  写入数据并关闭文件   
    62. - d6 P; a8 Y$ S( ]9 e/ x, @& h
    63.             book.write();   1 ^, c: `5 S7 x$ a7 t8 K
    64.            book.close();   
    65. , v, M; K1 K' t6 h1 Y2 W
    66.   ! G, `( L# c' X( v9 V  z& c  W9 X
    67.        }   catch  (Exception e)   {   \\" C& |* J( a; w
    68.            System.out.println(e);   
    69. / L% o; m0 J! ^
    70.        }    9 U7 F% `2 e0 f: L/ y\\" h# [9 x% K
    71.    }    ( ^- ~' M; S# h
    72. }   ) F5 c9 \0 I- O) x- C

    73. 4 O& ?0 Z; A. Y  r5 [
    74. 6 g; x6 J0 d. k\\" p
    75. 8 i( C7 r+ l+ ?; Q! ?6 Y1 x
    76. (2)读Excel文件* G: h\\" w6 C# d
    77. & H6 r% R' Z( D; j: y

    78. ' E3 L. W+ I& W4 w+ F5 G) J
    79. package readxls;
    80. 5 ]# N5 Z3 y+ r  P/ U1 u6 a
    81. ) D: L: F3 O: e) _0 |; M/ k
    82. //读取Excel的类    & n6 J2 y; Y7 k- M7 ]$ T9 Y  \
    83. import  java.io.File;   + \  b0 u( }9 C* Z4 H. ^
    84.   
    85. / r, }/ T/ G& X
    86. import  jxl.Cell;   
    87. 0 K# U; H' v+ m3 ?& W) N- A
    88. import  jxl.Sheet;   * g5 n! ?$ Z2 k: _3 G\\" g
    89. import  jxl.Workbook;   1 K9 ~0 \) F8 k8 L$ z
    90.   \\" o! b8 C2 \. f' c# {
    91. public   class  ReadXLS   {   
    92. $ n+ ]9 s! l  E6 d7 J
    93.     public   static   void  main(String args[])   {   / v- ]& M4 n$ F9 ~
    94.         try    {   4 @$ d\\" |& `- w( D0 e0 I9 d5 d
    95.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    96. 2 i, m1 k! U% e\\" f$ a; X
    97.             //  获得第一个工作表对象   
    98. + N0 X  T0 X9 Z1 ]
    99.             Sheet sheet  =  book.getSheet( 0 );   
    100. # E0 {1 T( L# v7 ?- [7 ~
    101.             //  得到第一列第一行的单元格    , S+ o1 S0 n6 \8 B
    102.             Cell cell1  =  sheet.getCell( 0 ,  0 );   0 O! h! W& Q7 j6 h\\" g1 A- }
    103.            String result  =  cell1.getContents();   + ~- _; [2 p5 [6 G
    104.            System.out.println(result);   
    105. $ {3 L3 H. r\\" U! [3 o
    106.            book.close();   
    107. # D& ?& j8 P/ \+ F+ n
    108.        }   catch  (Exception e)   {   \\" m5 O$ h% O3 `6 X* r
    109.            //System.out.println(e);   # J  `- v8 S5 y  f7 g
    110.         e.printStackTrace();
    111. & F. M0 z\\" y4 s) R3 S) q: N% ^
    112.        }    ( _0 _, E1 X. r3 w5 [3 d. k
    113.     }   
    114. ) E- O$ [% i- |- C4 G
    115. }# W( p# X7 z7 c% K: S

    116. . S7 W5 K, O1 b$ h+ Q0 l0 s
    117. 1 N5 o0 g6 {& z' t5 W
    118. + m, f! |+ k) d0 N: d

    119. 3 P5 W# I9 X% H0 p$ x; e+ {3 D
    120. (3)合并单元格、格式化单元格等' s- B5 u9 R( [9 {8 r

    121. / C* d! J- Y# g
    122. 6 g! Z2 g) v8 M* s& A
    123. //合并单元格并在单元格中输入内容9 l! s, E8 \- o2 @+ p2 J
    124. ( }9 _4 L9 h0 T5 S1 R& o
    125. package additionalproperty;# m# t1 J\\" \0 s& X$ X9 s) M1 W6 r
    126.   B$ e9 v: ]9 U5 t4 W
    127. import java.io.*;2 |7 I# }) w( U1 Z0 `6 l
    128. import jxl.write.*;% \: `4 Y/ `1 E4 j) Y* T
    129. import jxl.*;\\" Q\\" a3 V$ j1 ]2 G1 m- i' v' t* `
    130. . W, T/ ^. T. l9 G: O# H+ Y1 T
    131. public class MergeCells {
    132. % T- _+ c! O1 H
    133. public static void main(String [] args){
    134. ) |0 B' i9 `5 ?1 @7 a. t( q
    135.   try{
    136. 9 `& K& x4 S4 b\\" O; N
    137.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    138. . a  L\\" T, Y5 W\\" d4 \+ P
    139.         WritableSheet sheet = book.createSheet("第一页", 0);, T( k1 j  P- ?9 w
    140.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格) L- n1 q) g6 [7 M
    141.    
    142. $ l7 U. ~% m. n7 \( ?
    143.         //设置填充内容的格式* [  ?( E4 D+ m9 F0 u; P5 \8 }% B
    144.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    145. ; n' M1 T* X0 p4 h7 \5 ~( C) u1 L
    146.         WritableCellFormat format = new WritableCellFormat(font);. w9 ]; L* C) b. L\\" M8 C
    147.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中\\" U0 ]3 h) v# L
    148.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    149. & k4 a* F8 K# \$ u0 {- i0 s\\" S
    150.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    151. 3 R9 [2 q+ b7 c& H! {\\" ~5 ~
    152.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式2 R4 k3 k/ j! B( a\\" I\\" v
    153.    
    154. 4 M6 \1 g* G; A4 S% p1 _7 f4 s( Q$ @! }
    155.         Label label = new Label(3, 3, "合并", format); //添加内容9 c+ w1 t$ i5 s' b, N
    156.         sheet.addCell(label);% o- [/ K/ {- N
    157.         book.write();5 b1 y: \! x: g# Y% A, U; Y
    158.         book.close();
    159. - L\\" G% |! f7 B6 r' n2 H
    160.   }//end try
    161. ! y* o& ?/ e, A) B9 N  C
    162.       catch (Exception e){
    163. 3 v! f& W* o( N
    164.            e.printStackTrace();
    165. + s* i0 N& V0 r* n) O* R( `
    166.        }
    167. : Y. y. W; N- [& W/ ?
    168.    }) u; ]- u( T* W( J. A
    169. }
    170. ; A/ _! w  A0 _5 X6 C; H
    171. 7 c. p4 z8 @; i' I5 Z; S4 Z+ S

    172.   }; x. V5 A4 v% A

    173. + Q, S2 R/ j# b# f* v
    174. (4)添加图片
    175. 2 U8 w( z  r6 {) R# l+ z# X1 y
    176. & X6 A6 @5 N6 F7 H# S  ?
    177.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。  S, U) R6 x! t) D, ~

    178. . |! |; C* o  ]7 B
    179. ) e8 s  e: }2 T! G; r
    180. //在工作表中添加图片
    181. : K- c$ |/ n! a: b- [
    182. 7 H7 z$ T; e5 Q8 S
    183. package handleimage;' d! R+ U\\" g+ |( O$ }& y& S
    184. , i7 e\\" F' z* E  y) k* F% a0 M5 |
    185. import java.io.*;
    186. ) x* ?: H\\" U- e  R1 Y+ C3 Z
    187. import jxl.*;& g) }: c1 J# y
    188. import jxl.write.*;
    189. 3 Y; b' I0 j\\" t4 O& H

    190. ' b* m6 S# I9 t
    191. public class CreateImage {
    192. 7 P* c+ l8 K  T7 e: @' ]1 E9 O
    193. public static void main(String [] args){
    194. * L$ X$ s' \8 i* f! p0 U$ p
    195.   try{% I9 A8 E, _: @9 A1 Z6 @3 e0 n
    196.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 ^0 G& K- g9 W! A! W1 w
    197.        WritableSheet sheet = book.createSheet("第一页", 0);
    198. , `$ K* R' c9 u8 q+ x  @\\" y/ E9 v
    199.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式  j% E! g8 C# j\\" Z+ Q
    200.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));1 R$ w5 G4 a; z5 s
    201.        sheet.addImage(image);  //添加图片: c* ?: k$ i8 k/ u
    202.    8 O2 E, r5 F  f9 @' Z* n
    203.        book.write();
    204. 6 ~) P, V4 _8 v8 U9 x0 _
    205.        book.close();\\" v& y! I3 N5 |) y& f) W5 J
    206.       }//end try; b$ L' X; s3 [
    207.       catch (Exception e){ e.printStackTrace(); }
    208. 9 j! o9 z/ V& W' C' ~$ N  t, W) h5 g
    209.    }* n7 G+ o( F: s- b; n$ ~1 L, V
    210. }! P  X; U4 N3 R& M1 K; b( I7 G4 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-21 16:57 , Processed in 0.434416 second(s), 61 queries .

    回顶部