QQ登录

只需要一步,快速开始

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

【转】Java操作Excel方法详解

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

937

主题

118

听众

3万

积分

升级  0%

  • TA的每日心情
    开心
    2026-9-17 16:51
  • 签到天数: 265 天

    [LV.8]以坛为家I

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

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

    群组2013年数学建模国赛备

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

    3. - U2 [& }# P\\" h6 r: C
    4.         1、环境配置
    5. , Q& j3 `$ a: `) B0 d, y, a

    6. 8 o* [* u4 u2 n3 j3 k: I& }
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    8. \\" A2 T, [\\" n( W4 S
    9. ; d1 y6 T+ i3 _5 p\\" `\\" @
    10.         下载完成的包解压之后,可以得到如下几个重要的文件:
    11. $ h  E\\" ]/ ~$ D& t* R

    12. ( L7 Q/ r! x1 E2 [
    13.        (1)jxl.jar  —— JExcelAPI 函数库;
    14. + k, @4 V1 M$ x- ?

    15. , H9 R$ ~1 a4 ?+ e/ ?
    16.        (2)docs  ——  帮助文档;8 q& G1 \9 d( w  `6 b

    17. ! X+ [7 h4 n! T/ B0 b6 j+ |4 X
    18.        (3)src     ——  源码文件夹;
    19. 9 P: V' u- j  ]* m0 C
    20. 9 E' c  k  D5 j- [$ x
    21.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。0 E. W1 C6 K9 Z; W. w+ h

    22. ; L/ w' j, A! C6 t  ]
    23.         2、Excel基础操作实例
    24. 2 ?: h& G; b# M4 e5 g; H1 Q

    25. ( q5 _* M. e. K3 Q& {1 J
    26.         (1)  创建Excel文件    4 U9 V( K5 u+ |0 E0 D

    27. # U# n: j# M4 A
    28.   /**读取Excel文件的内容   0 y* ?# b1 H4 v, o5 A
    29. * @param file  待读取的文件   
    30. ! {/ m  g: A& o0 @  r
    31. * @return   // 生成Excel的类    */
    32. 7 O+ G# Y1 Y! F! x
    33. package createxls;
    34. - F9 h# Y' U  n, M& ^

    35. & \( ~  y\\" j. _- M5 j3 ^4 E6 h& o
    36. import  java.io.File;   % Q2 t( x( Z4 {6 {
    37.   
    38. : q- F  e/ u1 v, `5 x
    39. import  jxl.Workbook;   2 L! e' Q: K  W5 i4 r; u
    40. import  jxl.write.Label;   - W( P- f/ r- @
    41. import  jxl.write.WritableSheet;   
    42. 7 O! h3 v$ {  a  \1 K
    43. import  jxl.write.WritableWorkbook;   5 \& l1 U! i( I2 |8 E* @
    44.   . Y1 ^# }7 x! r6 U. V& {0 U\\" I& j- V
    45. public   class  CreateXLS {   
    46. ; Z; e% I% P; A
    47.     public   static   void  main(String args[])   {   
    48. ( T3 h2 u# J7 v+ p' r/ g
    49.         try    {   $ B2 W' T' p% X3 M$ d9 y; |5 `  ?
    50.             //  打开文件    . ~3 j6 g- l6 ^
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. 2 E% ~2 ^; T% Q* W6 u: F6 d
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页    ! [5 w+ T4 t% j3 U6 n
    54.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    55. ) h: P\\" d7 }6 D
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    57. + A& R  ]: e) z- D  F
    58.             //  以及单元格内容为test   
    59. . Z! {. W  Y9 R( a
    60.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ! t9 x$ A) }' `  p4 E; \# f
    61.   
    62. \\" {7 u9 m# k% k0 i
    63.             //  将定义好的单元格添加到工作表中    ! ?# N: G+ P# t! b& J% u
    64.             sheet.addCell(label);   8 G$ d. k6 @: d$ x' y. @
    65.   
    66. 2 n8 x+ k6 d5 L7 L) Y9 m
    67.             //  写入数据并关闭文件      ~4 f0 o: C6 [) G
    68.             book.write();   
    69. $ K6 K/ H+ h( K  H  k+ Q
    70.            book.close();   ! p) ^# I  C* j7 _5 l+ p
    71.   2 \9 b/ F6 i* Y4 o
    72.        }   catch  (Exception e)   {   
    73. + l* _; V7 e8 ^7 ~9 R
    74.            System.out.println(e);   
    75. 0 E1 z  ^5 j0 r
    76.        }   
    77. 4 M5 [' c- d& L
    78.    }   
    79. ; i2 O; f1 p7 y+ k# [- e; l0 U& Q
    80. }   6 a1 b8 W- C\\" ?0 p9 o1 E2 j
    81. ' z( H  n1 S, S

    82. \\" _! T# q0 \# V, u' U

    83. % R, u( |3 z/ ]$ y' d\\" U; x' w# I$ o
    84. (2)读Excel文件
    85. + b2 {1 y. ]+ H

    86. . h; ?0 L% K5 Y9 I8 [

    87. ) W. ?  p) r, t, u! B
    88. package readxls;
    89. + n: D\\" @: c2 [\\" Y6 Y- e

    90. : o1 ?2 Q6 G+ v+ K\\" g\\" t: X
    91. //读取Excel的类   
    92. : u) ?\\" Y8 W6 W+ ~
    93. import  java.io.File;   3 V* u\\" U2 ]\\" C' T
    94.   1 j8 W0 C' w& s
    95. import  jxl.Cell;   2 }, b/ c7 j* @\\" s
    96. import  jxl.Sheet;   5 v; s+ f) D$ g5 J4 |$ b
    97. import  jxl.Workbook;   
    98. * v, U4 R( E& l3 z; m& r  u' J! K0 P  B
    99.   
    100. 9 ~. z- v& H/ ?) N
    101. public   class  ReadXLS   {   
    102. ; `8 E+ H. C2 t
    103.     public   static   void  main(String args[])   {   5 z; q1 Q$ a) s4 w/ F, j+ r8 k
    104.         try    {   
    105. 6 H) {, C7 v8 N0 E- ]
    106.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    107. * i& l! I  S6 V# s1 T( v! B
    108.             //  获得第一个工作表对象   
    109.   a, p\\" `9 T/ L0 s0 w8 i. |
    110.             Sheet sheet  =  book.getSheet( 0 );   
    111. ' o8 y6 S/ M3 c' y  W
    112.             //  得到第一列第一行的单元格   
    113. $ {' ~7 e+ O0 p\\" L/ d2 ~, b! B7 }
    114.             Cell cell1  =  sheet.getCell( 0 ,  0 );   9 u+ C) D- f5 b. [
    115.            String result  =  cell1.getContents();   2 H1 ~( \6 s) V1 z
    116.            System.out.println(result);   & K; y+ z; w* l9 o& [0 y9 U
    117.            book.close();   
    118. 5 T& e& A: c& |5 t' S1 W
    119.        }   catch  (Exception e)   {   ' ?( N/ h( M\\" a0 v
    120.            //System.out.println(e);   
    121.   Z2 z8 P9 p% o3 T/ ~1 q9 }
    122.         e.printStackTrace();* q; S5 E. L  [& p; q8 v
    123.        }   
    124. - U, A5 @/ m\\" e. i. G3 t
    125.     }    + N! |* I, Q4 m* p
    126. }
    127. 4 t# @  |8 s! u' ]+ F

    128. - C- p3 h) p) D+ d4 A

    129. 4 Z7 `4 j7 T( j5 [% x) \4 @+ I

    130. ) l& k; V( ~5 y9 W% S& J, m
    131. ; _% G( V7 O+ ~\\" X/ N6 j, x
    132. (3)合并单元格、格式化单元格等* b7 W% I) y( N) e  D4 @\\" R

    133.   j8 C\\" ~7 y2 b( L
    134. ' s4 z. {0 {5 |2 e- {9 M% x
    135. //合并单元格并在单元格中输入内容
    136. 2 V\\" E, z  ]1 g$ G& a

    137. % g0 ?- e6 j6 C+ M6 q, L$ a6 Y
    138. package additionalproperty;
    139. ( P) }* p: [1 [

    140. 0 O$ Z! u5 X, H5 ?/ q
    141. import java.io.*;  D( D# A2 y5 B2 v# i/ z1 t\\" V5 _& Q
    142. import jxl.write.*;
    143. ) g* _% G! z% D7 G0 I1 G! t, I\\" [
    144. import jxl.*;. O6 o' {) G0 Z) Y

    145.   K. [\\" X+ {% K3 e/ I, J
    146. public class MergeCells {$ G/ l4 ?7 v  {\\" ]- B$ i6 b% ~
    147. public static void main(String [] args){
    148. # ^' ]8 Z\\" ~4 g5 i8 w\\" K, q% V) K
    149.   try{
    150. * h* N# ?) z  q3 C
    151.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    152. 8 G  W( {, p( `0 q% [
    153.         WritableSheet sheet = book.createSheet("第一页", 0);. K1 n% j( i) H* {7 i7 @( I
    154.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    155. 1 [& i; b+ g9 C% l, s& _! a- o7 t
    156.      ]$ l2 q( n6 S3 n
    157.         //设置填充内容的格式. M8 r! B  ^! Y\\" d) y, \$ ~\\" I+ M
    158.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    159. $ z% d( @, |! n
    160.         WritableCellFormat format = new WritableCellFormat(font);\\" X\\" C% t2 i% |; ~& Z7 F7 w$ I
    161.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    162. \\" \' ^% L2 i' J7 J$ s  t3 B# r
    163.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中% \2 `# \3 X8 B, c% f4 q
    164.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    165. * s, Q) `7 d/ j- t0 X+ V& M
    166.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式; a4 X) V; N1 `8 p* ]
    167.    \\" Q/ s: |* J$ T& j; Q$ E
    168.         Label label = new Label(3, 3, "合并", format); //添加内容$ P# w! P% l* ~9 y( K
    169.         sheet.addCell(label);+ _1 R6 P4 g; v, ^
    170.         book.write();
    171. 8 ^' W3 Y0 [6 v
    172.         book.close();2 i% @$ W: c1 S) B# M* `/ `
    173.   }//end try
    174. , [  A. [( R& t/ O
    175.       catch (Exception e){
    176. ) v! d+ N( F: n6 @1 T5 V
    177.            e.printStackTrace();
    178. ( U9 k+ b4 q8 |, Q: N, \
    179.        }
    180. 5 x6 S% |/ @% g# y
    181.    }
    182. . v( q; F$ K4 G\\" F2 J, `# K
    183. }
    184. : r& `$ s1 s1 \  X7 k

    185. / J# d& g& D' U) N, p

    186. 6 I- N3 N/ |7 B: [- n( B( J
    187. ) w  w5 q4 O  T  M
    188. (4)添加图片
    189. 3 c, ~. U  y) t; C' k( }
    190. - h: N! X0 {/ ]' w
    191.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    192. 3 L0 {: Q( q$ \% ^1 D: o

    193. / i* u5 @* e- T$ M; I9 ?# `8 g0 p
    194. ; \$ M: \7 Z- r# O- v
    195. //在工作表中添加图片' l& l1 N9 d! A\\" `

    196. ; o; k; W1 Z% S: k; g
    197. package handleimage;
    198. ; m& p. ^: f% E

    199. 8 [3 l/ \: }5 p3 ?! o8 }2 K! z
    200. import java.io.*;
    201. * S7 V: t' N' }8 v- P0 [% e( l. r
    202. import jxl.*;
    203. \\" @* a) }4 t0 x/ ]1 n1 t. L) l
    204. import jxl.write.*;
    205. \\" Q' a3 R4 T5 F. ]; z$ ^
    206. ! G\\" X4 B3 t$ |5 U4 h% D  t
    207. public class CreateImage {
    208. ) @\\" V. ?' E6 \9 g' M! m2 z' {; }2 q
    209. public static void main(String [] args){
    210. 0 M$ B( y! e7 Y4 f, |+ X
    211.   try{
    212. : [$ F; Q% }: W6 b. @
    213.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    214. * _2 V! T2 y. e1 n* f0 @
    215.        WritableSheet sheet = book.createSheet("第一页", 0);
    216. . |/ E6 G! g, t5 V
    217.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式3 f  [. J% M7 W0 `3 B
    218.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));; c0 T4 ~: S# S& o; o( W8 H
    219.        sheet.addImage(image);  //添加图片- ~7 G' p& E( F: _% {( d: a8 g
    220.    
    221. # `' J0 B' h\\" b  M8 t8 b8 w
    222.        book.write();
    223. 6 P% }2 p+ ?' u1 S: U( L1 S+ U
    224.        book.close();7 g; W* o( V+ `7 I4 Y5 y* V
    225.       }//end try
    226. ) B( U1 n* r% `; I\\" k. `! U
    227.       catch (Exception e){ e.printStackTrace(); }
    228. ( P; y. C5 P! Y* z, o+ Z
    229.    }$ s7 N# M  \/ z; Z7 y7 b2 |, i' }
    230. }
    231. 8 I- W& Z5 e4 ]% e* @: ?
    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-9-24 17:30 , Processed in 0.391601 second(s), 59 queries .

    回顶部