QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2352|回复: 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的使用方法。/ N( _2 R* z2 Y. H( v: I3 A* M- u. J
    2. , ]  d. P9 y. D8 V3 c0 J% c0 O
    3.         1、环境配置1 s6 d; m9 }9 l& |' f0 N$ Z, {
    4. 6 x6 L: W& w\\" i* G
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. # r7 @: e- g( I# f- ]2 C6 t
    7. ! D$ k- {3 p  y# e1 J( W
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. 5 ~- J- R; q1 o; r) Z

    10.   n. q8 S5 a# r/ w+ e
    11.        (1)jxl.jar  —— JExcelAPI 函数库;
    12. - }+ f) H! k- k# ]5 J7 t, \

    13. . ~& K: p1 u& p. s8 d5 W( M1 |' z
    14.        (2)docs  ——  帮助文档;
    15. & M: J& W/ A! A: w, i# j; S

    16. ) f8 E# p' P, K# l- T
    17.        (3)src     ——  源码文件夹;
    18. ! @: o+ `: P, r' Y$ z8 A\\" u
    19. 0 l( d: L( _& d3 \. h! q
    20.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。1 w; V% O! @, m3 n7 F2 k9 ~* ~3 \4 Y

    21. ( z) Z7 N# p$ s. r9 E& k
    22.         2、Excel基础操作实例
    23. ' U  [+ [1 j+ Z- r8 ]% I+ Y9 W\\" `/ ?

    24. - I/ o) h& @: \9 ^/ J  n5 P
    25.         (1)  创建Excel文件   
    26. # a! B1 C6 Q1 t
    27. - i# X) ?( E3 E$ _
    28.   /**读取Excel文件的内容   
    29. 1 ?7 j: M: m, \! G4 v0 r: n
    30. * @param file  待读取的文件   8 L4 j# Y! \7 [. N
    31. * @return   // 生成Excel的类    */
    32. + C* U) [  K/ ?. T
    33. package createxls;
    34. 0 _\\" [\\" L8 v* j\\" p( w

    35. 1 [& a; B7 V6 u  D1 w/ B) I
    36. import  java.io.File;   
    37. \\" l: d+ W# d( {! f1 R
    38.   
    39. ; z8 [+ c: c) m
    40. import  jxl.Workbook;   ( ~! O  O' N0 ]
    41. import  jxl.write.Label;   
    42. \\" X$ a. r* J( E: d$ t5 g( r
    43. import  jxl.write.WritableSheet;   
    44. \\" @) |7 U3 r' D& [, t* u0 B) E
    45. import  jxl.write.WritableWorkbook;   
    46. + F+ P, L- c' d
    47.   $ Z5 V# v, L, N, g' C* j
    48. public   class  CreateXLS {   3 b7 d  _8 b% a( X\\" y
    49.     public   static   void  main(String args[])   {   
    50. 1 I7 n\\" N9 w1 t- Y
    51.         try    {   ! k3 P4 _' C* \2 a' X
    52.             //  打开文件    & z; X* h& I( K4 w% ~: B
    53.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    54. ! o; G. o- ^3 y. \
    55.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    56. 7 i5 D( `5 V2 v\\" o% B# z: v& M
    57.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   \\" ?0 V# O) K% ]' h) M7 ?
    58.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    59. / S* s, H' ]* S! M4 X
    60.             //  以及单元格内容为test    ' }8 h3 p; A& ~; t3 ]# u/ K* T
    61.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ; L% R) l  W: z5 R; g+ M
    62.   
    63. - @, B( ]\\" m3 n4 {1 I
    64.             //  将定义好的单元格添加到工作表中    ; d0 e7 \4 Q9 t
    65.             sheet.addCell(label);   
    66. ( ^0 P% Y; c4 v  d5 m& X% T6 o( F
    67.   ; ~4 U0 j* a! Q* q6 F& }3 l
    68.             //  写入数据并关闭文件   
    69. * W6 H) X; d1 s2 ]% Y- Y0 u7 W# {
    70.             book.write();   1 C  j5 _( S! k$ X' o/ ^- i
    71.            book.close();   0 u4 l- w' C) h* b
    72.   
    73. 7 `& Q, D7 S! u7 R  L
    74.        }   catch  (Exception e)   {   5 ^7 G* z7 m+ Q9 e9 O- |
    75.            System.out.println(e);   
    76. 0 e0 N3 P8 T- z- A9 h7 q
    77.        }    5 F, ^4 q% L2 K
    78.    }    % U\\" T* i% f. t( r
    79. }   
    80. 2 h\\" c  t- H2 t\\" @
    81. . z8 N% U/ @% f& Z. Z9 G: I8 B

    82. 5 c1 }) c. U) d4 w! @- g

    83. ( o. W9 r: S% B' a2 j) p9 ~
    84. (2)读Excel文件# e( [/ S! l. ~( P5 S
    85. ) d# m7 b7 G  S1 P  e

    86. , ]( f. v8 T- A) H* p
    87. package readxls;
    88. * m, w; w* ?3 O/ E8 I8 L
    89. ! _3 S/ l/ A, L\\" J6 V6 a, j
    90. //读取Excel的类    : p* n4 _( o$ K: S
    91. import  java.io.File;     E0 Y, W5 m. z3 Y( o\\" p
    92.   , y\\" n9 m* ?( Y, m) `. u
    93. import  jxl.Cell;   : ]* A# f4 n\\" b\\" J4 o9 N- ^
    94. import  jxl.Sheet;   
    95. # d5 b$ M) D1 z: E
    96. import  jxl.Workbook;   0 e3 R$ ]7 ~4 h. C) \
    97.   7 h  G9 m6 J, e7 k. X
    98. public   class  ReadXLS   {   - A+ H  i1 o$ k6 a. T( E$ c
    99.     public   static   void  main(String args[])   {   7 M8 V5 O+ }$ X9 {% e; z
    100.         try    {   
    101. 8 h8 d* ?. P4 I6 w% h
    102.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    103. 1 z, ]8 Y+ E6 M: w+ S* B& S
    104.             //  获得第一个工作表对象   
    105. & ?& \( A$ \4 q/ E; {
    106.             Sheet sheet  =  book.getSheet( 0 );   
    107. - ]: E' s8 y. B' J
    108.             //  得到第一列第一行的单元格   
    109. ( R0 M2 Q\\" `4 ^; ?' a
    110.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    111. , i* {' Y+ i# R- d! Y, i, f4 a
    112.            String result  =  cell1.getContents();   
    113. 5 R& U3 \8 S) j, G* U
    114.            System.out.println(result);   * K; q/ {/ h7 D2 g& H9 ?$ O: V& P
    115.            book.close();   
    116. 6 B\\" U, W$ T; `
    117.        }   catch  (Exception e)   {   
    118. 8 @$ L) L& }8 r+ P7 t8 k
    119.            //System.out.println(e);   
    120. ( d! P4 K2 m, e( p
    121.         e.printStackTrace();3 N0 v$ T) E- h, G\\" o+ q( q
    122.        }   
    123. ( d7 X# R6 N% @3 |! `
    124.     }    $ I! f6 z7 I% f) F+ W
    125. }
    126. / p; y! L- a% n7 E: V
    127. - K3 F1 K# X- ^% u9 A

    128. : f: D* z% k+ `* V  u% {

    129. + m9 I# Z4 q0 B
    130. % \$ ^1 p: w  a* B( {
    131. (3)合并单元格、格式化单元格等
    132. 7 @* x6 d! o\\" e- q5 Y

    133. 7 g! ]0 b3 ]1 k& F! P
    134. 1 h( J$ k% k- K
    135. //合并单元格并在单元格中输入内容1 W% `* L7 E7 R' U

    136. \\" {* ~9 S3 f! e9 [\\" }
    137. package additionalproperty;1 e- {% `% E( {/ l) O

    138. \\" m' g1 N1 Z( }5 I\\" ?7 G3 A
    139. import java.io.*;5 l  F8 k1 N\\" j
    140. import jxl.write.*;- V9 ^  G/ W5 [* G' b0 ?
    141. import jxl.*;
    142. 9 q6 N2 X1 j+ p4 Y9 |# b8 t6 T
    143. + |3 j; H# |: b) q
    144. public class MergeCells {6 j8 D$ L0 a4 k\\" G8 U
    145. public static void main(String [] args){$ E/ J4 q; c& p/ Z
    146.   try{
    147. . u1 N/ p5 f- B1 e8 U/ I7 B% A8 i7 \
    148.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));6 b- M) o; B\\" E* o3 C) J
    149.         WritableSheet sheet = book.createSheet("第一页", 0);
    150. $ n2 C& Y) T3 O
    151.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    152. 1 `. g) \: Q: f0 p
    153.    $ T( E4 m4 B- y; E  v
    154.         //设置填充内容的格式
    155. 0 g5 v4 }' O! ?1 J2 z
    156.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);5 C. T5 R8 D$ S( _. {* j/ P2 v
    157.         WritableCellFormat format = new WritableCellFormat(font);; n0 e\\" G/ k0 t7 V8 c
    158.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中, B2 b7 Y\\" I/ P1 a
    159.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    160. 2 u5 _' R5 ^\\" p! U
    161.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式, F: c8 {1 @5 k+ o
    162.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    163. . o6 |# N% b9 _% h
    164.    
    165. 8 o# G  u) _- \
    166.         Label label = new Label(3, 3, "合并", format); //添加内容+ Z+ V1 {* v' E% J$ K
    167.         sheet.addCell(label);# ~4 u. l& |9 x2 u$ t3 A% }
    168.         book.write();6 N9 ?! w! a+ R. u
    169.         book.close();! U8 y0 O) R2 y2 c% @. W6 T9 m& p/ n
    170.   }//end try
    171. 3 E5 M: P4 b% }/ s: A, |8 Y- s
    172.       catch (Exception e){: w3 u+ L# m& E% M
    173.            e.printStackTrace();! ]6 z+ ^+ m. F: Y
    174.        }/ @& X: V6 |. r# m/ Q; l, l
    175.    }$ X) B( @1 R( h\\" A
    176. }
    177. / B  {\\" z6 ?8 u

    178. ( I9 V6 A6 w0 A6 J) \) X

    179. 6 H  I( ]6 _; H: Q) {

    180. * k4 O- c& ^/ K7 k# I9 ~
    181. (4)添加图片
    182. 3 t* P( C+ ~; b4 S4 Z
    183. & k3 F7 z+ h+ Y
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. + J: h  ~\\" @. c6 r& I) j% b\\" Y
    186. / c3 }, Y7 I7 V9 _- f; N; U7 C' V

    187. 2 P7 p( b* w, {9 P\\" I0 j9 V
    188. //在工作表中添加图片
    189.   }$ ^* R( |8 x9 `7 D( T
    190. 2 i8 t  ?/ c! F7 u\\" P+ K  C8 O
    191. package handleimage;5 U1 N4 p! V3 C, Q/ \: K5 F/ j8 W
    192. * F, K! k8 J; x( R3 n2 G
    193. import java.io.*;
    194. ' c! t\\" J. p/ @
    195. import jxl.*;
    196. ' A$ E* a6 n4 O
    197. import jxl.write.*;1 u8 T& w: C( F3 |6 d- k, l
    198. * ^' a5 R8 R: c5 N4 k  ]
    199. public class CreateImage {
    200. + o. y' Z: `. O0 ^0 g: y
    201. public static void main(String [] args){7 ^, n$ i) |3 Z2 q
    202.   try{
    203. ( C) S+ D\\" @4 {7 I: h
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    205. 9 Y) Q; B0 M: h+ t8 Q' F  `3 G
    206.        WritableSheet sheet = book.createSheet("第一页", 0);3 E\\" M, K0 W+ h- B8 U( s: y1 u6 M+ V
    207.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式7 E0 Z  V7 c! g% f3 {3 |) @& H
    208.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));5 N( u9 t1 U9 f
    209.        sheet.addImage(image);  //添加图片) I7 F( _2 [0 ^% D  z
    210.    0 {- }6 @3 Y  h/ j4 Y# H
    211.        book.write();% Q  [  l5 A( G2 s
    212.        book.close();
    213. 2 `6 N. |2 w9 X  ]0 x  d7 R  Y
    214.       }//end try
    215. 0 x4 V$ B+ ~) k
    216.       catch (Exception e){ e.printStackTrace(); }
    217. ) v* Q1 t2 f; f0 g. q2 S
    218.    }
    219. / q+ ?! _2 P6 P0 ^# m& y
    220. }' C; j$ E: P+ g\\" b5 B1 Y
    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-1-12 07:05 , Processed in 0.741060 second(s), 66 queries .

    回顶部