QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2361|回复: 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. ; M1 [9 n0 y8 [2 L) Q8 C- ~( }

    3. 4 p1 L  ~/ ?! K: x/ a3 Z) M* M
    4.         1、环境配置
    5. 2 m, [+ z3 B. e4 C5 u: z  q

    6. $ O% t. q7 x6 k
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html9 u  s8 d! W\\" ~! G$ B
    8. , X4 Z. A2 l, h( J- U8 c% [2 A9 t& W
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:\\" L( s5 K8 C1 ?0 l( R/ l; f  {; X
    10. 1 L6 c( P3 \1 }$ s5 l' @
    11.        (1)jxl.jar  —— JExcelAPI 函数库;
    12. ( Q& \6 r/ s  K

    13. ) Q& y& ?9 d2 l% ]
    14.        (2)docs  ——  帮助文档;% C7 C0 s& |# ~

    15. ! |3 }2 X& U) I
    16.        (3)src     ——  源码文件夹;
    17. 4 P8 i2 h* D' J( s8 g

    18. & d/ Y/ P& F7 ?, W# O& V- g
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. 3 s- {& p0 t% p/ F8 _# ~

    21. / J; f5 ^) P/ R
    22.         2、Excel基础操作实例
    23. 4 n+ [$ N2 Y# I+ ^, _7 e: q

    24. \\" K\\" ]\\" X9 I: k+ Q
    25.         (1)  创建Excel文件    ; E) v\\" C( H' L7 ?
    26. ( q7 ]# k, J$ b
    27.   /**读取Excel文件的内容   4 J  l( K4 m5 b
    28. * @param file  待读取的文件   % w5 W. k\\" T- |: l& v6 `5 g, ~
    29. * @return   // 生成Excel的类    */# ?5 Q0 R7 M) ^\\" a3 @
    30. package createxls;( z& E' p\\" Q& ?( z2 e# \1 e: O

    31. + _0 L/ ^. c+ d# b& ~
    32. import  java.io.File;   
    33. \\" p& H  V, q# H' }8 ]
    34.   , O; l\\" I\\" u  A; m& J0 V3 E
    35. import  jxl.Workbook;   2 H6 N( U/ ^8 y/ i2 w3 W! d
    36. import  jxl.write.Label;   
    37. 3 p7 d* Y, e5 g, m
    38. import  jxl.write.WritableSheet;   
    39. 9 w) h2 W! q  g
    40. import  jxl.write.WritableWorkbook;   ; R' R# ]/ {% K$ e5 M' w
    41.   
    42. ' |+ j5 W; @4 h6 p) X
    43. public   class  CreateXLS {   
    44. % M' b1 P\\" C8 b
    45.     public   static   void  main(String args[])   {   5 @+ _' A: l5 M% X
    46.         try    {   
    47. # s, Y: }( p6 f) c/ W& Y
    48.             //  打开文件    ; n- Q- a! I# u& e( w- w8 n2 s) A& |
    49.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   \\" I# [3 v6 K# Q( r. C1 x, {
    50.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    51. # f  ?# H) h+ v9 N
    52.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    53. * u8 j& q2 u+ d- s
    54.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    55. ; v7 m& r1 w; O
    56.             //  以及单元格内容为test   
    57. ; ?) Y% b\\" U; ~9 ?5 p
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    59. 4 y% c* q* j% i4 d
    60.   - i: R/ L. |  Y4 P# `& Y: Y
    61.             //  将定义好的单元格添加到工作表中    . T3 q, H3 O1 L4 T+ R' D4 e
    62.             sheet.addCell(label);   
    63. 0 r/ \8 {/ S7 C; w8 e3 ^5 m) T; E
    64.   + @3 v; C/ ~. b5 t0 j, J* q' y1 n
    65.             //  写入数据并关闭文件    4 s8 B9 A+ q: D3 O7 f9 T
    66.             book.write();   & G% [* e+ K7 V' d
    67.            book.close();   \\" e3 U6 ^7 e8 k8 @- |; R
    68.   
    69. 1 |9 Z+ F2 ?\\" M* o9 Z7 |
    70.        }   catch  (Exception e)   {   + C# j; B- x+ |; g
    71.            System.out.println(e);   
    72. , i8 E: u4 _; g1 W
    73.        }    ( |) F( J9 ^% b6 ?! l9 f3 w
    74.    }   
    75. + g1 u# E. P$ k# I2 i, A3 G9 ^
    76. }   
    77. 3 n# s/ b; W\\" C0 c; n3 x

    78. , V, C# ?0 d/ \( @3 I/ n

    79. ' B  W' R/ p, D
    80. . l\\" |6 R  O, j# o% e* [: J
    81. (2)读Excel文件
    82. 2 [3 e0 A2 ]1 r; y
    83. 6 E! i0 h8 H5 n$ Z, f

    84. ( T! T: J. B+ S. J
    85. package readxls;! C/ Q: t/ \) V, f6 q+ H
    86. / a# O( E& L4 M, w3 W8 f
    87. //读取Excel的类   
    88. 6 u3 B! _0 E: P6 L7 k
    89. import  java.io.File;   
    90. % T# |\\" m3 b6 r  t% v2 U6 H) M
    91.   \\" V* E1 E. n+ ~; M/ J
    92. import  jxl.Cell;   \\" D' J9 b+ f( L: W
    93. import  jxl.Sheet;   
    94. ! k0 I: Z3 B& \7 H+ g
    95. import  jxl.Workbook;   ; y5 W1 o: o1 C\\" b6 @\\" C
    96.   * q+ p* H6 V- o+ A* f: [0 E! i
    97. public   class  ReadXLS   {   ( l$ |- J3 e9 m7 o$ H+ W
    98.     public   static   void  main(String args[])   {   
    99. , z5 L% R5 }+ a' v4 I
    100.         try    {   
    101. 8 }\\" X) c1 A& J7 J
    102.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    103. ) R# {' h  C3 S1 E5 c& G6 Z5 @6 X
    104.             //  获得第一个工作表对象    . ?! U0 J/ Z4 x
    105.             Sheet sheet  =  book.getSheet( 0 );   
    106. ) u+ c$ y& D! ^3 @- Y
    107.             //  得到第一列第一行的单元格   
    108. - R0 L- C3 h& M! s( j5 G
    109.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    110. . \\\" Y# V2 F$ I: e% f! `; L
    111.            String result  =  cell1.getContents();   
    112. ' d1 d7 E4 j) I9 t
    113.            System.out.println(result);   
    114. & c; a$ L% V4 [. K1 z$ _+ E8 D
    115.            book.close();   - p9 r' o6 a6 g
    116.        }   catch  (Exception e)   {     y8 g, L: O. p' R/ q1 M9 [1 R. o) D
    117.            //System.out.println(e);   , Z5 W3 ^- b3 y9 v' b' P
    118.         e.printStackTrace();
    119. 9 @* [) S- p# U! @3 y) ~/ G
    120.        }   
    121. 6 \* B$ y, U1 v% Y
    122.     }   
    123. % t3 A* Y' {/ s, Z- B3 [
    124. }  C- ]\\" q  |  D* h
    125. ! M) f& v) |0 Y
    126. 7 _$ r: N( W( O+ _3 ^+ M

    127.   t' c4 }! f  C9 _2 z* d, G* N6 x
    128. 5 Q8 \* d8 t& k
    129. (3)合并单元格、格式化单元格等8 b6 b; Y5 C0 b! ~8 @

    130. 1 `5 T4 D( p2 h* g( j' o

    131. - M. ]1 g% T, b
    132. //合并单元格并在单元格中输入内容
    133. 3 y2 D6 N! `0 F; [

    134. * ]. o- [1 E\\" L2 n1 J; `# w
    135. package additionalproperty;3 W, r$ l! h# y& d9 ^1 O* l

    136. \\" z8 w( M\\" u& f% J& o8 n
    137. import java.io.*;% T* ~! D& @- q
    138. import jxl.write.*;# H3 R/ _0 o1 l5 s# {, e4 |$ h
    139. import jxl.*;  r% G! {, F9 g) |& @) N9 h* K

    140. 6 K) l: S1 Q) H\\" _
    141. public class MergeCells {( d; ?8 `9 y\\" v' F$ y9 p
    142. public static void main(String [] args){$ r8 N, d% e5 ^- \
    143.   try{( I\\" i# W. {# a\\" d# Q
    144.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    145. $ P! o& _: w: `4 A' D
    146.         WritableSheet sheet = book.createSheet("第一页", 0);
    147. ! J. J  |+ a! T
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    149. 8 `+ T* g; k9 h- Y; p/ z
    150.    / k# ~, W  S9 l9 u# H
    151.         //设置填充内容的格式
    152. ! ?' W+ P3 C, ~+ V
    153.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    154. : \$ a3 {3 W4 M
    155.         WritableCellFormat format = new WritableCellFormat(font);, Q, x) q% f* v8 o& B
    156.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    157. ' S- t/ e) e: _! }
    158.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中0 N! X* g8 B9 l1 L  b. _1 s* e/ D
    159.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    160. : L\\" h# @9 _5 ~- U- D
    161.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    162. ( t! q/ W- N- k: b, ]7 ?1 l& O8 c
    163.    
    164. : V) W4 f7 |' O# B4 K
    165.         Label label = new Label(3, 3, "合并", format); //添加内容2 d/ U# k2 ~\\" z3 z) h: J5 F
    166.         sheet.addCell(label);
    167. ! ~4 J6 ^& e, r4 U. R* H
    168.         book.write();1 z& [! s9 m* a\\" k! ?  U
    169.         book.close();6 p0 [) ?9 F* ?! j! {, W  A) M1 B
    170.   }//end try1 H3 F# I* b( e' m3 A* ~4 E  N1 A
    171.       catch (Exception e){7 d# f, k0 @1 v1 {2 R* k
    172.            e.printStackTrace();' k7 Y0 v  n0 g. d1 p8 X2 R8 v/ c
    173.        }
    174. 6 p- N6 W1 J0 q' c* O) `
    175.    }2 i5 m# s& X- @0 w
    176. }
    177. , w5 [2 s4 `& B, N

    178. 7 ~# `# ~# v1 F

    179. $ N) J* }) _! f  y9 n: F

    180. - w' H3 l1 w. o+ |8 j2 b- i% _
    181. (4)添加图片# C& B0 {( n' T\\" Y

    182. ( H( ]( @. i+ _4 _2 O: a5 S* `
    183.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。3 v0 F7 n' \7 G8 Q% h

    184. 7 Q9 a+ o7 p$ O7 y4 m& u4 u2 G
    185. 2 w+ {9 o+ M\\" `. x% y
    186. //在工作表中添加图片! O' h1 F) o# t4 Y' g\\" c9 |/ \4 R

    187. / ^8 R. D( u. _. x( @5 k1 O& l
    188. package handleimage;9 W& k+ }, |) r# P
    189. + k3 k% G4 g6 U: E4 X
    190. import java.io.*;
    191. + c2 ?6 t$ J# h  O; A% t  Q) h- q; ~
    192. import jxl.*;
    193. 4 g: m1 o) V. h' ?+ o& D
    194. import jxl.write.*;; x+ m\\" S) c( _7 A) f
    195. % n. b\\" C( r' K2 c- H  e( @
    196. public class CreateImage {
    197. & Z. ?- r% f; N
    198. public static void main(String [] args){
    199. 9 ~# U( f: J+ ]
    200.   try{
    201. : I% W\\" d: l* _% T
    202.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));( b* C2 u: d/ y: C* L
    203.        WritableSheet sheet = book.createSheet("第一页", 0);/ T0 z  B5 p\\" Q. `
    204.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    205. 4 f! b8 w! X5 v; M( C
    206.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    207. . ~8 a/ F0 i2 z$ M' s
    208.        sheet.addImage(image);  //添加图片
    209. \\" ~; K, b\\" ?2 E$ G9 y% _
    210.    
    211. ) X; `# A% G; k\\" t  j2 i# U
    212.        book.write();
    213. 9 ?: {7 t& W$ ~3 d1 D
    214.        book.close();: ~2 \( H2 V. y, P2 W6 f6 P* u* p- Q
    215.       }//end try) E  `9 d# ?, p) @
    216.       catch (Exception e){ e.printStackTrace(); }
    217. 6 Q3 C: t\\" ^6 G7 B
    218.    }
    219. - Z  F5 q& o1 F! X1 I- ~
    220. }! H9 s. Q8 E2 L, |& h
    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:23 , Processed in 0.484969 second(s), 66 queries .

    回顶部