QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2370|回复: 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的使用方法。
    2. & L! ]7 |$ `5 L- y* W4 Q

    3. ' o5 y6 ~9 G, r9 D
    4.         1、环境配置
    5. + O\\" y- w, x$ k
    6. , t- s, ~) l% B- U! Q0 F# y
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html8 k9 ~/ x; {# X! S# t
    8. ' N) m$ v% ^4 n
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:
    10. ' y/ ~\\" v) V: i( {

    11. ' l, ^% H' S+ x9 b( D  P
    12.        (1)jxl.jar  —— JExcelAPI 函数库;/ M; b9 S9 G* w
    13. 2 e( ?0 J* W, R
    14.        (2)docs  ——  帮助文档;7 T/ O9 y3 d+ v5 t9 W4 O

    15. 4 E! ^\\" s; G  [+ G8 I& v; F
    16.        (3)src     ——  源码文件夹;
    17. # D# ~( \, _! t4 h  l8 }8 E3 l
    18. + x7 }7 y% M8 O; y6 h; w* A; U
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. % \3 n4 V. y; _6 D$ l

    21. # q! {\\" d, }4 D# v+ l
    22.         2、Excel基础操作实例
    23. - @# E  E5 Z5 ~5 W& I3 s- D, E
    24. . T; G$ e- G) Q. H; _  N* h
    25.         (1)  创建Excel文件    - d7 D+ e% q5 y+ g3 d

    26. / G2 J& f  \\\" R' l; J$ X
    27.   /**读取Excel文件的内容   
    28. # @4 s, N) Z& W$ w; e+ w( n4 A, L
    29. * @param file  待读取的文件   8 p% e, P9 ]% O5 Z+ J
    30. * @return   // 生成Excel的类    */
    31. - C0 E2 U+ x\\" K3 j8 n5 E
    32. package createxls;
    33. , Z: M# F  X* Q) Y$ ~1 \
    34. % \+ o- ~/ r! r5 O4 V0 E: g
    35. import  java.io.File;   5 i* V) b' A( c( T8 _* X
    36.   
    37. ' G0 s1 K9 B3 @' C* U  f: r
    38. import  jxl.Workbook;   # O# W5 J9 V- H5 f
    39. import  jxl.write.Label;   
    40. / Z1 t$ N5 g2 [
    41. import  jxl.write.WritableSheet;   2 H$ [- t7 ?( m0 e9 T
    42. import  jxl.write.WritableWorkbook;   
    43. - x* L6 n\\" T5 U% |) n
    44.   4 S\\" l& ?& L5 B) N  u
    45. public   class  CreateXLS {   8 }5 t* y4 I9 L( R' }
    46.     public   static   void  main(String args[])   {   
    47. $ m* k  V1 N1 k
    48.         try    {   
    49. % @2 K& P2 G+ S% u7 d
    50.             //  打开文件   
    51. * U, x$ p, e; G: A. [6 n
    52.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    53. ; _/ Z% i+ j2 X5 S5 P
    54.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    55. : y/ [# I1 X6 S$ p
    56.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    57. 6 p0 V\\" ]/ l% J: ~$ V
    58.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   ' r+ ?\\" J1 X) v9 U$ H
    59.             //  以及单元格内容为test    ! h2 h4 p, |8 L3 I1 w- P
    60.             Label label  =   new  Label( 0 ,  0 ,  " test " );   $ ^$ \5 f; s2 v6 w8 X
    61.   
    62. \\" A6 X7 l  v& }0 I
    63.             //  将定义好的单元格添加到工作表中   
    64. ( `8 R7 K! {( r2 r3 @
    65.             sheet.addCell(label);   
    66. 7 B7 ]/ @1 v4 \0 |6 r) k; F
    67.   / S9 R  }4 e7 j
    68.             //  写入数据并关闭文件   
    69. # z  b# z0 X, P: ~2 Z- U
    70.             book.write();   + u- o, o* r\\" E: S9 [
    71.            book.close();   . Z3 |) N\\" t7 T\\" W4 i
    72.   : N; u( D( M2 N  @( B7 _+ S
    73.        }   catch  (Exception e)   {   
    74. 5 V7 Z9 q  n- n! O
    75.            System.out.println(e);   ( y& s! ^' B+ f1 _! `) e
    76.        }    ' Y9 p+ H2 {0 r$ {) d
    77.    }    \\" f6 n9 D\\" Z. B$ ^2 u9 N- f! A
    78. }   . u1 q% H+ _. O+ I8 s, A
    79.   s0 M8 N4 Y. `* Z) R
    80. + f6 W1 ]! |\\" B7 D/ \3 p! g9 K

    81. 1 U. n: {+ u; \. m- x  C/ O
    82. (2)读Excel文件8 i8 n% C* Z, `% H% y6 x

    83. # h. J, ]7 c$ b$ O* Z
    84. $ X; m$ ~. h+ L\\" r
    85. package readxls;. j5 O, C# e% v) i$ ~
    86. 2 ^, ^: j7 ]. x- p5 M; i  b
    87. //读取Excel的类    . V: |- [9 p7 }% h
    88. import  java.io.File;   ! U6 V# q5 D0 v+ k: A/ P3 Z+ j* l4 ?
    89.   8 z2 }/ Q, G# ?
    90. import  jxl.Cell;   % v1 c) Z3 w: A2 A; ]& m
    91. import  jxl.Sheet;   
    92. ' c! K+ n! W) P- i
    93. import  jxl.Workbook;   5 x& e5 U+ `0 d, k, R
    94.   
    95. \\" N+ Q! t5 W# O
    96. public   class  ReadXLS   {     u. h6 p, q9 E+ \; C/ `
    97.     public   static   void  main(String args[])   {   , `3 K2 _$ f+ M2 O9 u; b\\" U' r
    98.         try    {   ) i5 Y( {0 y# v$ k2 s
    99.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    100. + X- F; A' v) r0 K. ?- ?# r\\" `
    101.             //  获得第一个工作表对象   
    102. 0 L# @) A6 U6 I. H
    103.             Sheet sheet  =  book.getSheet( 0 );   ) ^; N( R4 i) F; c\\" G& `
    104.             //  得到第一列第一行的单元格   
    105. & ~$ B) z1 k' D. g$ W8 W6 {
    106.             Cell cell1  =  sheet.getCell( 0 ,  0 );   8 |+ ?! b# K0 B) k, Q
    107.            String result  =  cell1.getContents();   
    108. # m1 X2 @$ _# G& w6 X# d! l+ w
    109.            System.out.println(result);   + Z* u! }3 A# B$ s& |
    110.            book.close();   - w4 b* X0 Z) e) z4 M
    111.        }   catch  (Exception e)   {   * l8 b/ p$ o, N
    112.            //System.out.println(e);   4 R4 U0 M  S9 V4 ~2 C  u
    113.         e.printStackTrace();6 b8 ?( ^/ |+ g) y
    114.        }   
    115. * C5 f' K3 W+ ]8 r
    116.     }   
    117. . |6 c0 N# h9 A* B% G& R+ S
    118. }
    119. 2 }$ q\\" y, C# ?3 d( Y; B

    120. / x6 ?% G( H3 ~# Q/ O! X

    121. 5 X+ W( E. ?* o* Y& O
    122. \\" m8 X- F5 n7 U/ ]* F- o$ r# ?

    123. \\" t- T  s' P$ R
    124. (3)合并单元格、格式化单元格等% g2 e5 L% V7 y8 g& B  W

    125. \\" [0 R/ K( C8 m: [\\" J. F
    126. % A; {  l* u- R
    127. //合并单元格并在单元格中输入内容
    128. 6 i8 }* I( y8 C9 _: y

    129. 1 H- J8 k7 ?; @. H, E0 R
    130. package additionalproperty;3 A% {5 k+ g2 G% y1 |  D4 H2 t

    131. 3 h- u- ^$ y' q. }# o9 U% L
    132. import java.io.*;
    133. : L7 q7 ?) r% p6 D' o
    134. import jxl.write.*;
    135. 9 Q+ P. `- f' P0 f3 w2 |
    136. import jxl.*;7 w  G1 h0 t9 k* N
    137. + H% i  P8 D% f) h. z
    138. public class MergeCells {
    139. 9 M\\" q4 L; P  R
    140. public static void main(String [] args){8 r, p4 w0 W; Y
    141.   try{4 X* l8 X* E# M6 `8 H
    142.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    143. + i+ S' k& E  S9 A& N# w6 _
    144.         WritableSheet sheet = book.createSheet("第一页", 0);
    145. 5 T; v; L9 o- t1 U; W, P) x' a
    146.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    147.   M/ e+ m9 @8 _9 E& V8 e) T
    148.    
    149. ! c5 L1 b  _! R! U' e% F
    150.         //设置填充内容的格式
    151. 7 w' o1 r  B: H
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    153. & o$ F7 ?; U% v
    154.         WritableCellFormat format = new WritableCellFormat(font);1 @4 M5 s1 K/ E  b/ c; r4 W7 z$ m6 s7 f
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中$ @- z/ ^! M1 m# _$ a2 }
    156.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中0 d8 J! A& A) x  X6 [# u
    157.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式\\" t% L( G- m+ ^- k3 \& n- X
    158.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式. x& v5 b6 S1 u
    159.    
    160. 6 A6 Y4 C* p& Q6 L
    161.         Label label = new Label(3, 3, "合并", format); //添加内容  j  t1 `, N3 f6 I/ @
    162.         sheet.addCell(label);. I; X  T! \6 A% p6 Z6 B
    163.         book.write();
    164. / A+ V: Z! n; h! S. u- c0 J
    165.         book.close();- M3 ^* P4 }2 u& c# n
    166.   }//end try8 I. \: o# `. k8 w/ [
    167.       catch (Exception e){: d, @7 B9 i, i* ^; N) O
    168.            e.printStackTrace();
    169. 3 z. L4 N3 e& ^9 w
    170.        }
    171. ; B& e. c  B+ |\\" g& x3 `9 l% o1 L
    172.    }3 ^% w, p$ ?6 [+ l) P
    173. }
    174. : _. B5 Y8 v' t( t6 }$ t

    175. \\" i( ~; j! n+ r$ t9 Q& [0 v

    176. $ k0 a9 g9 C, }) C& \7 h4 R

    177. ) H$ v. n6 a1 N/ P' b
    178. (4)添加图片
    179. ! v$ |* m8 S+ D5 u8 a
    180. \\" M9 ~/ i+ X/ `# c+ E
    181.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。- Q) V+ o0 O6 G/ ?/ W7 W9 Y, L8 v7 y

    182. ( c1 X$ }2 l) c; {  o- }% Z

    183. : b, w7 [. Z$ ~* I; K. K
    184. //在工作表中添加图片
    185. - U( B/ J+ r, ^  {- o\\" M# U
    186. + t# R  n/ W2 F1 @1 F$ V8 Q
    187. package handleimage;
    188. ( F0 |8 j$ V/ a6 I3 c, I$ `

    189. + E\\" |) W9 ]& @& R
    190. import java.io.*;1 w, n1 u8 D. u
    191. import jxl.*;# w/ t- w, J/ t
    192. import jxl.write.*;
    193. 0 k+ H& w0 O$ ~+ O# W1 w* s

    194. - Z$ K! Z( S0 @* ~
    195. public class CreateImage {\\" m$ g* O- Y! @( `/ Z: `3 W7 F
    196. public static void main(String [] args){
    197. 4 h' i0 l  D/ E+ N
    198.   try{
    199. 6 ]' L$ m$ [, v- G/ L! T6 z% J
    200.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));0 z9 d, X% l1 C: X+ N
    201.        WritableSheet sheet = book.createSheet("第一页", 0);7 L0 o4 q; R) q1 S$ [
    202.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    203. * }- Z1 K0 P, L$ E
    204.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    205. 6 h- [& Z# E- v! |/ g
    206.        sheet.addImage(image);  //添加图片
    207. ( F, ~. S% W7 f3 {  `
    208.    
    209. 1 A: d\\" X# O) X8 R7 y
    210.        book.write();, l8 X  E2 x; S: i% q\\" P
    211.        book.close();8 i- L' {$ x  X% p7 v# u
    212.       }//end try0 N, e  T- w% U) M
    213.       catch (Exception e){ e.printStackTrace(); }4 ]( C  H5 `0 G5 M5 o
    214.    }; p  U9 y: H+ }' Q2 x  ]
    215. }* o, U$ W' }/ m2 `
    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-4-21 11:35 , Processed in 0.439562 second(s), 67 queries .

    回顶部