QQ登录

只需要一步,快速开始

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

【转】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 G7 c# I\\" k' b' i! v6 S

    2. / P4 h9 }6 L5 n: J+ H
    3.         1、环境配置5 U/ V) C9 \3 o) o& f# \
    4.   v7 r4 Z\\" o& V* ^\\" r* F& V\\" D
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. ; d- L2 L( l9 t% Y\\" ]) f& y
    7. # D9 v* @- w6 t2 A# j
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:) [& k8 Z, E' x  ?0 Q6 c) B! u! L

    9. , ~\\" p- a- a# {& s4 n$ Q* W/ `$ a% T
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. * k: I1 ~( f. B

    12. - E9 \% M0 H& j, j& S
    13.        (2)docs  ——  帮助文档;
    14. $ j7 ?: ^: |0 o% W  w# {, b5 T

    15. 7 {2 k7 u3 A' t$ q% M' h( b0 Q
    16.        (3)src     ——  源码文件夹;
    17. / n% {7 g: [# y: b2 n* O
    18. ; l( |! y% y& c7 i5 o' q
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。# T, F6 F+ t/ s8 @- V( ^
    20. $ m- X  C3 P0 {
    21.         2、Excel基础操作实例\\" x/ i9 N\\" u+ O/ Q# z; j+ |) M# k& g
    22. # L7 ~8 @+ y9 u6 \\\" _\\" @2 \
    23.         (1)  创建Excel文件    + k) F2 N2 @8 p
    24. ' k9 X9 V) O' n/ P2 x7 ]
    25.   /**读取Excel文件的内容   . b! K# E$ u) l1 A
    26. * @param file  待读取的文件   
    27. ; ]5 g* o4 G6 r5 D
    28. * @return   // 生成Excel的类    */* D9 i; f) e: I! F$ b
    29. package createxls;
    30. + m7 z8 a( |1 h7 b7 ?5 U7 h: C# b# w

    31. / X+ A$ ]+ n& M0 c2 M$ e, J
    32. import  java.io.File;   
    33. 4 w- R: x, H  ^9 h; R5 @0 l
    34.     B* a* d/ t3 T7 M$ ]
    35. import  jxl.Workbook;   : }& L) O7 l  ~3 \2 m% p
    36. import  jxl.write.Label;   
    37. * C' H  N4 z  z: I) y: x6 X
    38. import  jxl.write.WritableSheet;   ' F: o% b5 D! o# n
    39. import  jxl.write.WritableWorkbook;   ) p/ v$ T! F/ P4 t/ a
    40.   
    41. 3 [! S; W; I# O* A3 }6 o' B1 s  a4 P
    42. public   class  CreateXLS {   % N& U1 F& \* C9 A7 O# s
    43.     public   static   void  main(String args[])   {   
    44. / y( k5 C+ B: `+ V5 J& w
    45.         try    {   ; `& K5 T1 X5 r+ q  N/ t
    46.             //  打开文件    . ~# F  c1 O# K5 B  G5 k7 e3 d2 ]
    47.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   # x! a( c+ [6 }
    48.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    49. ; ?& j9 T5 ~+ x; J$ Y9 l8 s
    50.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );     @$ v! x, A2 [: b
    51.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   , n+ Q4 `- r5 X6 u! e
    52.             //  以及单元格内容为test    \\" I/ g/ n! N( m, B
    53.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    54. / `* @7 ]: K7 |* D
    55.   6 J8 s8 d6 T$ S6 n* v/ T5 \
    56.             //  将定义好的单元格添加到工作表中    7 t: s# s\\" h9 E- ?
    57.             sheet.addCell(label);   1 n- {) H( U! l2 G4 w9 }
    58.   
    59.   x3 n7 {- Z' u4 ?& t2 E* L
    60.             //  写入数据并关闭文件    1 J. f( {1 J3 G8 ~( j
    61.             book.write();   
    62.   p\\" J$ b% B! g
    63.            book.close();   0 D8 X, n/ g; W8 w. b$ p
    64.   - A. S/ _6 ?3 I5 a
    65.        }   catch  (Exception e)   {   
    66. $ M* E- p% H4 ?$ }+ h- f2 @8 G
    67.            System.out.println(e);   * w9 i) s% n% H8 K; ~! U( T, B( Y
    68.        }    6 v+ M+ f  V8 Q+ v
    69.    }    4 ^: K\\" |6 @! q
    70. }   
    71. 6 R. x4 z( B' S. Y

    72. ( m# M7 Z% Z% A& |! A/ x: c& y
    73. 1 v( f1 E- _- L& |( d: _  [

    74. * @$ b: v0 I; Q8 e\\" Q- @
    75. (2)读Excel文件
    76. ; Y- Y\\" S5 W, a' I
    77. 7 I0 F2 N: @4 v2 W

    78. 6 h0 s3 X  B\\" V, D( u- N
    79. package readxls;
    80. ; j: U9 G0 \3 Z

    81. 7 `' G! u- H- q\\" ]' ~% R$ I
    82. //读取Excel的类   
    83. $ d  l8 q( |# U$ @2 q2 V
    84. import  java.io.File;   
    85. % g% `, J, h5 }  @. k  o
    86.   9 i0 e# ?4 ~) g  a3 r. l
    87. import  jxl.Cell;   
    88. 4 x' }( M  ?3 f3 Q4 V0 m
    89. import  jxl.Sheet;   - Y# o( v* B- P; X
    90. import  jxl.Workbook;   2 p2 E1 q; I8 `( b& l! l* x3 i
    91.   
    92. - P/ u7 `0 t+ v- ]2 d4 y# S
    93. public   class  ReadXLS   {   % u2 H4 ]* N7 z: t1 e/ E! w
    94.     public   static   void  main(String args[])   {   
    95. . K  a4 N, K# ]
    96.         try    {   
    97. . X' z! v5 x) {+ b* |# `; R
    98.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   # ^( k/ u5 ]. Z, d! R7 E\\" Q) N
    99.             //  获得第一个工作表对象    3 W' H. x5 F. J& ^: |+ K7 @
    100.             Sheet sheet  =  book.getSheet( 0 );   ! F1 K/ e: @1 W, _4 h8 \9 p0 L$ k
    101.             //  得到第一列第一行的单元格    8 R1 Y8 A/ F! y8 A3 D1 F
    102.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    103. % P: X& v- Z# ]1 \: u2 q3 E
    104.            String result  =  cell1.getContents();   
    105. 5 I; B2 ]& Z8 \) B
    106.            System.out.println(result);   4 `0 T5 d% s\\" Q1 a# u\\" a% \, H/ F* B
    107.            book.close();   + k& `\\" N+ J; K# F5 |
    108.        }   catch  (Exception e)   {   
    109. $ ?2 M9 |0 p0 L\\" b\\" ^
    110.            //System.out.println(e);   
    111. 6 X: R$ p/ ]! k# R- c/ n& U
    112.         e.printStackTrace();# D4 N& D* k; ~$ ?. o+ V) t
    113.        }   
    114. # \: e9 O- o\\" }) G
    115.     }   
    116. % B& H1 n6 ~\\" q, @
    117. }. L. {- {# w* U, M
    118. 1 Y. a5 r, g\\" |. G  `$ @

    119. 7 F% \- J& Z- e. {1 l& B

    120. $ v2 W9 `4 B  u6 ^+ f3 M
    121. 8 J+ e  V& E0 Z5 x; v* i
    122. (3)合并单元格、格式化单元格等% J, h: _: C) J; L% @) j6 @
    123. 3 S8 }3 R# h  q+ t. j. Y
    124. ! V\\" O: g# x( r. q3 M4 @# j6 Y
    125. //合并单元格并在单元格中输入内容
    126.   o8 H  U+ V2 g* Y; o6 _: G
    127. $ g! w1 ^7 c8 H+ U, K/ p/ N$ G* Z
    128. package additionalproperty;. o0 u' [7 ~( f& L! |; ?: u
    129. . |1 Z6 u' c7 I, r& y' H: }
    130. import java.io.*;$ o9 q. I! v0 \% e# s) J
    131. import jxl.write.*;\\" D; k7 E\\" V: G; v: G' n
    132. import jxl.*;* }4 H3 c3 @! X. e' x! g! g
    133. ) e6 _3 m9 N0 V' y; A
    134. public class MergeCells {
    135. 0 [# X8 s% J3 K2 v# N# F% z
    136. public static void main(String [] args){1 d  c3 N1 n9 n& I; C% T5 {* g
    137.   try{
    138. & H  A' n\\" v. Y+ O1 F3 j
    139.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    140. 8 Z+ @1 n6 h+ D2 D9 p
    141.         WritableSheet sheet = book.createSheet("第一页", 0);
    142. : U( T. K! g  E  ~% ?: X& d
    143.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格: a' |) |. l8 W) g! e
    144.    
    145. : `& g0 q$ k6 A0 r\\" U& A: ?  S
    146.         //设置填充内容的格式2 ^( K; v0 K: k
    147.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    148. / R* R2 E+ r0 [$ ^
    149.         WritableCellFormat format = new WritableCellFormat(font);
    150. ; j$ c0 V\\" K- ~7 a6 l2 k
    151.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中: x( ?7 B; x$ y* \. y
    152.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    153. / D\\" n5 e3 h  d7 X; D
    154.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    155. * d6 ?' x4 R3 v+ V8 x+ p
    156.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    157. ( V6 X& V% l0 M4 Q% M7 w# j3 Y
    158.    0 B3 g' p% k. |+ f
    159.         Label label = new Label(3, 3, "合并", format); //添加内容
    160. ; [6 t. I# g0 e4 P\\" ?( v
    161.         sheet.addCell(label);
    162. 2 M7 c- G, @- n: M# P
    163.         book.write();
    164. 4 q8 z3 g+ |/ g# Q: J  E
    165.         book.close();6 }( T( ]& X4 Q% g& l4 d, H. O! P+ t
    166.   }//end try7 e% j5 g% _( V# a) f; O' S
    167.       catch (Exception e){* m! B) |( n# j. U& D) m; L8 N8 G) r
    168.            e.printStackTrace();/ G8 `+ P& o: u. Z& Z
    169.        }9 r3 R: @\\" J& b& U0 }
    170.    }
    171. ) ?) [1 U, _. k6 ]  {. R
    172. }
    173. . k: V$ ]/ u, H& X

    174. - }: v. k! q! K- I7 G1 V
    175. ) K+ W1 V: c; p4 ?& b
    176. 7 g' [1 R, ]- D, a; v
    177. (4)添加图片
    178. ) d% G: M0 J1 x
    179. * r4 Q0 O. p/ a  @% S2 ~
    180.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    181. % ~9 a0 w# w1 R4 |

    182. \\" L' e1 u; Q, l, B! ^! J0 t4 g- }

    183. : n( l- l\\" s8 n
    184. //在工作表中添加图片$ @1 K6 M; @9 x6 V% [! Y7 W
    185. , g\\" B. I) }7 k- S* x/ U# f2 y, i
    186. package handleimage;: Z5 v: p+ H0 @2 O1 q
    187. \\" h! f9 D& |' R% ~
    188. import java.io.*;
    189. 0 i\\" @% y- e- g; w9 d% m0 @: p/ n
    190. import jxl.*;
    191. ' C5 O0 e% K. e  D
    192. import jxl.write.*;! \6 d7 x4 {& Q4 T
    193.   L8 Y( m+ X& O) B) A( _/ G
    194. public class CreateImage {
    195. % |$ Z; B% b6 G8 D3 V
    196. public static void main(String [] args){( m0 f4 E; @  ^8 Q
    197.   try{% a$ q$ t6 e# D$ \( B
    198.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    199. 6 |4 @* r2 [- O9 A# B' N( v
    200.        WritableSheet sheet = book.createSheet("第一页", 0);: X4 K( {/ j5 g2 N4 C
    201.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式/ j! \! g4 k, m5 z0 {! a* V
    202.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));' a' `3 ^% W& E$ t) Z3 V9 @2 ?
    203.        sheet.addImage(image);  //添加图片- Z+ ^7 W; R0 K\\" J4 o
    204.    
    205. # Z\\" k7 m$ T) Q
    206.        book.write();
    207. / I6 c) Q$ l% p$ V5 A; }' p2 J8 R; g# H' w
    208.        book.close();; k$ }) D  r0 u& s' y* o
    209.       }//end try, L! ?( u+ n- Z3 Y# Z- j
    210.       catch (Exception e){ e.printStackTrace(); }3 q4 P/ S1 W+ ^  c! q
    211.    }
    212. 3 N- O- ]' u7 ]/ I! M
    213. }' [+ Y/ j! S: D: C5 `
    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, 2025-7-31 09:55 , Processed in 0.793677 second(s), 66 queries .

    回顶部