QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2366|回复: 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的使用方法。
    2. & i\\" O: a5 ^4 {9 U

    3. 3 \8 x  J  R\\" l$ m0 x
    4.         1、环境配置
    5. $ ]: O5 M6 h' \

    6. - _/ l; J* c\\" R
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html\\" e; t) ?! R6 T) r) b' I
    8. : [! E- f) U+ l
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:
    10. / T1 [# m# E* y! O\\" {
    11. 2 Z( `. H) m! |0 i1 q/ G
    12.        (1)jxl.jar  —— JExcelAPI 函数库;
    13. 1 M8 k& i6 F& s3 B

    14. # z. z+ f1 N\\" n
    15.        (2)docs  ——  帮助文档;
    16. ! I& N: p: L: A: s+ u, E1 S! V' k
    17. 3 S5 k$ D, x0 N! W1 A3 i\\" V
    18.        (3)src     ——  源码文件夹;
    19. ; u4 P1 n( _: Q. _

    20.   X5 k. [+ |# o# S
    21.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    22. , L; ^\\" ^$ s3 P* b7 o8 \
    23. * F& i4 V% f- ]- Q
    24.         2、Excel基础操作实例
    25. 7 E3 d% y2 l' s% D2 l$ }- n$ I

    26. . b+ q: j% ]- X& x
    27.         (1)  创建Excel文件   
    28. ! x* n4 n, K0 E* A2 f0 b

    29. * Y5 X3 Z- ]5 Z* k\\" z! j- @
    30.   /**读取Excel文件的内容   
    31. 8 X\\" ?4 P* U; k4 }
    32. * @param file  待读取的文件   ( ^; t+ ?  C0 u; a$ X
    33. * @return   // 生成Excel的类    */
    34. % Y) X) r* {) J6 t! |
    35. package createxls;
    36. . j3 u! i9 o5 j# O8 p. J
    37. ' e2 Q7 B. c. \& S9 ~
    38. import  java.io.File;   ' h9 J# k: W0 }3 E7 s- g6 s+ a/ B
    39.   
    40. / W/ ?. d+ L/ b+ G$ Y0 c( @
    41. import  jxl.Workbook;   
    42. ( P. G% }: K\\" i, q
    43. import  jxl.write.Label;   & a; T1 E- y$ }* ~
    44. import  jxl.write.WritableSheet;   
    45. , T( i7 D/ S\\" E1 }, z
    46. import  jxl.write.WritableWorkbook;   2 r5 N) k* P\\" E. \9 z9 B& N8 R2 {$ P- G
    47.   % S4 {, U% ]3 a
    48. public   class  CreateXLS {   
    49. 9 Y7 v6 e+ |. ~+ h7 k8 ?2 j
    50.     public   static   void  main(String args[])   {   ' o7 o5 [% v* Q/ ?0 h4 b- F3 O
    51.         try    {   , g3 W$ P. S, `! I0 i4 P/ `
    52.             //  打开文件    7 h1 ^+ }- |) C6 |
    53.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    54. , f1 k6 A6 p: c) v7 z
    55.             //  生成名为“第一页”的工作表,参数0表示这是第一页    ! j# ?* v- N\\" L, N8 K. p/ y
    56.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   3 C, ^. w6 g) A5 c& O9 h* q9 z7 d
    57.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    58. ! r: Z. W8 j4 S$ l3 d
    59.             //  以及单元格内容为test   
    60. 0 {1 s! L; K- V- f
    61.             Label label  =   new  Label( 0 ,  0 ,  " test " );   2 x& c4 s\\" U+ c9 B# I; }% A
    62.   
    63. - W; l; e. X2 M& U# p( o2 v7 @
    64.             //  将定义好的单元格添加到工作表中   
    65. 9 P8 p& a- C! U0 N- B  I' l) k
    66.             sheet.addCell(label);   6 w3 y- s7 p3 u
    67.   
    68. . D/ p; k& g\\" p! d* }/ r
    69.             //  写入数据并关闭文件   
    70. 9 r9 [( u0 ]9 H- n9 z5 ^
    71.             book.write();   
    72. 4 N# ~. K, R7 |9 H  m! g* M; k
    73.            book.close();   ; P( q, }9 P8 {% m4 `3 Q0 T3 v; D
    74.   
    75. 5 Y0 H) R+ y( S/ W+ j' F
    76.        }   catch  (Exception e)   {   ) T+ L& l; ]$ l4 ^. O2 D/ _9 X; q
    77.            System.out.println(e);   
    78. ) K( I2 y- F% ^! F, K( w+ v$ n  c
    79.        }   
    80. 2 s: w( ~1 _: }7 x( k\\" l
    81.    }    3 Z5 U) P5 A* a. N. d3 O
    82. }   & y' n6 c7 B, N( [. L* R$ L7 l

    83. : B, u. `$ B/ G
    84.   l/ L+ C' o7 U

    85. % _7 T/ }. B& V3 ~7 k: N
    86. (2)读Excel文件5 k9 O& @& i! T

    87. ) A! ]8 s4 b; ?

    88. ! g- a5 n6 Q0 j* u9 a$ s& X
    89. package readxls;
    90. # m5 n% z6 V6 [

    91. 5 |8 `\\" P8 c) p! g
    92. //读取Excel的类    ! z  f5 B* P9 p3 K0 f
    93. import  java.io.File;   
    94. : ~0 V! P* N2 w9 B, X' r( T
    95.   
    96. ( }! l2 p6 @& H
    97. import  jxl.Cell;   
    98. & g9 u% ^9 O7 i& m! w\\" R) }  A
    99. import  jxl.Sheet;   
    100. $ J! W# {, k) K4 l( y  @6 h
    101. import  jxl.Workbook;   2 V: e% Q) z$ Y5 x3 C: Y$ J5 _
    102.   
    103. / X) L5 |$ [6 A6 Q
    104. public   class  ReadXLS   {   0 G8 ~- ^\\" O7 e1 n2 |
    105.     public   static   void  main(String args[])   {   
    106. - v* c. [6 e! p4 V+ T
    107.         try    {   5 W! n: O9 y& q3 D! Q! `
    108.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   # y, N. h5 @8 z9 y3 u
    109.             //  获得第一个工作表对象   
    110. 9 s/ b( Y, G& B& @$ g/ F) o0 U
    111.             Sheet sheet  =  book.getSheet( 0 );   + \. e: `% S0 Y5 p4 F9 o
    112.             //  得到第一列第一行的单元格   
    113. 1 A* i  p, \4 q
    114.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    115. \\" W6 \9 T- t* X% W
    116.            String result  =  cell1.getContents();   ( q4 v$ `1 y' \2 f3 Y& h6 _
    117.            System.out.println(result);     f. K3 _) {8 X
    118.            book.close();   : e1 y7 \  `8 k- |, X7 F\\" @
    119.        }   catch  (Exception e)   {   , P- u& Z6 d3 h! f- v
    120.            //System.out.println(e);   3 W/ h+ \! \% Z* W. q/ t2 s6 W
    121.         e.printStackTrace();
    122. ! |8 ?& o# N8 A* S8 S
    123.        }    * V) b. A8 s  d7 q
    124.     }    ) h% d' [) ]0 ]. c- F9 z
    125. }) y% k8 k. p+ y8 V! G! u

    126. - e5 C! U. A4 }

    127. 7 V9 k! ?2 ?7 m7 |: o

    128. 6 C. ~* i+ Y' Q/ M
    129. # ]$ B. E, I. G' E\\" B1 T
    130. (3)合并单元格、格式化单元格等% W$ H9 Y7 c- g7 B1 u, H. l. b8 h

    131. ; I) V; _' B4 C8 N& v6 [
    132. % E: m& o6 W7 v% }. W
    133. //合并单元格并在单元格中输入内容3 ~3 t1 }* w4 U0 X6 o) _7 C
    134. ' y+ N/ n8 T: d- e6 A
    135. package additionalproperty;8 _0 \$ z; l+ L2 n% U5 }
    136. + X! C* |! c# i# z* @
    137. import java.io.*;3 j. V& n9 e! ?$ K1 F. W/ W
    138. import jxl.write.*;2 I! f2 z2 ^4 Q. m
    139. import jxl.*;
    140. - X% o$ p8 a1 t0 x1 O5 S
    141. : {# R5 ?( s5 H. U, u. ~
    142. public class MergeCells {3 i$ \' }' v  f: \- V% B
    143. public static void main(String [] args){
    144. 0 q, r1 y, D) `, X! o# W2 B* E4 K
    145.   try{4 @, m7 Y8 [6 ~# @3 S  q
    146.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));) O. S/ f/ P5 r4 h) Z8 H' o
    147.         WritableSheet sheet = book.createSheet("第一页", 0);6 c& [9 r' u9 V% D\\" I! A% K
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格' K, x* C\\" W% t) Q
    149.    % Y$ U$ q4 T: S, U7 R  t2 C- C) j  I8 u
    150.         //设置填充内容的格式
    151. + V2 M2 ~0 Q! q' ^
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);8 R7 J+ P3 D/ S! }0 s
    153.         WritableCellFormat format = new WritableCellFormat(font);; d$ a% Q5 \2 h! d' d
    154.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中% g9 J8 L! r! _1 f
    155.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    156. 0 w6 H, D- _0 R/ V; {/ B
    157.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式  E8 l7 n  y' O! ]0 \7 t0 x9 b
    158.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    159. # R: t% H- n% E0 O* S+ J' L9 d4 u\\" W  q
    160.    5 d$ W( l4 Q( r4 z% D
    161.         Label label = new Label(3, 3, "合并", format); //添加内容' ^- j; l* w! ^
    162.         sheet.addCell(label);
    163. 3 k6 M) r; _4 b8 S( J4 B! Y
    164.         book.write();' Y# s# e% C; w2 Y% e
    165.         book.close();
    166.   [( [* S4 T\\" i
    167.   }//end try
    168. # G+ O' U/ ~( p/ t+ U: I( M: y
    169.       catch (Exception e){
    170. - U9 s- P' I( H, R1 W) U
    171.            e.printStackTrace();% y) A) |' P+ ]
    172.        }  a\\" ?/ N( R: d, ^0 `
    173.    }
    174. 9 w( t5 N/ W/ U) a. Q- C
    175. }
    176. # a0 E- L5 }. d' v
    177. . e  U( E7 ^& o2 n* k( }$ l
    178. 4 A: T/ o, J3 N3 Z  A

    179. + ?7 r+ m2 q1 E
    180. (4)添加图片
    181. 5 s! {9 w; b9 Z% _. l! Q4 B9 O% k4 Y

    182.   L5 L0 m* d- D\\" y/ A1 n; n- Q
    183.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    184. ( `. r3 i  X0 w6 i) T* l/ C& o2 f
    185. + F$ \: q( e9 P
    186. 8 C\\" e0 {' l' ?. B' R+ [4 y
    187. //在工作表中添加图片0 `\\" `$ V$ y' q! H. q) _0 c7 Y
    188. , I! J& o\\" x\\" ?1 ^
    189. package handleimage;+ N- j/ c/ Y+ d1 }1 \
    190. 4 `\\" N4 V  x$ [4 _
    191. import java.io.*;
    192. % t  U; {5 c5 n# w9 i% Y
    193. import jxl.*;
    194. 7 c* C$ }$ K$ x) K  i
    195. import jxl.write.*;% f0 s$ \' i  x& p8 v
    196. ' }0 ]\\" t9 D- @5 f, q1 g6 ?0 J) v
    197. public class CreateImage {
    198. 1 O6 C' c4 ?6 h& w+ W
    199. public static void main(String [] args){
    200. 1 I5 ~3 M5 ?: H) I& I+ C
    201.   try{9 q* F% O$ s. V
    202.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    203. ; [5 f4 Y; g& q( M
    204.        WritableSheet sheet = book.createSheet("第一页", 0);2 V& W  _# x5 a) p5 j: R8 k
    205.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    206. - ?  E& X' C: h# {9 B3 w( [
    207.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    208. ; K* C& Z0 Z% M& I8 M4 t4 G
    209.        sheet.addImage(image);  //添加图片  y: Z, r( p# Y( ?$ y7 _- k\\" }/ ~1 Q
    210.    
    211. ' U$ N# O1 u; `9 e
    212.        book.write();
    213.   m( n' S2 F7 P* X( k2 Q3 U! A% c6 ]* J
    214.        book.close();( b4 V: i\\" d) C2 }5 a& I; t3 _
    215.       }//end try
    216. \\" N) X' |& S) s
    217.       catch (Exception e){ e.printStackTrace(); }2 d. t8 s# n+ L
    218.    }\\" m0 k\\" l3 `/ G* c9 T/ V6 s& L
    219. }
    220. # p+ ~3 \# p' @4 p' Y
    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-4-18 13:39 , Processed in 0.494551 second(s), 61 queries .

    回顶部