QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2371|回复: 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的使用方法。) W- w  d6 k\\" Z. V: X/ ]

    2. * r# c  R: B4 L) J
    3.         1、环境配置
    4. 0 |8 I0 U0 {\\" j& x+ ]; W

    5. 7 g: q7 Q# M0 ^4 W+ f9 j
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    7. . A# ?8 {; m7 D, u\\" K4 j. g+ b

    8. : h* U9 K+ ^- n9 R
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:6 o# E8 ^0 q8 r6 N: c6 x0 c7 o
    10. ) T8 {6 ~8 m1 S2 [7 W4 s1 s+ j
    11.        (1)jxl.jar  —— JExcelAPI 函数库;
    12. . z5 G4 q+ y& C\\" T

    13. 6 w0 `2 _' i+ m% m
    14.        (2)docs  ——  帮助文档;
    15. ) @& F2 _5 t$ d, d$ ]3 J7 s0 i

    16. 5 s+ `4 c( _5 K
    17.        (3)src     ——  源码文件夹;0 k- @& A* u. ~! L8 X( T

    18. % S( `2 ^' d: \6 U
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. 2 s\\" |0 R3 ]/ c

    21. 8 r. t3 d* k% Q3 a/ Z
    22.         2、Excel基础操作实例
    23. 0 d0 Y! u3 W# C5 L- i7 ?
    24. , \1 V) p' {1 [3 [. u; D1 j& J. a\\" W
    25.         (1)  创建Excel文件    3 \$ B7 D+ t. s# j7 T+ w
    26. 5 d: R% W: u# p2 w
    27.   /**读取Excel文件的内容   9 S5 M* A3 o' S( E- u
    28. * @param file  待读取的文件   
    29. 6 {; E6 v6 p5 @, H$ n- n+ C
    30. * @return   // 生成Excel的类    */
    31. , C4 M$ h! u' ], U. r& N
    32. package createxls;- ?4 L% `' ^) A7 F

    33. 7 J5 ?! c\\" y+ o% ~! A. T
    34. import  java.io.File;   
    35. . E+ J' L3 g\\" l
    36.   ! J/ t\\" t8 r$ a! _  ?
    37. import  jxl.Workbook;   
    38. ) O( v- L! S7 q% A) E/ ~. v
    39. import  jxl.write.Label;   
    40.   v1 |+ C\\" P8 d) D2 V4 t- a
    41. import  jxl.write.WritableSheet;   / k\\" I% T, Z5 a7 w
    42. import  jxl.write.WritableWorkbook;   $ ]# C1 p3 M* X
    43.   
    44. ( z# S0 h: A& Z* j- Q6 l: ~
    45. public   class  CreateXLS {   
    46. ) i; E- Y( Z8 R+ k6 e
    47.     public   static   void  main(String args[])   {   
    48. ( N+ H3 u' ]/ ]. {. W
    49.         try    {   5 e1 p& Y+ B* `$ r9 Y( _
    50.             //  打开文件   
    51. 3 L3 c- Z6 U9 t; [+ W6 z  z
    52.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   # {6 i% ~% S# Y
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    54. 3 H7 I. `# F/ N$ D& i! m
    55.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   ) I. c! c- {( I) [
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    57. 3 f2 l9 f; \$ L+ Y, Z' T
    58.             //  以及单元格内容为test    % W$ ?$ Z\\" _# ~\\" P4 R2 ~0 `
    59.             Label label  =   new  Label( 0 ,  0 ,  " test " );   3 Y/ w* o1 I- {' V
    60.   9 K. X8 D! f' j
    61.             //  将定义好的单元格添加到工作表中    / A. Z& L, I; [: K
    62.             sheet.addCell(label);   & ^5 N) h1 S. V( L( p& E
    63.   
    64. + ~: z/ w( [$ z9 y& K5 r- ^
    65.             //  写入数据并关闭文件    0 D$ Z! @4 n' X2 U3 o# ]
    66.             book.write();   $ F; b5 D\\" O; W8 h( r  @  q
    67.            book.close();   
    68. 7 C& V& |6 E5 o1 [2 S\\" L; A$ j
    69.   & q0 ^) g3 @7 B% c2 b
    70.        }   catch  (Exception e)   {   
    71. $ J, F' e- s2 P$ }
    72.            System.out.println(e);   
    73. 6 o- {9 H\\" k0 Z
    74.        }    / i% i4 I$ L) |0 J: a
    75.    }   
    76. & r\\" E1 U\\" V* m# R0 l* O/ g
    77. }   $ g8 ^! A\\" H4 C7 @% @, f) X# I
    78. 8 O) Z7 m+ C: ?4 ^& W1 d+ ]2 N
    79. 4 ]5 G( ]8 t/ l* D( o- T

    80. * o3 \% L7 I& c7 _6 w
    81. (2)读Excel文件
    82. * p2 k$ c0 X, ?- a! k

    83. 3 o  V8 G- \2 t% D\\" R
    84. % E+ D; P- r( u9 `$ p6 }
    85. package readxls;- u( s\\" ?/ ^  v7 I

    86. ' h7 h6 K6 u! @2 u\\" e
    87. //读取Excel的类    / g5 f1 [9 ]) ^\\" r) X. f\\" ^
    88. import  java.io.File;   4 g- A. O( Q3 A# \( p6 }+ G. k( X
    89.   * P( ~) R1 E, ~1 R6 Y$ R% S
    90. import  jxl.Cell;   3 H) \4 _  [+ ]- i- e4 l- n( e
    91. import  jxl.Sheet;   1 c. t2 y, y) j; T
    92. import  jxl.Workbook;   
    93. / t( F7 x& b8 }
    94.   
    95. \\" K0 _. |4 R& m% X2 }0 W* G4 d
    96. public   class  ReadXLS   {   5 W8 h' d0 S& X
    97.     public   static   void  main(String args[])   {   
    98.   D0 q5 Z- u  Y: v9 U' |
    99.         try    {   
    100. * q$ N- |4 V- P# o
    101.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   4 H\\" E: w: l. j  c. w
    102.             //  获得第一个工作表对象   
    103. 2 E5 p) Y5 _: c7 y) ]
    104.             Sheet sheet  =  book.getSheet( 0 );   
    105. ( P2 q+ g( D( j
    106.             //  得到第一列第一行的单元格    % f* u: q3 u# W+ M% Y
    107.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    108. ' ?\\" H5 r  @8 b$ A1 g) D+ ]& O( T
    109.            String result  =  cell1.getContents();   
    110. 0 Y9 x2 w/ m' i4 ?8 m
    111.            System.out.println(result);   
    112. : N; j7 `5 `& ^  n
    113.            book.close();   - {: a  C- O3 H
    114.        }   catch  (Exception e)   {   
    115. 2 d7 E1 f$ b5 s0 [9 H3 S$ \\\" p
    116.            //System.out.println(e);   
    117. - K: ~: k: p: ?2 O2 S\\" a0 Q
    118.         e.printStackTrace();) b' F( H; m4 z8 L6 D
    119.        }   
    120. 3 x4 e9 Z7 r5 {9 j) K7 V7 R& @7 T
    121.     }   
    122. . B/ U8 a$ E. K# a( Z  a; I
    123. }
    124. ' O4 E! U1 y1 y

    125. , E) M! s- M: U+ c# b
    126. 1 C& k; @& `3 |$ D* ^
    127. 5 g% l& v5 Y; w% o- D  B
    128. * p! I1 L9 p* H0 e\\" }9 F
    129. (3)合并单元格、格式化单元格等
    130. + r' K6 R$ I, [- a

    131. ( S! f. D( Y/ N: O\\" \- L& Z! s% ?
    132. # i1 j3 l6 O4 ?- {
    133. //合并单元格并在单元格中输入内容
    134. 1 n9 V; S( U  T\\" t9 m

    135. & T; k* D0 w; G
    136. package additionalproperty;. `: \4 R\\" B$ {3 E: c: T0 `
    137. 9 s' c: ~+ e/ E! U
    138. import java.io.*;
    139.   ]$ K/ s  M1 M) z+ ], b0 w
    140. import jxl.write.*;/ T) _& `, r/ h2 O
    141. import jxl.*;\\" r\\" ?+ z* ?- @. W) z

    142. # L, m1 U7 z! G- P% O
    143. public class MergeCells {' h; P: L2 W- r! Y& _5 b
    144. public static void main(String [] args){
    145. 1 k2 Q' l) A5 Y$ @# [% u% o
    146.   try{
    147. 6 ?! N. L# r# m' W- L+ |
    148.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));$ e! S2 k! U$ c5 P: ^
    149.         WritableSheet sheet = book.createSheet("第一页", 0);
    150. - N\\" D7 J4 l& m7 y5 n& o0 ^6 _
    151.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    152. , \( [8 A5 T! E- B& g; R; s! E
    153.    
    154. \\" v+ k; [0 o' S) Q6 @* a2 G
    155.         //设置填充内容的格式% h0 k# j! L) J0 Z/ t/ h  f
    156.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);3 ]! \  o, S1 F  \4 Z6 g
    157.         WritableCellFormat format = new WritableCellFormat(font);3 z3 x+ H: o) O( O0 B& _6 V7 X0 W' W
    158.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中; P3 c4 m1 j! d
    159.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    160. 0 ?% \% m7 A9 v  Q8 K/ |! ?
    161.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    162. - u4 ]+ o9 W/ r+ u# u( w1 J
    163.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式+ E) F3 r0 u$ Y\\" u7 `. B
    164.    : J* s3 Q  |5 a6 M; F8 {  k+ L2 m9 D
    165.         Label label = new Label(3, 3, "合并", format); //添加内容: e& @& f- r$ S# m: a
    166.         sheet.addCell(label);: L0 i% A9 ^; i' a, o9 b
    167.         book.write();- r6 R6 u9 G- J
    168.         book.close();
    169. 1 Q& @' C) f! b\\" k
    170.   }//end try
    171. \\" d+ N2 B: g% y6 F4 ~9 x' J\\" D/ _& _! O
    172.       catch (Exception e){+ J2 m: Y7 D3 J, X+ E' ?8 g. W$ w! U6 j
    173.            e.printStackTrace();
    174. ) E. V) i- W/ R  }/ D% y
    175.        }4 F- }1 j! i7 P6 Q) p- E
    176.    }
    177. . V: C0 e% C7 `
    178. }
    179. $ Q, A* \\\" V3 a\\" b; r
    180. $ c: e4 v# J) k# Z

    181. 7 k) E4 e! G4 ~
    182. ; `* T5 Y  k; H) g3 X
    183. (4)添加图片4 [3 a8 v% a1 R) ^, }

    184. 5 n1 R6 W( o\\" w
    185.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    186. : i- o  L* o6 h- ]4 c5 Y2 S' `2 N

    187. : \, t$ m6 H0 Q
    188. + a: Z6 X4 \\\" v\\" r; o$ K/ q
    189. //在工作表中添加图片! O7 o% g# D2 C' G

    190. . R, ]3 I5 I, Q7 V9 k
    191. package handleimage;6 K# l\\" H) N- h

    192. % _2 Z) H) K5 y: x+ F
    193. import java.io.*;3 k$ g5 D' E: x! ?1 q8 }4 y3 G. o
    194. import jxl.*;& k% O1 S, z- f; o- }
    195. import jxl.write.*;
    196. 2 @% q8 x7 Y% j' b\\" u) H( z
    197. $ P0 P- N7 x  v& z
    198. public class CreateImage {, J8 R' [) \8 ]3 s, w  r* c/ i
    199. public static void main(String [] args){
    200. 3 \: P& b% m+ J7 b$ B3 s. X2 g  Q
    201.   try{
    202. ! d1 v( N/ E2 @\\" a& y5 ~7 c
    203.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));8 U0 @8 z$ e9 F# K3 j6 U+ k+ s
    204.        WritableSheet sheet = book.createSheet("第一页", 0);; R/ d\\" @- \  ^- @7 @& L( _* a3 N
    205.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    206. # }8 R* _\\" B2 m+ m0 [9 A, T% {
    207.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    208. ; L9 h3 G\\" u4 F* a
    209.        sheet.addImage(image);  //添加图片0 h5 `  |+ _5 _( i\\" [6 i
    210.    
    211. ( ?  a: O) }- `( k
    212.        book.write();9 w  z) g) a+ N7 A5 E
    213.        book.close();
    214. * k\\" q; |2 c& {( d6 S
    215.       }//end try
    216. ) T$ U9 `# T) c9 Y0 [
    217.       catch (Exception e){ e.printStackTrace(); }% k2 O& s\\" [7 m5 F+ o; t1 d
    218.    }
    219. 5 L1 T& O4 P1 T4 }7 }
    220. }! q+ E/ h2 p# c6 i8 Y* ?' v9 X& X
    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-21 15:41 , Processed in 0.407633 second(s), 61 queries .

    回顶部