QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2426|回复: 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的使用方法。' ^5 s: r8 m+ B( k9 b
    2. 7 J* S% j7 r% U9 v5 X1 }  p
    3.         1、环境配置5 `  t, {# V& P8 I( l

    4. 4 c7 I1 y! q; V: z8 L
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html+ d4 U& t\\" L: `9 T

    6.   D+ H; S\\" T! \7 @
    7.         下载完成的包解压之后,可以得到如下几个重要的文件:' \0 p5 c5 [1 Q3 w2 O

    8. ) ?4 S! h+ ^* m( d7 f0 |
    9.        (1)jxl.jar  —— JExcelAPI 函数库;. B6 e8 ]6 z( ~* Y/ \9 c4 k* t. M
    10. 6 D5 f: \2 S1 D8 g
    11.        (2)docs  ——  帮助文档;
    12. ; O+ H2 C* f4 N' T

    13. ; n# n\\" w# ]$ {  ~6 C- `8 a0 e6 h8 Q
    14.        (3)src     ——  源码文件夹;
    15. 1 i  N2 Q: W. @- B. @  |4 u

    16. . p# S0 F' j\\" [0 a7 z# }
    17.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    18. % v. M$ |\\" F( a7 D- O

    19. ; L+ h. T8 i) P1 M: d8 a, r: K
    20.         2、Excel基础操作实例
    21. ( ?8 K7 q5 F& h- B2 r' c
    22. $ ^7 t+ b. l% w! @+ w' B6 `9 y
    23.         (1)  创建Excel文件   
    24. * D. R$ c) S/ j4 ?5 k8 ?1 g. i

    25. : B) s# h, U3 m, e
    26.   /**读取Excel文件的内容   5 s0 k1 L8 \( X\\" @* F  [# s# c
    27. * @param file  待读取的文件   ; w; S- S/ I' W9 J6 f  \
    28. * @return   // 生成Excel的类    */4 p4 D. ~& B) T0 m0 n0 W2 v
    29. package createxls;
    30. $ r9 H/ e- Q! \* y# ~
    31. : Q2 B3 e. k' }% w1 `* O
    32. import  java.io.File;   
    33. ; J. z: [. \' H3 ?: W/ O/ C: t- I
    34.   & ]3 g; a8 j\\" E# s$ G\\" Z% G# r
    35. import  jxl.Workbook;   
    36. ; z( k7 N1 d$ `! x' }
    37. import  jxl.write.Label;   - s  P  {, t- u' L& t
    38. import  jxl.write.WritableSheet;   $ M: Z\\" a# |: I2 X9 M
    39. import  jxl.write.WritableWorkbook;   
    40. ! @# y& ]9 `1 D$ n, L5 _6 \0 w
    41.   8 Z4 z1 j\\" h. A' `7 L1 e
    42. public   class  CreateXLS {   
    43. 3 W6 q/ p* ]) _# A
    44.     public   static   void  main(String args[])   {   
    45. 7 K* P) ~8 v, q$ t
    46.         try    {   2 ?. y2 x! u% U! X- p
    47.             //  打开文件    ( Q7 f* Q3 F( ]; W9 Z. X
    48.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   . n, M) c  X% `* M/ x% H
    49.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    50. 4 m! t/ k% w, B8 C& P' ^
    51.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    52. % ], Z% J( Y( p$ a9 `. n. h( m2 R
    53.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    54. : S$ v! S! V5 }- ]4 c
    55.             //  以及单元格内容为test   
    56. 5 K+ k* L5 Z( ~# r3 h7 R6 a
    57.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    58. : j0 }$ _8 j5 K* v5 P: c8 c
    59.   
    60. ! O& r6 z3 o+ ?9 i
    61.             //  将定义好的单元格添加到工作表中    6 @) I9 G9 B2 R7 Q% f+ \! I
    62.             sheet.addCell(label);     l* h$ ]5 s( T  [8 S$ l
    63.   
    64. ; i3 n3 U: M+ ?0 i* K9 [
    65.             //  写入数据并关闭文件    . O, ^( y; {) h
    66.             book.write();   
    67. 3 b2 `\\" |9 h# z\\" @; g+ @  _
    68.            book.close();   : y! ~3 m- B2 j6 P
    69.   7 w, z: T; W* M7 q. y, D
    70.        }   catch  (Exception e)   {   
    71. 0 ?0 g6 R. J: e! l
    72.            System.out.println(e);   
    73. 5 w8 e: S) V2 `3 _, f4 j
    74.        }    4 ?$ ?3 Z: B; g- G$ T
    75.    }    4 f% u$ r, J, X: z1 A
    76. }   $ \0 `) X- j4 i8 f9 `) t1 z& g
    77. * t2 @) \\\" U, Q% y. u2 H8 A
    78. 8 ]\\" B* A- H  V
    79. 8 o, l# B1 X  l7 I
    80. (2)读Excel文件1 n) N# K0 h4 |2 r* H9 P& U! B
    81. 9 `\\" H3 G  |9 M: P4 u& l( K

    82. / J$ T: _, K# O# H+ Z
    83. package readxls;: [2 E  `+ [. E( f! B/ w- T
    84. * U1 n- W+ d  r: _
    85. //读取Excel的类    ! P& F& H\\" c, O9 X$ m0 z. Z' O
    86. import  java.io.File;   ( M1 i/ f2 R% M/ E  O; R% W
    87.   
    88. 7 @8 k  Q* N: c; |\\" u+ J3 f- X) A
    89. import  jxl.Cell;   
    90. / u, _9 H! T- _\\" n! E
    91. import  jxl.Sheet;   / e4 [6 r3 N! K# A  J' A: ]
    92. import  jxl.Workbook;   
    93. ! @- o2 i1 ?( A
    94.   
    95. ; q+ g) m, K# W0 y% S7 |
    96. public   class  ReadXLS   {   
    97. % [\\" \7 P0 i7 m2 P
    98.     public   static   void  main(String args[])   {   
    99. - ~# _: o. ?9 c% L0 k1 }: P+ y, ?
    100.         try    {     R, O. Q$ v  q$ \/ G
    101.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   2 A\\" D- B5 _( ^
    102.             //  获得第一个工作表对象   
    103. 3 h) B) F\\" m9 c6 i) m7 m
    104.             Sheet sheet  =  book.getSheet( 0 );   
    105. ; b, r  Q9 O$ W) ]3 H; W; N
    106.             //  得到第一列第一行的单元格    / d; b, ?5 k! j0 H
    107.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    108. + [9 e& ^\\" e' r1 b
    109.            String result  =  cell1.getContents();   
    110. ; q3 `- B) d* n& t
    111.            System.out.println(result);   
    112. ( A8 t: G! ]\\" P9 x7 H, k- j- P
    113.            book.close();     Z7 _0 r0 B  V# f& b0 }
    114.        }   catch  (Exception e)   {   
    115. 2 F+ E3 F: J1 W# U0 ?
    116.            //System.out.println(e);   ; G0 F1 F# ?- Z# |( Y4 r5 ]4 N9 t8 q
    117.         e.printStackTrace();6 O7 [1 x\\" b9 x  L' ^
    118.        }   
    119. , u9 n$ s. {( b+ t
    120.     }    . h: T# V! z* r( D9 s1 G2 |( i
    121. }
    122. + y6 L- W+ Y# m

    123. * F7 H) O; |\\" x\\" D$ \9 W8 W, w9 F& Q

    124. $ _& p9 {  b# _; ^& m+ t0 S
    125. ; y. @7 Q\\" \( @/ t- ?6 Y- @
    126. % h+ m# L7 o5 p( T7 P, v9 l+ l  e9 E+ ?
    127. (3)合并单元格、格式化单元格等
    128. . I4 \& e; W- D, m. w+ t! J
    129. , A! o$ }4 n/ d- N
    130. . t0 w4 [7 H4 o# H# i3 g+ v( \
    131. //合并单元格并在单元格中输入内容' c( R% L! e; U5 ?4 D
    132. ) o% y) a4 e& T7 [1 D2 Y, a
    133. package additionalproperty;
    134. % F( s& D# ], X5 K) i) h- Z, y

    135. : @3 |$ v6 q$ _2 [+ x\\" s8 n
    136. import java.io.*;
    137. ; L( B& }4 U/ A0 [
    138. import jxl.write.*;
    139. ! V& X6 I1 f! P( _3 \+ Z- s
    140. import jxl.*;  t' T; t\\" a1 G0 j# F% c

    141. $ Q! K- D% a) I1 b; t
    142. public class MergeCells {
    143. 1 ]7 o1 H6 J* M+ z+ K) o
    144. public static void main(String [] args){) U$ S4 Y' p- R
    145.   try{6 h2 m0 d, g# R6 s; b8 L
    146.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));# n9 I) ^/ P* e' S! A: n
    147.         WritableSheet sheet = book.createSheet("第一页", 0);  x5 A! ]7 T* n1 w1 m8 w
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格/ N, x3 \4 Y2 G& @5 f\\" z& o
    149.    
    150. ' x8 _  ?; f3 i6 K1 v, ]
    151.         //设置填充内容的格式
    152. ' g$ {( B; g6 l& v9 g8 a  B
    153.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);, a; s& h' r4 y7 o( N
    154.         WritableCellFormat format = new WritableCellFormat(font);& L2 T5 G7 j0 @( |. j4 B! u0 x
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    156. - y8 x( m3 D8 j& o* p
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中6 G6 u( T: o6 a# y# H/ V3 w3 t' d: B
    158.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式' U* _6 d\\" N( G+ Y
    159.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    160.   g: h9 _$ x( H7 {
    161.    ( H2 @1 ?7 C3 {. S, q' E, ~4 X$ Q
    162.         Label label = new Label(3, 3, "合并", format); //添加内容9 y) ]' n% B* q7 d% s
    163.         sheet.addCell(label);
    164. & e' B9 R' w( [5 P5 V
    165.         book.write();2 `! B8 x5 n- t) p
    166.         book.close();& B2 y/ O2 h( l5 x
    167.   }//end try\\" K: j7 Q7 \1 l# n/ ?  O
    168.       catch (Exception e){
    169. # X  R- m2 r6 ?0 a0 }2 Z$ `
    170.            e.printStackTrace();* }& q1 z0 N\\" m% a5 k
    171.        }
    172. : [- I8 `; n) f% |9 T4 w
    173.    }$ t! `3 A, F6 ~, z
    174. }4 D% `$ X4 |5 {/ F* Q) o7 C, D  m6 B
    175. 2 Q! F. O2 R7 F' d  C6 Z
    176. 5 P; }$ y* {9 O6 Y
    177. ( \2 P* v4 h, k* M0 p) h6 t+ C! h; Z% ~
    178. (4)添加图片; L0 z2 ~& m% i. X

    179. $ J, X9 a: N$ r/ V! x# V6 l
    180.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    181. : u1 m  c3 y& N$ }) c
    182. 7 Q4 J( ]% E+ F; i: A6 E

    183. 0 B  H' u6 \& r* I* J
    184. //在工作表中添加图片1 r+ W  H5 z! \6 u* n

    185. ; _( _+ G, @' u
    186. package handleimage;
    187. 7 M1 f6 Q- ^9 I% @$ ]9 [
    188. 2 K) x5 ?& D+ d, m
    189. import java.io.*;, S+ ~# K2 s, o
    190. import jxl.*;( O% ~* J9 S, @) `( B\\" n6 n
    191. import jxl.write.*;
    192. 4 z1 x8 y4 m6 m6 D/ L8 t7 V
    193. $ ]( B9 D) J# q9 \6 f: \- ?
    194. public class CreateImage {
    195. 9 z1 k4 p% k& n$ x+ u6 H& K
    196. public static void main(String [] args){8 c+ ]+ ~8 J  [+ |  S$ H
    197.   try{
    198. 6 j2 q/ x5 w1 `( U
    199.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    200. ; q, C/ s; R8 x% Z( G* [
    201.        WritableSheet sheet = book.createSheet("第一页", 0);: Q1 @$ g\\" z5 \4 h/ Y& T% ]5 B
    202.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式4 \# ^' v  Y) P% f' J. C, X
    203.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));0 F9 v3 `( w1 z
    204.        sheet.addImage(image);  //添加图片
    205. # C4 i. m- [% ^- @$ ^' V
    206.    
    207. ) F. o: _7 o8 k# o0 R$ b  l7 [& q
    208.        book.write();3 U3 V& E2 ~# q5 j$ O; F6 d3 o
    209.        book.close();0 p8 z) r# \3 m0 c+ R2 G% N
    210.       }//end try, T- F\\" {& A& @1 X2 ~3 n
    211.       catch (Exception e){ e.printStackTrace(); }& ^3 N/ ^% }, g' b; F0 J/ x6 Z
    212.    }4 H% w, x  s  V5 v% Q9 _7 F
    213. }
    214. 5 D  @2 B( }/ m* @- ^- G6 V( _& m
    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-7-27 04:17 , Processed in 0.338040 second(s), 66 queries .

    回顶部