QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2421|回复: 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. ; ~2 z! c: Y2 W6 L! Y2 D\\" Y

    3. 4 Q% r& A3 Y* B2 d& R& z# X0 q
    4.         1、环境配置4 x$ T% z  F' Z
    5. / D/ \- c( B7 z& R. d, S
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    7. , O: m: o# x& ^% x4 F  S

    8. + j  T' _: |2 f) d% A3 d7 z4 O
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:4 W/ \* o7 x3 v* {

    10. 1 m- D. A$ N2 @2 k* _5 a4 e5 G
    11.        (1)jxl.jar  —— JExcelAPI 函数库;
    12. ! @7 c- b4 L8 C1 X
    13. 0 T8 g1 U; ?! g/ d- a, x4 g0 U  U3 g
    14.        (2)docs  ——  帮助文档;
    15. 6 v( K$ m) ]; @6 r9 [2 {1 @

    16. ( Y- L( F\\" j* n. [
    17.        (3)src     ——  源码文件夹;
    18. # Z9 l8 ~' y0 _

    19. & k- S3 w' B- U* \9 r
    20.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。: R6 V3 u5 G0 s* q9 _2 k. P
    21. 1 a0 {* D* T  m\\" ?2 W& f
    22.         2、Excel基础操作实例7 Y, R5 r7 y+ v, ]2 y: H
    23. 7 b3 W9 G+ s& c4 N* D4 ^& l# x2 E
    24.         (1)  创建Excel文件    5 [- N0 ~2 d- S1 ~8 t9 K
    25. 4 V$ t6 H6 }: T- M\\" t' }
    26.   /**读取Excel文件的内容   + q) E( O8 h$ ]1 F  `) C6 }
    27. * @param file  待读取的文件   
    28. & Q( r2 M- \\\" w' ]. x
    29. * @return   // 生成Excel的类    */
    30. 4 y! \! T2 K  n, u! d) d: \
    31. package createxls;
    32. 2 o% N: R6 d% W) P9 F
    33. 4 ^& H, u5 ]7 f5 |6 F7 J' v
    34. import  java.io.File;   
    35. * a: W. [+ s! W, M/ i$ S. Q
    36.   
    37. ( b5 V$ \  }6 z
    38. import  jxl.Workbook;   
    39. 9 d$ t4 N# T# I+ F& ]8 x
    40. import  jxl.write.Label;   
    41. ! S& `* D/ Y1 W& ~
    42. import  jxl.write.WritableSheet;   
    43. - O) K/ X9 L- p! j2 x$ |3 O
    44. import  jxl.write.WritableWorkbook;   , e5 C! Z) r0 I/ ~. |' X
    45.   
    46. 0 M1 }, \9 K9 w8 B3 t' p
    47. public   class  CreateXLS {   , G% H$ W! V% W8 T1 r7 x4 L
    48.     public   static   void  main(String args[])   {   
    49. - [8 X* B. e2 a% J( ]
    50.         try    {   
    51. % r1 j  g8 z1 q1 Z7 G
    52.             //  打开文件    ! P! p\\" I, o% L4 ?\\" H1 V. c
    53.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   . y\\" R$ E% o( Y6 G! A9 w
    54.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    55. 1 q4 m' D. ~1 l- X3 u9 |3 x
    56.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   ( y4 W! E$ N9 v8 S* q
    57.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    58. 8 b7 E8 `; Q; T$ \5 T2 A
    59.             //  以及单元格内容为test   
    60.   z( r/ k0 S- b
    61.             Label label  =   new  Label( 0 ,  0 ,  " test " );   3 p( u! o$ g+ U+ z( e. t
    62.   
    63. 5 S2 S5 a/ X4 z4 S
    64.             //  将定义好的单元格添加到工作表中    9 o7 Q. F! B# X3 }
    65.             sheet.addCell(label);   % d, l& W6 D- B7 M1 u4 ~  Q+ c
    66.   
    67. ) V: v$ \2 I# n* i; }/ x( g5 _
    68.             //  写入数据并关闭文件   
    69. / F! [9 m  Z  p
    70.             book.write();   $ b+ {# k# ]/ S( u) m2 P
    71.            book.close();   
    72. ' _6 T' k5 w4 {2 C
    73.   
    74. ( |/ l, j( e# Q- e
    75.        }   catch  (Exception e)   {   
    76. # P\\" K1 G) V; C
    77.            System.out.println(e);   $ r& o5 H2 I+ N2 W% J
    78.        }    ' e: C4 P7 n: ?\\" J& F! m! M6 n
    79.    }   
    80. 5 B; Z  e- _% k
    81. }   8 t5 R' u: V% X& v! t

    82. $ a# C8 W) w0 s% s, b) ~

    83. . K8 x$ u* [( b# o
    84.   l- c5 K0 m; g' [2 P/ B2 \: |. [
    85. (2)读Excel文件1 @& J+ k: e0 d! t
    86. 7 r% s2 G; z9 S! p
    87. 0 ?7 T( a8 Y\\" C
    88. package readxls;
    89. / H% J) R# p. t- Y- J  ]8 S3 W2 r, A

    90. # Y* p/ {1 ]$ q( w4 s4 U; Y' `, R
    91. //读取Excel的类   
    92. & ~9 q3 H  a( E  `2 t+ ~
    93. import  java.io.File;   ! T; V0 l4 p3 ~9 b& i; t- J
    94.   
    95. * F- E+ p7 K! O6 R
    96. import  jxl.Cell;   + v2 z; O9 F% B0 ]) z( Q\\" [
    97. import  jxl.Sheet;   0 w( x8 J6 C) X, w1 k# x
    98. import  jxl.Workbook;   # l, Z$ c% A6 c' {% o
    99.   ! Y, o) f# Y% m4 |4 b: ]& R
    100. public   class  ReadXLS   {   
    101. 8 ]8 p1 S9 V! O; a4 Y7 e' |# u3 z
    102.     public   static   void  main(String args[])   {   
    103. 2 h( b\\" `\\" _4 X. d% r
    104.         try    {   & f0 n  b, Q) E* Y2 H1 V\\" a
    105.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    106. 5 v+ _% ~; m( [7 m+ e% e% c1 k
    107.             //  获得第一个工作表对象    ; g\\" }  F4 |+ K& n\\" ]
    108.             Sheet sheet  =  book.getSheet( 0 );   
    109. 1 t/ j. m' r4 R4 ^8 n& Y& P* _5 r
    110.             //  得到第一列第一行的单元格    3 Q7 e4 x2 x& }+ a
    111.             Cell cell1  =  sheet.getCell( 0 ,  0 );   1 A0 H) P2 }5 O6 F. m) |
    112.            String result  =  cell1.getContents();   + U, j& _7 x4 A- u/ |# l+ M3 p
    113.            System.out.println(result);   
    114. - {1 E6 [- s8 G0 f* u! H
    115.            book.close();   
    116. ! J& L\\" `) h2 u# F8 l  i
    117.        }   catch  (Exception e)   {   ( k. C1 f\\" J, [' M  w% s5 i
    118.            //System.out.println(e);   7 `% E4 Y: C% l9 d# c% p9 V5 |' D
    119.         e.printStackTrace();8 d7 _; s& F+ Z# ~% ~3 \# s
    120.        }    ! v/ u6 P9 {$ q: p  T( l9 u1 u
    121.     }   
    122. 1 z5 t: x' @& Q* H
    123. }( n5 N* u; l( Q2 `. ~

    124. ; T8 C. l+ @5 @
    125. ) K) l8 s3 L7 x
    126. \\" p* K5 }) P: d2 x3 G
    127. 3 @8 g9 |, R4 f. G; z4 ?8 O
    128. (3)合并单元格、格式化单元格等4 R- G) H7 }! E' _

    129. ' j/ ~\\" p# k) D8 C3 E2 Z

    130. & \4 ]& ]+ U: X\\" e\\" f
    131. //合并单元格并在单元格中输入内容. T  h( F0 _  T- y, s, }
    132.   Y) R1 [! H0 K% m3 b' O1 K
    133. package additionalproperty;
    134. 3 x, \4 g9 H1 G+ _( y

    135. 0 x) s; _; }& l7 v2 Z$ N
    136. import java.io.*;\\" w. `7 j2 m3 r, ~+ x: F4 U8 a- h
    137. import jxl.write.*;4 }! f$ S8 t: `\\" g, X
    138. import jxl.*;0 E\\" ~3 A\\" z\\" J, X; o5 O\\" r
    139. 0 g8 [5 Y% P% k, {
    140. public class MergeCells {
    141. : _; Q0 a  r* k. b3 D+ U8 @
    142. public static void main(String [] args){
    143. & n9 ^( Z9 q$ K( j( v
    144.   try{- n1 F: b2 V: h; O. Q6 G
    145.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 w+ x- S6 o9 |- o; ^9 o
    146.         WritableSheet sheet = book.createSheet("第一页", 0);
    147. - G$ l9 [, @' }! r. b1 Y. t
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格+ D, S/ @: k, s6 H0 g
    149.    ' C+ W, s5 z' J- `8 ]# Q
    150.         //设置填充内容的格式\\" n# D# n5 L7 K! J/ E: z5 E
    151.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    152. : V9 J. R+ p3 L7 j
    153.         WritableCellFormat format = new WritableCellFormat(font);
    154. . ]- M3 g+ h+ P( m; N& a# v) @8 l; v
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    156. 3 v* {! ~! u8 J0 p
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    158. ; w2 M\\" m8 _! Y) R: G( z6 K/ ~: Z# T' e
    159.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式, ]/ n& v3 s\\" a  k/ o
    160.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    161. - i! Z4 C. X! a8 J
    162.    , a5 Y1 i% m) z2 o1 c% }! r
    163.         Label label = new Label(3, 3, "合并", format); //添加内容
    164. 6 C6 |+ {+ _4 C! q
    165.         sheet.addCell(label);
    166. , W$ z5 [0 h) h: ]$ p: h3 f
    167.         book.write();
    168. ! U  h/ p/ [3 I! h
    169.         book.close();$ G+ X\\" a0 h& A; G$ R, n
    170.   }//end try
    171. 8 K0 _/ x# b5 L# {7 @# ]8 I+ P
    172.       catch (Exception e){) E+ v5 A0 B( d! b7 `1 B. x8 Z& t
    173.            e.printStackTrace();
    174. \\" h8 \, b' q+ ?% Q9 _
    175.        }
    176. % y' Q\\" U9 ~) e  Q# a& Y
    177.    }
    178. ' j& M' Z+ \1 O\\" ~
    179. }
    180. # Z8 H$ u7 d# S$ t( T
    181. 1 P7 y/ T  p9 K
    182. 1 z: D# _7 u* \

    183. 6 X& J! C\\" j! b( I
    184. (4)添加图片/ [# a' h' h, v9 T

    185. 1 |\\" x8 f3 C$ X7 l6 v\\" ^  x6 i
    186.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。. v1 |4 Q\\" A# J/ r. S- h

    187. / j0 r; N\\" x7 a

    188. 1 y$ C\\" T\\" b! J9 U! R5 p( `
    189. //在工作表中添加图片/ ]( w\\" e) z! P; y9 Z

    190. - v$ {, B0 D% W: r0 V% K
    191. package handleimage;
    192. ; l; `1 l( G. j, A1 E
    193. ' ?( I+ X  d% m/ ?
    194. import java.io.*;( \/ H0 P$ J8 ~. G8 k
    195. import jxl.*;, v1 E\\" T. f# s' F7 s& d
    196. import jxl.write.*;8 s: _- v; C0 i; P  z

    197. & e( X# X; f) l
    198. public class CreateImage {: l% E# m! z; J6 @& A* K
    199. public static void main(String [] args){
    200. ( e4 Z4 u/ S1 W. I9 k\\" Q
    201.   try{
    202. % U9 ?; B5 ^) r) v
    203.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    204. ' Y# n$ [. r: z8 p# H$ ?
    205.        WritableSheet sheet = book.createSheet("第一页", 0);# q& y2 T# D6 E) X' J, t
    206.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    207. 5 a$ X9 Y  V' i+ U$ @' J
    208.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    209. + j# X9 f$ x! q* V9 j
    210.        sheet.addImage(image);  //添加图片6 W9 n$ T. W& p6 Q
    211.    \\" r, x. T, t' L' F- M5 [- p) {
    212.        book.write();8 Z' ]0 {/ F, C7 m( B1 A
    213.        book.close();  d* j/ P, g, l- \0 D
    214.       }//end try2 D\\" P\\" G' T/ I) R: d
    215.       catch (Exception e){ e.printStackTrace(); }+ V9 Y3 j0 v$ g4 A: ^6 n& Y
    216.    }- {\\" w& ]; H' P. a  N& z/ y, p$ K
    217. }2 s1 B: L5 L* d8 t7 ^# R1 i
    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-7-24 09:09 , Processed in 0.598213 second(s), 61 queries .

    回顶部