QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2211|回复: 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的使用方法。9 P1 M# z' v* b) w% N$ F9 ?

    2. 7 L7 A3 \2 f* n8 E! d  z  |
    3.         1、环境配置; D: U( o0 Z1 n, Z

    4. 6 n, P1 m. Z/ k1 ^
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. * G  r/ d, e+ M+ E7 m. l6 [. _8 ^4 l

    7. * h; {  B7 U8 U1 K+ d
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. & A\\" w3 O- A! U, R

    10. * E' a; K6 U1 _6 C
    11.        (1)jxl.jar  —— JExcelAPI 函数库;6 z# Q% t! r/ N5 }8 |* g* z

    12. 7 `# ^+ d) C. E\\" u6 @% v; I
    13.        (2)docs  ——  帮助文档;
    14. 0 Q8 s$ k- F! W! b# O\\" V* W
    15. 8 X; k6 b9 `  B% T8 z: u
    16.        (3)src     ——  源码文件夹;
    17. . r0 i9 C% C# I1 b4 C# @, R$ A
    18.   L% ?8 `1 j) ]' a+ Q
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. 8 i, {# Q- d9 V) L# a! n7 H3 j8 w) r
    21. 0 e: w/ `' u4 {/ T
    22.         2、Excel基础操作实例) E% b. g- {$ z$ [5 O& }3 I
    23. 1 K' `, }9 n2 B  w3 w8 L+ {
    24.         (1)  创建Excel文件    8 z) k! T+ Y( f' \. F4 D$ f

    25. 2 s1 |7 u; V* q- \2 o  x( _0 z
    26.   /**读取Excel文件的内容   ! j' W( \\\" b! h' p4 W  j' f
    27. * @param file  待读取的文件   
    28. 3 d) S6 V8 o$ d, T2 L
    29. * @return   // 生成Excel的类    */' S6 |8 Q5 P/ [  z
    30. package createxls;6 j6 `2 j+ |! _/ N& p) F1 `
    31. ! f# x( ]9 M; O
    32. import  java.io.File;   
    33. ; t0 h7 C7 w3 M  T
    34.   
    35. $ m5 {: }* A9 W
    36. import  jxl.Workbook;   ! S6 K: V! p2 B$ m\\" x: I! w
    37. import  jxl.write.Label;   . _; g9 l) p, B0 f* w, l# {1 x' P
    38. import  jxl.write.WritableSheet;   
    39. 9 _: {. O  K6 x: n' j. O, h) r4 [. R) |
    40. import  jxl.write.WritableWorkbook;   : Z+ C: Y3 n/ E/ \$ N* K& u: a
    41.   4 K' a: L) |1 i4 d
    42. public   class  CreateXLS {   
    43. $ T/ j( B3 M' u) q+ C
    44.     public   static   void  main(String args[])   {   ( s) i0 ?+ \- m' P5 p
    45.         try    {   
    46. % \\\" j* y6 Z( \2 f
    47.             //  打开文件    9 J0 ]. u\\" i' u& |5 @\\" H
    48.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    49. 8 O: v7 l# n0 p6 b8 ]\\" R+ m
    50.             //  生成名为“第一页”的工作表,参数0表示这是第一页    & N! H4 b- z: Q8 d; ?7 y+ P
    51.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   5 V' _. d8 g1 x/ t( l
    52.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   & {' i& E9 y  {- H3 {
    53.             //  以及单元格内容为test    4 W8 h; ?$ t$ w
    54.             Label label  =   new  Label( 0 ,  0 ,  " test " );   4 A  q1 z# b+ w( ]4 ^
    55.   
    56. 7 [. d2 P9 K. h5 O
    57.             //  将定义好的单元格添加到工作表中    0 m. C6 }* ~/ f* |( @% s
    58.             sheet.addCell(label);   # N1 \, L# @; q( T
    59.   # z4 T9 w' m$ Z3 `9 j/ t4 E* U
    60.             //  写入数据并关闭文件    ! t0 q3 F* b) z
    61.             book.write();   * q9 ^  ^8 b) _8 H4 d
    62.            book.close();   0 K\\" j$ T* D6 L. A
    63.   ' M0 |( e\\" d' v! G( M
    64.        }   catch  (Exception e)   {   6 i/ W0 e5 {' v; ?# t; s9 c
    65.            System.out.println(e);   . D1 y9 l+ E& a/ x+ ]9 w% u* l
    66.        }   
    67. $ L& D* b7 Z+ r  J2 X% v; q6 H
    68.    }    5 A1 g, o9 d# z( q  S
    69. }   
    70. , x. N9 ?+ h5 m& u6 {; j+ Q% Z\\" {
    71. 0 t- w! o) s4 X0 A# \\\" z; E' G
    72. , R% W& _\\" {6 `5 K1 A
    73. * L8 q1 {# P( Y. N/ r) d
    74. (2)读Excel文件+ c\\" {* c' p3 a5 i

    75. 3 M) ^2 j: s- |
    76. * n* n/ ~* T7 l5 X  F+ H
    77. package readxls;
    78. & f8 w: k  w- A

    79. 1 p8 P: x: \\\" H4 n\\" a
    80. //读取Excel的类   
    81. ! f' P* m8 c9 z0 C: u# o
    82. import  java.io.File;   
    83. * r- Q& |2 y+ t0 _! @
    84.   2 d0 P% M# [, Z4 I; g0 @
    85. import  jxl.Cell;   % C) w' S\\" L( E7 a$ C9 w$ v5 \0 x; {
    86. import  jxl.Sheet;   
    87. . \# b\\" ]/ A9 _4 Q
    88. import  jxl.Workbook;   5 r6 L6 A: P/ R3 f5 j1 Q# |% y
    89.   
    90. ) E' V\\" A5 I7 T& T2 m
    91. public   class  ReadXLS   {   
    92. 9 o- f& `+ M; H. g2 ^, q\\" K
    93.     public   static   void  main(String args[])   {   
    94. * G6 V) e* B* h% w# W0 u) p9 ?
    95.         try    {   7 A- n1 V1 f+ a3 j) _% ~& C% `
    96.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   - i1 u4 g( g: g! T6 R! c9 e
    97.             //  获得第一个工作表对象   
    98. + e6 j4 R- M9 K6 ^* b
    99.             Sheet sheet  =  book.getSheet( 0 );   
    100. 3 Y$ M/ \- ], `
    101.             //  得到第一列第一行的单元格    . `) m9 ~$ l. R- |( j7 U9 j# p
    102.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    103. - |( N! Z0 C4 j6 n, A; p0 Y$ a. ]
    104.            String result  =  cell1.getContents();   . M( _) I; R- U# W7 a# w
    105.            System.out.println(result);   6 v; h* z1 d/ d/ P5 @1 ^) M
    106.            book.close();   
    107. ; V3 r7 g8 m* `! c! L; c0 Y
    108.        }   catch  (Exception e)   {   
    109. 8 r+ @5 k, s: ^
    110.            //System.out.println(e);   - [& w9 B5 c7 U1 {
    111.         e.printStackTrace();
    112. 2 I3 t. D3 Z' u
    113.        }   
    114. ) z\\" a. n/ Q3 C& f2 X( v# {
    115.     }   
    116. 2 n! A2 Q# y, [6 V3 h8 F
    117. }! f. ^2 c# U1 Q4 t+ i0 K

    118. : D4 G1 z0 u' B7 e  J\\" d$ y0 J# n
    119. ' z; c) x$ Z# F9 @0 f  C

    120.   B) G7 q$ R2 e3 ~1 H8 n
    121. \\" X. e! P' ]: |3 H
    122. (3)合并单元格、格式化单元格等  x# i8 f3 O6 N9 ~' t5 c\\" p
    123. - w; F$ R5 q0 S( p

    124. 2 q7 p- r/ o' w0 D: a& d\\" g
    125. //合并单元格并在单元格中输入内容
    126. ! v) F; J; @* t/ E0 h1 e) }4 W6 k

    127. $ P$ Q' d( t! d8 L+ f
    128. package additionalproperty;& {' q* O- y- Y7 g  ?5 F- g& i! l
    129. ) ^$ ~4 n9 @# p\\" n
    130. import java.io.*;) {  O) G' Z+ R/ N( K0 j' V
    131. import jxl.write.*;
    132. ( Y0 n1 s4 o0 |
    133. import jxl.*;
    134. 9 z/ y; X* h6 m! _

    135. 7 X  e' D) d) Y( D+ r, p/ W1 p
    136. public class MergeCells {
    137. ) d  T! m+ i2 R! g! F
    138. public static void main(String [] args){% e  `+ f2 e) Y) {
    139.   try{
    140. : j\\" R4 \# p- q8 }8 e/ ~
    141.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    142. 1 y1 h* k/ U2 A& Y+ \
    143.         WritableSheet sheet = book.createSheet("第一页", 0);! R4 {0 a' j% P1 D' s( d
    144.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格- h9 V8 i. e, B, e3 S: g
    145.    2 Z/ ?: P. G5 U! T7 B\\" y+ L
    146.         //设置填充内容的格式
    147. 8 h  C) Y  u- o3 t+ r
    148.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);: g! `! G2 w% Z9 j* }* z
    149.         WritableCellFormat format = new WritableCellFormat(font);) M\\" s9 a' `% K% q1 `$ G# q6 @\\" G8 N
    150.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    151. - w, w7 j$ w6 ?
    152.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    153. + ]& Q0 i7 n  g  _8 P+ h
    154.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式2 v1 x* O, h8 J. I( F  {
    155.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    156. ) W1 R( ]8 X# D8 D: F/ E# W
    157.    
    158. : G4 a- K5 }2 J1 z2 e- ?8 F
    159.         Label label = new Label(3, 3, "合并", format); //添加内容! n. S7 l. R5 b
    160.         sheet.addCell(label);
    161. ' D5 y8 h) m+ `$ u8 R7 |' W- k
    162.         book.write();5 }' y+ m2 z% R4 \6 Y
    163.         book.close();
    164. 0 n+ x% w, D. T* D0 o
    165.   }//end try
    166. & b% J# @( z* i- b) k+ I
    167.       catch (Exception e){  G3 u/ I4 l# u+ o
    168.            e.printStackTrace();
    169. ' D9 D) A; N8 E' B; v; }7 k
    170.        }
    171.   t# s% d: Z0 p6 g( g5 }: U! ^
    172.    }$ `( |* z' j9 X) z  v7 s3 O2 D
    173. }
    174. - ?1 f) j- O9 O! ]3 U

    175. ) j) D\\" r$ C& b, l, h, F3 J7 R4 O
    176. % t9 e' E! e2 T3 d\\" o3 D
    177. * d) u/ ~2 `9 v0 A0 K
    178. (4)添加图片
    179. 7 e7 r\\" c; r' y& A5 i8 i
    180. + `6 E: B7 F- Y* B
    181.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。0 q0 V: t: P8 r
    182. 3 d6 a: J- l5 u/ V- x
    183. - r. ^0 {8 v6 p2 W
    184. //在工作表中添加图片) m+ E+ C9 q3 h. ]! m6 D3 m
    185. 2 b5 [6 s6 v5 N; |2 t8 \
    186. package handleimage;
    187. 3 _' U, \' P( p8 R1 k3 p/ b
    188. ; u/ E4 X) R5 Z( p; ?\\" K8 Y& f
    189. import java.io.*;
    190. 1 d4 E+ ~# @+ y0 F* D
    191. import jxl.*;) \- L' l5 \2 P3 L! H
    192. import jxl.write.*;! m/ O, {5 R# H: i* U/ ^% T! N7 Z
    193. : }9 D0 _+ D* c
    194. public class CreateImage {$ U1 W) g! h5 }9 K\\" c( M. h: c/ w- `
    195. public static void main(String [] args){/ L1 _2 N0 U\\" ^\\" q# J5 l- n+ e7 [: i
    196.   try{
    197. $ s  U) o  s/ v' R
    198.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    199. 5 Y( x/ H0 J- Z% h; {
    200.        WritableSheet sheet = book.createSheet("第一页", 0);\\" y+ Y. s  m; N+ }& a/ o- z
    201.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式* U\\" O; ~$ F. i0 k. Q/ T  d1 B' c' `
    202.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    203. % k& L# G( Y3 w2 w# T1 S
    204.        sheet.addImage(image);  //添加图片/ z' s( E% r1 m5 g
    205.    3 N5 V( X( k9 G. [3 g
    206.        book.write();! Y0 Q7 D: P6 B\\" t8 _6 c$ x) d
    207.        book.close();+ Z# c8 K, G0 p$ b: [0 h% ?\\" T3 l
    208.       }//end try
    209. 4 @: T% F9 L# z/ e5 s* f4 j1 H
    210.       catch (Exception e){ e.printStackTrace(); }
    211. 1 a5 c, `4 f0 |% w, w3 I8 U# Q
    212.    }: C1 ~  `\\" D2 T
    213. }
    214. 0 X$ I6 R8 H6 [( ?, l7 n
    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, 2025-10-1 03:32 , Processed in 0.438156 second(s), 60 queries .

    回顶部