QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2373|回复: 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. ; v& |4 j! r- I- G  v0 n7 v( X

    3. 3 f, A0 T3 n8 c: ^; b: q
    4.         1、环境配置8 R, ^3 V! E9 @\\" C( B5 S
    5. 5 r4 }1 A# |\\" \# [& V. ]( r
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    7. $ O( W  w2 v% S4 V( M

    8. 5 Y$ J) m: M) W) B5 {9 T/ l* ^
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:
    10. . N8 b5 u5 A3 Q/ y* [) h

    11. / ]\\" }( R- N\\" n% U\\" |8 f
    12.        (1)jxl.jar  —— JExcelAPI 函数库;; F1 X! _$ I# ~% \, h
    13. ; V# |9 w9 E) S6 E* J4 e+ E9 O
    14.        (2)docs  ——  帮助文档;% k5 b3 W. {  S7 w7 \' [5 j+ h! J
    15. 4 E9 B* Z: {  T
    16.        (3)src     ——  源码文件夹;
    17. 0 @0 @2 l* Z- ~7 v

    18. : e# o7 t4 u& @% g+ i
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。- R\\" \, i, t. c0 T# j! _8 J
    20. 8 [. ?) c: U2 K
    21.         2、Excel基础操作实例
    22. + f5 y4 W: A/ z6 e\\" z0 d: X
    23.   h! ?5 r8 j( u4 x4 g# J! j+ w8 o
    24.         (1)  创建Excel文件   
    25. 7 a; Q4 _\\" X! e! E
    26. ) _' k6 `& ^$ s, ~, [
    27.   /**读取Excel文件的内容   : ]9 W# s- f! \\\" ^( ?
    28. * @param file  待读取的文件   
    29. ( W$ c& T: n* h: y
    30. * @return   // 生成Excel的类    */' W9 W* y; M& u0 \1 y5 |
    31. package createxls;
    32. , W3 l% Z& @/ @  u

    33. 6 [, O7 {# h7 a+ @
    34. import  java.io.File;   & i/ Y! d: V, v7 F/ V
    35.   
    36. 4 [2 }3 V% y7 E
    37. import  jxl.Workbook;   % ]# x: `9 a' d\\" h9 @+ K
    38. import  jxl.write.Label;   . r6 ^\\" h4 g) B' O. t
    39. import  jxl.write.WritableSheet;   
    40. ' T6 N; l, t4 |
    41. import  jxl.write.WritableWorkbook;   
    42. % `: S/ p6 v) u3 z0 A4 G. u
    43.   3 R* I$ Y% H: ^; @6 y% Q
    44. public   class  CreateXLS {   
    45. $ |! C8 W2 o4 B/ }& U# v
    46.     public   static   void  main(String args[])   {   / x9 D8 p+ _\\" e/ X4 i, K, C
    47.         try    {   
    48. ( D0 S1 R7 Q, ]: N) p% o% @- W
    49.             //  打开文件    ' e+ K- }6 r. X) y7 y7 U
    50.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    51. % U# B9 o' q& G* g
    52.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    53. . a/ I) y7 {( }
    54.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   1 i+ B( G% P( i0 p. ^' M9 C6 l+ O
    55.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   ; F2 {& l/ g) C8 ]! c
    56.             //  以及单元格内容为test   
    57. # \: _& ]9 L- L0 p
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   1 d* r- q9 N  ?. |\\" X
    59.   
    60. 7 B+ R. c' M3 E
    61.             //  将定义好的单元格添加到工作表中    - b: ^! K$ t$ V3 C! O
    62.             sheet.addCell(label);   4 T0 T1 K1 }4 M  O7 Y
    63.   ) f6 d2 j5 |, `5 g3 b8 u, a( _# M- V
    64.             //  写入数据并关闭文件    ! b: R3 [3 _# l\\" p( D
    65.             book.write();   7 N* }7 d3 T9 K\\" m4 a$ c! X# w$ m2 m
    66.            book.close();   
    67. 1 \; k0 }, B9 I6 A
    68.   
    69. # Y2 d0 c$ Y* q
    70.        }   catch  (Exception e)   {   
    71. - F& ^\\" Z: P) e% Q
    72.            System.out.println(e);   
    73. * r) B- @! ]1 y+ O
    74.        }   
    75. & ~. {7 o\\" K5 A# U! C9 v$ E
    76.    }    * F% |6 F/ ]( ?3 ^$ ~$ v. z
    77. }   & m( O6 c. ]' J; {' C. L/ C

    78. ; i3 _; _# R9 |
    79. 4 J/ }: `. M, z# n
    80. $ E# H* [; \0 L  a; J
    81. (2)读Excel文件
    82. 8 Y% N& V! {5 D! @\\" b

    83. 3 \# @* ^4 `, }, U  @

    84. 6 m# f( o3 g+ S) r# `; ^
    85. package readxls;- |: A5 ^6 V( W! @( C\\" l1 K$ C4 o; a8 k
    86. + k% v' ]7 X. s
    87. //读取Excel的类    ; ]/ ^! s9 D2 N3 K\\" Q
    88. import  java.io.File;   # v, z) e# S/ @. V- j
    89.   
    90. $ X1 f1 Z1 m\\" C* P
    91. import  jxl.Cell;   / t, {( ~$ {% f) w  {
    92. import  jxl.Sheet;   
    93. ; d: Y2 q9 Q4 n4 ]- Z
    94. import  jxl.Workbook;   0 ~, Q2 N\\" A: T, `% e
    95.   
    96.   r; q$ ~8 {- e6 {/ F* W
    97. public   class  ReadXLS   {   
    98. \\" J6 f: l$ C\\" E' m: b\\" @\\" H
    99.     public   static   void  main(String args[])   {   & f+ L) `+ L( E& h/ j# W6 q\\" V
    100.         try    {     h$ o  d3 \- [) N
    101.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   # Q9 i) F, d0 p8 y, s# r0 ]2 N
    102.             //  获得第一个工作表对象    6 q& ~. _) |$ @8 x8 c6 B! k; f( Z
    103.             Sheet sheet  =  book.getSheet( 0 );     Q+ j6 B, P\\" M/ U1 Y4 e\\" B/ ~: o
    104.             //  得到第一列第一行的单元格   
    105. \\" [; Y7 B) S' O; b; D% v
    106.             Cell cell1  =  sheet.getCell( 0 ,  0 );   5 H; U( W1 Z5 j1 N  A
    107.            String result  =  cell1.getContents();   # K3 C5 @8 R$ ~1 c6 V# ^
    108.            System.out.println(result);   / L/ N9 N( ~$ V1 Z+ f8 w4 N
    109.            book.close();   
    110. & N: f$ k, p  H1 {  D
    111.        }   catch  (Exception e)   {   
    112. ' N/ l2 l7 v2 a# h) i\\" R7 W! a
    113.            //System.out.println(e);   
    114. \\" j0 `! t: [, p8 z2 z# d8 k
    115.         e.printStackTrace();7 y8 H/ d2 T( F) ^: d7 y- G
    116.        }   
    117. 6 L+ X# `& }4 k+ Y6 y$ u$ X. x
    118.     }   
    119.   N+ f+ d/ U) ]8 B, l3 |% J3 |% }7 V( b
    120. }0 X1 o& t# n6 C: F( I0 G' j
    121. , Z/ h, i. A4 U; r; q: D

    122. 4 S( d\\" h* Z\\" N: y

    123. 8 Z8 u% S8 G, g# C5 _1 f\\" D
    124. : I- f9 z& l\\" K# E3 b9 g/ l
    125. (3)合并单元格、格式化单元格等
    126. 6 s* [% t( ?: s* S1 \; c) }
    127. 9 B2 P0 @# L  Y\\" R
    128. 1 ]6 j, e\\" m3 o9 @$ H1 W' m1 V
    129. //合并单元格并在单元格中输入内容
    130. . R5 R  P/ ?( c. ]2 S. ~

    131. 2 w+ k+ M1 Y: v7 u
    132. package additionalproperty;) b. P& n. Y8 ^! A; e  W\\" b
    133.   N0 I! q/ x6 s\\" U$ q
    134. import java.io.*;
    135. : m# R/ V, a\\" l( k& o% k2 p9 J9 U' T
    136. import jxl.write.*;& Y# Y9 F! h\\" G
    137. import jxl.*;4 B$ `7 M. O/ V, x3 r$ N5 [& O8 B

    138. 4 J* S8 D/ p: s' r% |  [9 G/ S
    139. public class MergeCells {$ R& Y/ O1 A3 W( ^  j) `
    140. public static void main(String [] args){
    141. ; b4 Y: H8 x+ I0 o5 P' `; c
    142.   try{
    143. 6 D- }+ B4 I% B
    144.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));* ], k7 p  K* M\\" f
    145.         WritableSheet sheet = book.createSheet("第一页", 0);
    146. . K( J6 r( }: |8 X& L& j8 m
    147.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    148. ' d6 d\\" V: f$ S. W- g8 O
    149.    
    150. 9 f* \' e1 `: H( X. P
    151.         //设置填充内容的格式2 Y& n1 m( N9 [, O: ?. P8 l
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);9 g; y; Y' i6 |  d1 t+ k0 ]' Q( b
    153.         WritableCellFormat format = new WritableCellFormat(font);
    154. 7 Q) M8 r) f+ s$ I% W
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    156. 9 B- L% a\\" E. b; t
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中* ?% j* K, p8 ?+ F* U7 W# a
    158.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    159. $ A% y  u& U4 ]0 g
    160.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    161. 5 P+ h$ K4 A. w: P) W+ d! p
    162.    
    163. 5 o7 [/ S2 B  k1 Q* ^6 {
    164.         Label label = new Label(3, 3, "合并", format); //添加内容. W) ?+ K- ^) }0 X+ C
    165.         sheet.addCell(label);
    166.   I* c: p% i: `/ ]8 ^$ L
    167.         book.write();- @4 j0 F6 V( f\\" j9 ?& p0 [0 ]
    168.         book.close();
    169. 0 b# M1 ~. Y- u. D& R
    170.   }//end try
    171. 2 M( S  z, B% \, b
    172.       catch (Exception e){
    173. ) E0 Z4 x$ x  S9 r  F5 g2 U
    174.            e.printStackTrace();\\" A; R0 d) A( x4 F, O# m4 H
    175.        }: g; f. u/ P+ J! f! A! P5 _1 L* I
    176.    }
    177. & e# ]6 A/ n& N3 _; L, _+ k% A
    178. }/ q\\" v, e! D6 ], y# W# W

    179. * V$ m5 x# r9 q, `1 b+ g

    180. ; L3 g4 Q- Y3 n# g( x$ v7 N5 I

    181.   e& y( d: f8 Z5 m, ?
    182. (4)添加图片6 Q0 s\\" r; V) @: J' s

    183. ; @- v) N% `5 D: X
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. , E/ {0 K5 U: u/ \: g7 L( y8 @

    186. & P; H5 M5 c* |  K5 \. ]
    187. & ]2 a; `2 C; a: F\\" f# ^
    188. //在工作表中添加图片9 U6 R2 a/ V* t, {  k; g, l0 I

    189. ) k) R\\" v; _; x6 B; u
    190. package handleimage;& _* G\\" i$ `- Y

    191. 6 L: B) ^, }, ^8 P+ w+ |
    192. import java.io.*;
    193. \\" L9 q* E, k+ }) e) X, X; D
    194. import jxl.*;
    195. 0 i9 H2 D: N5 c0 q
    196. import jxl.write.*;% N, O$ d  \( R; M- j! `  X
    197. $ i' d+ L# ]0 o; D7 |
    198. public class CreateImage {
    199.   j7 u3 k3 O, |: N
    200. public static void main(String [] args){
    201. - D; x. n6 j  k3 M\\" p1 M& b# g
    202.   try{
    203. % r# i* k1 E+ f& y$ \+ F; m\\" A
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));% @2 a1 p% `) v  `6 t3 Y
    205.        WritableSheet sheet = book.createSheet("第一页", 0);* i; H5 l: T/ E+ \! P1 C
    206.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式2 V% Z, u8 M- n! Z
    207.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));) B' T2 |+ s2 O! \6 V6 |
    208.        sheet.addImage(image);  //添加图片- J) u; ]2 g$ F\\" R* T: U. C
    209.    1 o/ d, q* O* X  B
    210.        book.write();1 w/ u& F, X6 |\\" \: r, {( {
    211.        book.close();8 l: {, o+ j- I$ I$ i) p2 G
    212.       }//end try
    213. ; |0 ?) ]* O5 N2 a. t6 r2 `9 |
    214.       catch (Exception e){ e.printStackTrace(); }1 \0 a5 Q  L+ U7 Q
    215.    }  c8 s$ V\\" W+ P: G
    216. }# \* a/ j/ A$ v2 B# p
    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-21 20:01 , Processed in 0.477584 second(s), 61 queries .

    回顶部