QQ登录

只需要一步,快速开始

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

【转】Java操作Excel方法详解

[复制链接]
字体大小: 正常 放大

937

主题

117

听众

3万

积分

升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    跳转到指定楼层
    #
    发表于 2013-8-9 11:28 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    1.   JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。/ v8 S: `9 k. l- u* A7 z

    2. , b, W! f, W; H+ r7 _. S( i5 ^
    3.         1、环境配置
    4. * ]! a& z0 F5 ?. g& H
    5. ! P# c- y8 ^9 ^5 L5 X7 k! H8 M
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html' q5 i+ d! k2 o' [  ^. g8 K

    7. * d' {7 Z; @9 n8 |( t. M0 _
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. 6 y0 ]: B2 w1 k8 h8 G* T
    10. 3 s$ w7 m, ~* d
    11.        (1)jxl.jar  —— JExcelAPI 函数库;% X2 ^9 g; A/ Z* r0 S4 i+ x\\" g

    12. 9 [  E3 P) P% t! ~' @
    13.        (2)docs  ——  帮助文档;
    14. 0 x; z8 |+ Z  t! P. l5 `
    15. * t5 w\\" h8 n+ G
    16.        (3)src     ——  源码文件夹;! ?* N) s. f& B6 `7 n
    17. ( g) U% c, v+ {: i9 @. T2 v  d
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。; R( ?0 G3 A; I. i8 e1 G  h$ t! T
    19. * {9 A4 }1 I$ L
    20.         2、Excel基础操作实例
    21. $ i* o1 }) q) q0 r0 f
    22. $ J  m: o5 n5 C! L; I! D. Q$ o
    23.         (1)  创建Excel文件   
    24. 4 u. L) ]* G! e

    25. : \9 e% p6 U\\" c, c
    26.   /**读取Excel文件的内容   
    27. # |+ G1 ^1 b  d$ Y9 v3 `% M* q
    28. * @param file  待读取的文件   8 V0 N8 p, j) \9 N  x  F5 K
    29. * @return   // 生成Excel的类    */3 R- o7 f; G8 W! a& Q* }
    30. package createxls;9 Z9 Y6 v3 T5 T# M. x) C9 s
    31. $ ]* X. R7 Q, r  l
    32. import  java.io.File;   # T) _  \) W3 O9 y  C5 E( C
    33.   3 r- P0 Z: u1 d
    34. import  jxl.Workbook;   $ z1 c; i0 t* k. e4 I
    35. import  jxl.write.Label;   - |8 k& W/ u3 d6 f
    36. import  jxl.write.WritableSheet;   ( f( d. k9 f. E\\" N5 X
    37. import  jxl.write.WritableWorkbook;   
    38. . m4 M% E2 B* |; p* T
    39.   
    40. : d& L9 t  i+ Y) L+ X8 e
    41. public   class  CreateXLS {   . A9 q/ O6 ^, e- n
    42.     public   static   void  main(String args[])   {   
    43. : q% c$ p9 j; ~( R: k; z% ?6 I
    44.         try    {   
    45. # o3 n7 U% o, P: {0 r8 a* i
    46.             //  打开文件   
    47. 6 k5 k1 J  J: }* g9 Z8 K9 ?, _
    48.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    49. 4 J\\" e1 p5 R0 ]! F\\" m
    50.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    51. # p; _! v1 d  Y\\" U0 k
    52.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    53.   u7 G1 f$ w  e# a  d: A
    54.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    55. ; P8 E' T+ |+ o0 Q, M7 T
    56.             //  以及单元格内容为test   
    57. % ]9 ~  w, n7 E- ~) `# f0 O
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ; `; c( B' H( F5 |+ F
    59.   
    60. : \( I2 m2 I- }6 E* y# c
    61.             //  将定义好的单元格添加到工作表中    \\" _6 M# Z; l$ k* R9 `
    62.             sheet.addCell(label);   * M: t; z& I6 g9 `( J( t, k
    63.   8 {3 @4 P$ K9 j6 Z5 I9 Z) R
    64.             //  写入数据并关闭文件   
    65. # y) U  h3 r4 Z8 Z8 R
    66.             book.write();   
    67. * S2 ~9 f* }& a$ @  A8 V- m
    68.            book.close();   1 d) f7 y% Y! O
    69.   6 i7 p+ J% u. e  T
    70.        }   catch  (Exception e)   {   * n! w\\" c$ j\\" X' t) Z/ J
    71.            System.out.println(e);   
    72. 7 v- F5 L: i, t2 I) `
    73.        }    ' I# }$ B4 B7 ?$ U! y: }2 B
    74.    }   
    75. / Y1 G/ j8 q+ M& p* K, E6 d. S7 M
    76. }   3 I4 u# \( |4 P) x2 v! w5 ?( M8 x
    77. , a8 f: r+ Q5 `, t& O
    78. . G, r1 ]9 \; N& j4 o* K. F- n\\" t4 C
    79. ! q& ?# t# n7 K: z, ^7 Y1 F
    80. (2)读Excel文件
    81. + j& p1 Y+ ?+ N. i1 d
    82. # E4 w  `% l  r. V% L2 o

    83. . R! Q# T\\" [3 `% t. w% o; }
    84. package readxls;\\" V9 u0 R2 r8 d- }! L/ Y
    85. ' h; j# M. z* ?: x- u; n\\" _2 M7 A
    86. //读取Excel的类   
    87. ' b. x! X7 M0 q
    88. import  java.io.File;   7 B3 [: A' G. Q+ H
    89.   : @* x/ m* g, l5 f. l& x
    90. import  jxl.Cell;   8 C5 t) K& W3 `0 d# H: v4 d  Z
    91. import  jxl.Sheet;   : t; I6 ^: S! t- S\\" |
    92. import  jxl.Workbook;   & E' ^\\" W9 q' q# x$ p8 ^
    93.   
    94. * c) I9 a- V) V' ?+ C+ l, @/ Q
    95. public   class  ReadXLS   {   
    96. * Q* a6 S% ]2 P6 @\\" z3 j$ e! v
    97.     public   static   void  main(String args[])   {   
    98. . c0 C0 M; ~: s; s
    99.         try    {   ! A2 x* u/ `5 i, E  [% E2 n
    100.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   , K4 ^# z# K5 L6 m; [
    101.             //  获得第一个工作表对象   
    102. - f$ _  \\\" d7 o  t
    103.             Sheet sheet  =  book.getSheet( 0 );   4 K* h  j% c6 W
    104.             //  得到第一列第一行的单元格    & ?* J$ |4 Q# {7 e6 g* F* ^$ a( H
    105.             Cell cell1  =  sheet.getCell( 0 ,  0 );   \\" R* e% }$ j0 a0 @, G2 u9 o
    106.            String result  =  cell1.getContents();   ! O8 o& s4 n/ |$ }
    107.            System.out.println(result);   ) x* q. y: T/ Y/ n2 K
    108.            book.close();   
    109. 2 [4 x! @% e* G0 V: \/ I! {. M
    110.        }   catch  (Exception e)   {   
    111. ; B. p; |( T+ U: n
    112.            //System.out.println(e);   
    113. 3 @  f- A( h9 D& C3 Y: a. a
    114.         e.printStackTrace();
    115. 0 _; V) K% t& w% @. t
    116.        }   
    117. - z' Q0 P& T) k  z& s
    118.     }    $ B7 E* ]7 e; c4 ^# q
    119. }# f) G3 d# u* I9 {2 o) }

    120. % F8 s! X& A; T
    121. ) C/ s9 H* r5 A* e0 H\\" n# L

    122. $ b  l; d0 o  L# S5 s* ~
    123. 5 \& x6 H! C0 r# B/ S: n2 r( u
    124. (3)合并单元格、格式化单元格等! O& {! ^6 `7 b9 S

    125.   h\\" z/ W5 d4 P( A5 ~7 |* b, o( B\\" v

    126. ; G5 r- }. U% K% q
    127. //合并单元格并在单元格中输入内容
    128. # {/ J- N\\" E, G: }: ^3 Z% f+ u

    129. $ T7 b# y* I: V' E6 L
    130. package additionalproperty;
    131. 6 B4 g5 U# n$ |8 H8 h* R

    132. & P5 J! _- w2 d\\" @& i6 Z; P: @
    133. import java.io.*;
    134. - Y\\" T+ }' E7 V
    135. import jxl.write.*;; E3 K- g- i$ l9 n- {) D. F& \
    136. import jxl.*;) H9 y) v  P& ?# M2 r& h4 _' n/ n
    137. ; d\\" g/ P1 z5 H! I5 `& ~
    138. public class MergeCells {9 O0 {+ w; x5 h& p
    139. public static void main(String [] args){8 W* @3 s' C3 I2 ?
    140.   try{) }& F. ^/ O1 \( [, ^! l, y$ u9 N
    141.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    142. ; [; t7 z7 y9 V
    143.         WritableSheet sheet = book.createSheet("第一页", 0);) x/ Y& z! R9 B' W2 J
    144.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格- d# f# ~9 s5 M! r
    145.    . D8 y% Z) ~! g\\" [$ {4 w5 t7 d
    146.         //设置填充内容的格式
    147. * y) y' X3 o7 |/ Y! z
    148.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);+ F) L& @: L. y& F( O. h3 ~/ W2 L
    149.         WritableCellFormat format = new WritableCellFormat(font);* g. T: _\\" L\\" l5 F+ N
    150.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    151. * c- ^- z' ?& j( {5 g
    152.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    153. 1 P' `+ h\\" Q, |: w9 A! i4 B
    154.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式, c; ]/ d3 v) d5 L9 j' S' M/ v6 [- ?
    155.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    156. & Q- ~- C3 v1 V4 {* N* D
    157.    0 ?# R) |+ G: u# J+ o\\" Y
    158.         Label label = new Label(3, 3, "合并", format); //添加内容
    159.   O+ V# J5 j3 F1 _
    160.         sheet.addCell(label);6 ]. `! @2 c- a\\" h; G
    161.         book.write();
    162. - \\\" k) i\\" \6 ^0 o. ~! e
    163.         book.close();0 {' B/ I9 z8 Y6 D
    164.   }//end try
    165. , g\\" H7 b. G/ C& H1 E
    166.       catch (Exception e){
    167. : j\\" r! L% k# s7 R1 p+ Y0 v/ X
    168.            e.printStackTrace();
    169. : n5 z* _, m- s7 r3 z) R
    170.        }
    171. # Z5 o: Y* Q+ m1 [2 H) i6 h4 c
    172.    }
    173. 7 w# |$ A\\" B3 y; C
    174. }
    175. - J9 P$ B. l\\" ^. p, m3 M* a7 K
    176. % X3 l5 @- m5 g8 W/ z
    177. 9 n. i% `5 _/ i\\" O3 b

    178. # s% W! Q( j\\" k# T5 S8 B# |- C
    179. (4)添加图片# _! e7 \' j( |, \# ^

    180. \\" O: ?4 |, ~5 x2 I! ]7 _' l
    181.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。) ]2 Q; D+ l4 @, N  h3 N; M3 @
    182. ' {) ?) R& T6 q  L\\" P\\" e9 L8 s
    183. $ k$ f9 d* A: H7 ?/ O9 ]6 I
    184. //在工作表中添加图片
    185. 5 ~0 [4 r) H, u( `$ P

    186.   `. S4 O. L; x# ^, o
    187. package handleimage;. s: d; R: }7 w. K) N7 u
    188. + e+ t4 e) S0 t\\" b9 g# u\\" Y: |
    189. import java.io.*;
    190. : H$ A3 t8 l9 T& I# x& ^
    191. import jxl.*;
    192. ) J( W# Y. H8 A& r  ]6 K* R
    193. import jxl.write.*;1 f$ |$ C* W. Z( J1 l( O

    194. ; B5 j: V+ L6 H# f/ V6 E
    195. public class CreateImage {
    196. : `5 y8 Z8 R$ u3 y
    197. public static void main(String [] args){9 R4 {/ ^3 F; m. H
    198.   try{: Z\\" M2 p$ o! G' }7 R: c6 @) _
    199.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));\\" M3 j2 k( K: p8 ^# Q
    200.        WritableSheet sheet = book.createSheet("第一页", 0);9 L6 B8 v0 S8 R* K
    201.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    202. 9 F8 H9 u+ [0 y
    203.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    204. - {( `- G* O; m, L' j
    205.        sheet.addImage(image);  //添加图片. q\\" z) V/ ^* [
    206.    . [! L  M, F! M
    207.        book.write();
    208. 8 M6 f- Z9 x- W3 U- o* A2 {
    209.        book.close();
    210. : `9 w: D& O8 `$ M/ [2 _+ m
    211.       }//end try, i9 ?( m6 K# R% W* }5 B; w1 R& j, O
    212.       catch (Exception e){ e.printStackTrace(); }; P4 Y( N2 m. K- }7 T+ _, ]) a\\" r
    213.    }
    214. \\" k! h$ m# S+ t  R/ S3 n1 M
    215. }
    216. ' K% J* ]# U* [
    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-6-6 22:01 , Processed in 0.405231 second(s), 64 queries .

    回顶部