QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2210|回复: 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的使用方法。0 l! G- l1 R) z
    2. 0 g+ a& A6 \; r\\" e* [
    3.         1、环境配置! V- N) x7 u9 d8 t+ ^
    4. \\" }5 Y) ]8 m8 \2 }
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. : i9 V0 N5 w8 @8 }
    7. - D. _& ~2 ^/ J( m2 B
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:; u, I  U* @: g6 a- B: x

    9. & B6 p& a: T: `% [, W
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. / J0 E. X7 k! ^2 Z$ G
    12. 1 B  `# X  c) c+ b
    13.        (2)docs  ——  帮助文档;7 ?: L( W# V* k9 v+ u7 Y$ b
    14. 2 [# I2 d! {# M0 k  `: E
    15.        (3)src     ——  源码文件夹;, q3 A# W  u$ Y- i: ~
    16. : P) s) v$ K/ _6 e! A4 B
    17.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    18. & S5 N1 @8 T6 m/ |
    19. 9 ~' r, F' P3 A7 {3 g) i5 S
    20.         2、Excel基础操作实例
    21. ' |. d7 Y! r; Y
    22. # D% c0 U; Q, O6 G
    23.         (1)  创建Excel文件    8 }- c\\" {2 a2 D

    24. , l$ Q7 s' E3 c
    25.   /**读取Excel文件的内容   
    26. ( X9 |' a; @6 v\\" D: ]
    27. * @param file  待读取的文件   + Q* d. ?) h) Z6 o
    28. * @return   // 生成Excel的类    */
    29. + i! \% [7 ]9 q5 P
    30. package createxls;$ q$ B3 D\\" Q9 l- t
    31. + n5 c. ^. @( o\\" E( [; M
    32. import  java.io.File;   - K, ^4 d  h0 ?, H+ N- J6 Z
    33.   
    34. & [2 e1 Z( X3 P0 G$ ]
    35. import  jxl.Workbook;   & Z1 S0 r/ z6 j' S7 b% W% Y
    36. import  jxl.write.Label;   
    37. : C9 ^, z5 y) N. q
    38. import  jxl.write.WritableSheet;   
    39. \\" C\\" Z* {/ q8 C; K3 L5 k& [
    40. import  jxl.write.WritableWorkbook;   
    41. , r\\" I2 K/ W5 U* U9 U5 L
    42.   . A( y  Z2 i9 }3 `, E. R& d
    43. public   class  CreateXLS {     W4 p# Z' \6 _5 I) Q1 n
    44.     public   static   void  main(String args[])   {   0 Y6 Q, A( O# E, K$ K+ V
    45.         try    {   
    46. 6 Z+ @' G: b( p
    47.             //  打开文件   
    48. : S( G1 Z; s( H
    49.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    50.   T7 P, [; w8 c5 v! l  E
    51.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    52. , n- O2 |# ]# w3 |8 x\\" {% B3 ?* d
    53.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );     J. O, {, |( L8 i9 p
    54.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    55. ! O3 Q* r/ a, ?\\" l8 }2 `
    56.             //  以及单元格内容为test   
    57. 3 d- A8 Z\\" G+ L7 |2 l7 J
    58.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    59. 0 m6 D\\" M9 q* ]4 _+ L) w# o
    60.   / C0 j& y+ m7 a. K1 o
    61.             //  将定义好的单元格添加到工作表中   
    62. 0 Q8 e7 T- J  j0 |
    63.             sheet.addCell(label);   \\" I3 f1 E5 j. ^; w\\" c2 r  [
    64.   / x; Q( a7 A6 f
    65.             //  写入数据并关闭文件    2 h5 n  l6 [& ~! q( X
    66.             book.write();     t2 a( H* _$ v# G4 R& X- c
    67.            book.close();   : {, p( ]& E& S# m& u* c& n
    68.   . z2 @$ }3 t# w
    69.        }   catch  (Exception e)   {   
    70. 9 s5 q7 x0 S% S+ Y
    71.            System.out.println(e);   
    72. 8 g1 x8 W5 f; X  ]\\" |
    73.        }    : r/ X; l7 X* M0 u1 H
    74.    }    5 @/ ~$ t- y4 c7 j, X! v8 h1 M
    75. }   
    76. # X7 k! W  I\\" w+ m) N
    77. : E# z* e- K3 I+ T( _# ^
    78. * z. o2 L. v# U* n& x

    79. ! e) g2 m# y2 E! n  o2 R
    80. (2)读Excel文件
    81. & s\\" _2 D) p' S. W8 ^! q- O* _

    82. $ \, p8 o* y1 _

    83. : v5 u4 N& `  I4 M* y9 z
    84. package readxls;
    85. / a# c- E+ ]9 j8 j

    86. . I+ H9 C1 J4 x0 ^/ l4 c' A$ x\\" {
    87. //读取Excel的类   
    88. 3 K$ B\\" [; I( ]+ l8 s
    89. import  java.io.File;   
    90. : u! [+ m  k/ H4 ~2 ]* ?. I
    91.   
    92. $ W2 ~/ M8 k% j2 H/ I
    93. import  jxl.Cell;   ' V( C: K- Y3 y6 [2 A, \# `
    94. import  jxl.Sheet;   
    95. + z$ @; H4 d9 l- `( Y8 i  b
    96. import  jxl.Workbook;   
    97. : D( V0 R, b6 v2 \, h) b) H
    98.   
    99. + b\\" Y& |% N4 Q. `! \, U* g) O
    100. public   class  ReadXLS   {   8 M  T5 S\\" i& q6 f
    101.     public   static   void  main(String args[])   {   
    102. 8 P( g( _' p( K\\" |
    103.         try    {   
    104. & |. E# j8 y  p
    105.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   0 {5 v7 ?/ n1 O3 o: J/ x$ i: z
    106.             //  获得第一个工作表对象    8 }! j; d! n( }6 P& t! }3 [5 ]
    107.             Sheet sheet  =  book.getSheet( 0 );   # V% H$ O: b4 G+ Z8 H  p8 |, D
    108.             //  得到第一列第一行的单元格    3 B! s+ h5 Z' {0 r. m, {; l+ }
    109.             Cell cell1  =  sheet.getCell( 0 ,  0 );   : g  _# ?2 s' ?- E( W
    110.            String result  =  cell1.getContents();   0 D  W- N  `: A; R& }. X
    111.            System.out.println(result);   ' |: @2 _& g0 Q
    112.            book.close();     v4 ^0 [7 N& b) l
    113.        }   catch  (Exception e)   {   5 ^8 z! z3 w; o4 o6 G2 p# |
    114.            //System.out.println(e);   9 H% @9 j. @& O1 r& {
    115.         e.printStackTrace();# f. B% D8 O% n7 K
    116.        }   
    117. ( n) @3 ^' B$ u/ R8 Q9 H
    118.     }   
    119. ' A* q- a* N5 |
    120. }  @! J0 J7 o+ c+ [  a; Q

    121. 2 M& p' @; D% n- j' `

    122. / Z) o! e& p\\" m- e* y. l+ c( G5 j+ G

    123. ; \1 {0 N- T4 y' J% Q\\" u1 b# {7 ~
    124. . m3 h  \* u- O& u
    125. (3)合并单元格、格式化单元格等
    126. 5 _. B. t3 O& ]1 \. w6 D
    127. # U- s. A/ r% D9 f! m; T  q

    128. ; }* K. l$ e: Z& c% |0 p
    129. //合并单元格并在单元格中输入内容
    130. \\" x' a4 \4 O, b$ ~8 }  z3 A' r# O+ o, Y; l
    131. ( C6 Q, E: E\\" V  i- b2 V
    132. package additionalproperty;& G, N) N* s: P1 l2 L( z8 q1 e
    133. / g; p. M! K8 x- T- W4 ~\\" l5 n- l
    134. import java.io.*;
    135. 1 \+ s\\" w. j1 c* f! E\\" R* |
    136. import jxl.write.*;
    137. # t0 B1 w; w; }% W\\" g
    138. import jxl.*;
    139. + G; [6 D; r7 z. L( H' l

    140. . y9 M) p8 `# G* e8 z7 g/ e
    141. public class MergeCells {
    142. 9 i, n' j2 ?0 }; J
    143. public static void main(String [] args){5 w6 e) d2 @. K, P
    144.   try{
    145. # A# c5 b3 B, w2 }. S
    146.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    147. 5 J  X1 S2 U2 Z# g& E  ~0 s# B1 \
    148.         WritableSheet sheet = book.createSheet("第一页", 0);
    149. \\" `- M. y% H4 O# E
    150.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    151. ! V1 q; z, T+ w8 b$ P- c
    152.    ; Y( i  L. a/ F4 j7 y
    153.         //设置填充内容的格式0 \8 U) y9 V2 S( K  D5 R& T5 ~
    154.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    155. 4 w) Y, D- s- T5 W+ H& L2 G
    156.         WritableCellFormat format = new WritableCellFormat(font);1 f. g% W+ s( Q8 `
    157.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    158. & O\\" [; `) W) `! e\\" j& g5 u9 N
    159.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    160. ; L/ R5 Z1 |# l
    161.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    162. 7 S0 Z) q; H* e* l$ f7 Q7 y9 M6 O
    163.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    164. & y5 z* t) V* h1 z+ g
    165.    
    166. : u5 v0 F6 `4 S  l4 t% z
    167.         Label label = new Label(3, 3, "合并", format); //添加内容) Q1 z; a. G4 P6 I3 [
    168.         sheet.addCell(label);* h1 {- {( A8 ^\\" Z2 R
    169.         book.write();+ u) b\\" ?. |! W
    170.         book.close();; n1 ]/ t  F( L1 g* E
    171.   }//end try
    172. & T. ~7 }7 H# N# Q* t7 o0 Z( O1 q
    173.       catch (Exception e){
    174. : Z9 c3 i# u2 ]& }7 `: L
    175.            e.printStackTrace();3 T. Z1 [! |) p! b! O  @. k3 U
    176.        }
    177. $ u6 H2 A* {# y! o9 }' t0 N
    178.    }
    179. 9 D' s  l, ?; N/ L- @1 e: r% [
    180. }- R. z. O. X5 C9 m* N1 j
    181. $ W; J9 [. |/ U& G- b
    182. ' l1 Y9 @7 Q% `+ o% D- ~

    183. 9 I' o/ t1 b0 _
    184. (4)添加图片
    185. 1 Q$ t+ @2 S5 s( |
    186. # P. I# p* C9 ]: U
    187.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。( p( ~/ F5 ^% K7 ?2 _

    188.   V; S3 I7 T: ^# ?& {
    189.   i1 X) Y9 b4 O+ }% n9 }
    190. //在工作表中添加图片
    191. \\" O8 v- ]9 ]- h5 B6 {5 _+ f
    192. # j. w: v* Z' S9 B9 D. s' E
    193. package handleimage;
    194. 4 `) x/ g0 K9 E# z) G3 E9 M9 y+ r

    195. # X5 E% \, F8 e  ~3 U
    196. import java.io.*;2 `; v/ x/ O! \) W% y
    197. import jxl.*;$ w7 r6 }( s! _# r) X
    198. import jxl.write.*;
    199. 1 V8 @- s7 |) @! ?4 |6 Q
    200. 7 N( M7 b+ F0 J! ^4 Z; e
    201. public class CreateImage {9 b\\" w' l* B7 G4 O
    202. public static void main(String [] args){% H* @' z\\" h. s& f; v: G( r
    203.   try{& \0 G. \7 v- T. y* Q
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    205. & Y& i( c& ^. L/ j
    206.        WritableSheet sheet = book.createSheet("第一页", 0);
    207. - Q% z( |8 B! r7 X
    208.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式5 T6 X/ R* H\\" [0 c
    209.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));  d, O- t/ J. {\\" V3 ?* L
    210.        sheet.addImage(image);  //添加图片\\" W# ?9 y% ^. z$ U5 r4 F
    211.    
    212. 7 M# U# e2 D( w) u) ~
    213.        book.write();! Z+ g. ]/ _3 i' @
    214.        book.close();
    215. + T2 {, U. ]2 f: o1 y
    216.       }//end try
    217. * B/ R1 _0 v$ y. H
    218.       catch (Exception e){ e.printStackTrace(); }+ A: l: y5 n0 M6 f
    219.    }
    220. % g9 f+ L3 F# c' ~
    221. }2 X( ~! X: c& ~. O& k( W+ d$ {$ s' ?( U
    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, 2025-9-30 23:38 , Processed in 0.399836 second(s), 67 queries .

    回顶部