QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2394|回复: 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 E- i4 X$ h& F  v\\" U
    2. ; J0 K) F' A1 y* {9 m\\" G3 T% m
    3.         1、环境配置5 ?5 Q$ e! i( `$ O\\" p) |\\" s

    4. % S( C% b9 o5 o2 h4 r; j
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html
    6. ; w; W9 W, \: T& {5 a

    7. ' L4 ?3 F/ w4 ?3 y: Y8 J8 n
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:& t4 k8 W8 ]$ Q1 W) n7 u
    9. \\" ~1 H' j9 m+ A9 Z\\" k
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. 5 U5 x8 s* v0 I+ k+ t$ v6 ~; Q* M; Y

    12. 2 A! ]/ R8 A\\" e! d  m: J' H: ~
    13.        (2)docs  ——  帮助文档;3 m, q- R6 M' i6 k0 W
    14. / B# u+ P) V* X- }
    15.        (3)src     ——  源码文件夹;
    16. 0 I7 b! w, y/ @, W
    17. 9 G6 r; Y: R8 U: W4 _\\" w5 L
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。; I8 c& c0 W  m. i% t

    19. . m- r$ ^# e\\" A& }5 ^* {
    20.         2、Excel基础操作实例; i/ \/ o$ O  d6 a/ E; B% ~. X
    21. / N) C+ S3 p. i) I, d( M- w; E
    22.         (1)  创建Excel文件    0 x, k: A7 h3 f* ]

    23. % G$ L1 p$ O$ ^* f1 D
    24.   /**读取Excel文件的内容   # ?, B; ^: J* H+ ?1 y* e' X
    25. * @param file  待读取的文件   
    26. , J1 y9 N6 ?1 f8 q( w9 h4 `2 q2 S
    27. * @return   // 生成Excel的类    */
    28. - p  A' B/ Q; \; {
    29. package createxls;
    30. / i+ B! h5 Q% y' \4 i. i( \0 U
    31. 4 V/ L; m% e( i6 I% L
    32. import  java.io.File;   
    33. 8 K7 m0 m4 o5 |0 p9 |5 l
    34.   / S$ C& m& h4 z! A. f! S
    35. import  jxl.Workbook;   
    36. ( [\\" A- z( l+ i; v  D
    37. import  jxl.write.Label;   
    38. : e2 |$ |7 w/ n& S, V, G1 j, P
    39. import  jxl.write.WritableSheet;   ) |$ u* [9 ~: Z+ H3 k6 N
    40. import  jxl.write.WritableWorkbook;   
    41. 2 I+ c( `/ {9 I! q\\" ~: l. A# R
    42.   
    43. 6 a2 O) `% _4 |; z
    44. public   class  CreateXLS {   
    45.   X# F* m0 c- h' V9 f3 ]
    46.     public   static   void  main(String args[])   {   2 l7 V7 H' O$ {6 J2 ]
    47.         try    {   
    48.   \! {$ P# b, E\\" p% A
    49.             //  打开文件   
    50. ' B3 r6 E( N' c! V
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. : [: ~# X, ?5 D- V. r' q
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页    7 M3 g  [& G) d
    54.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   0 B4 }+ C' l: e, r& W$ @  t
    55.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    56. * J3 }6 G9 x\\" H# U/ F. o! n. I
    57.             //  以及单元格内容为test   
    58. , _! W4 [( `1 j# j* L
    59.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    60. + J& i# J% f& q9 D+ E
    61.   9 M9 q! z2 {$ M8 L: r
    62.             //  将定义好的单元格添加到工作表中   
    63. 1 S3 g# N  N4 q+ ^+ ~* f
    64.             sheet.addCell(label);   
    65. # a) q5 \& N  ^) {0 l
    66.   % P# A: n% V- ?9 F' V: ^
    67.             //  写入数据并关闭文件   
    68. 2 I6 z' R4 X  l& g- q
    69.             book.write();   
    70. 7 I, Q7 |$ B3 y& o
    71.            book.close();   & v4 l. O- o! P6 H% [% _
    72.   1 }/ E( C) V7 T1 ~
    73.        }   catch  (Exception e)   {   
    74. : D7 d) J4 m4 C/ O, ^
    75.            System.out.println(e);   . x( U8 @& W5 Y  ^# t1 b& w
    76.        }   
    77. - Y5 D' V8 P. V9 ^
    78.    }   
    79. 2 ?) Z* o2 f4 `' s7 {* p
    80. }   
    81. 4 G& W; v) d, {! Y4 H

    82. ' \7 j+ A8 M; t
    83. 7 c- y; N/ g1 z3 d; O& ^
    84. / i' f1 X$ F9 I4 g0 f) v$ W8 M\\" {
    85. (2)读Excel文件8 c\\" H\\" ]! D$ R$ c
    86. 1 h\\" {: a- U! L3 C4 Z

    87. ( Y8 Q8 {5 S$ A3 w; P- b/ B
    88. package readxls;) s( ~/ ?5 k( h3 W6 W$ b2 H+ r
    89. - X\\" Q- q/ c; k9 _* N$ O
    90. //读取Excel的类    , \0 b0 n. V: C+ D! J/ t
    91. import  java.io.File;   , z# a' u' }, W' i: i4 ^1 J: f
    92.   7 H3 ]- [; r) f; r
    93. import  jxl.Cell;   
    94. 0 r  C; W: E\\" o6 i: B( u
    95. import  jxl.Sheet;   ; {- R1 j' S5 {* @. H# O
    96. import  jxl.Workbook;   0 B. Z' s2 j) h; W) D5 v9 i
    97.   
    98. 9 ~& U5 }\\" F( h2 Q! f! Z
    99. public   class  ReadXLS   {   7 ~( D6 Y; k1 ]4 g7 [  I
    100.     public   static   void  main(String args[])   {   
    101. ; B8 h+ S8 F8 Y
    102.         try    {   
    103. 2 m  N6 ?& s+ ^* p9 L# f
    104.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   0 l$ P7 {2 E! z: i+ ~\\" Z% P0 g! h\\" w6 ^6 q
    105.             //  获得第一个工作表对象    1 [! ?% d3 i6 b5 ^5 G
    106.             Sheet sheet  =  book.getSheet( 0 );   : ]3 h  B6 h0 s
    107.             //  得到第一列第一行的单元格   
    108. : m8 N* l4 A' k% _, C$ U) g
    109.             Cell cell1  =  sheet.getCell( 0 ,  0 );   6 Z, V1 f+ I. X. e: s( U
    110.            String result  =  cell1.getContents();   : d& k$ s% G0 v- r7 }3 t4 W1 E
    111.            System.out.println(result);   ) |% s9 v: z* x& @7 f/ x- [
    112.            book.close();   4 l& q4 R. D: [+ C1 `% p
    113.        }   catch  (Exception e)   {   ( i4 Q  Q! y$ R6 h  T
    114.            //System.out.println(e);   
    115. % `1 m# }8 H0 i# s- S+ E\\" s# g6 f
    116.         e.printStackTrace();
    117. ! S2 ^. \: o1 B0 N) s
    118.        }   
    119. ' \! Z2 T  |) k
    120.     }    ( c- l6 ~; d5 X& n$ U
    121. }, A* x$ f\\" H( ^( s

    122. 7 L  P. {; `: [- i2 T3 q# d% v- B

    123. \\" b( J1 ~) s* Z, h$ h$ p

    124. 3 t; }. o6 }- }3 F2 Q2 d4 q
    125. : k( |3 {& z& R
    126. (3)合并单元格、格式化单元格等
    127. + _4 t4 d# u# m8 t2 S
    128. $ X& r- a4 |9 @% y* r

    129. * E( n4 Y- U\\" P1 y
    130. //合并单元格并在单元格中输入内容
    131. 0 h5 _1 a' V( ^) Z
    132. : S, ~9 m) u, |$ |$ [$ Y& ~
    133. package additionalproperty;4 P0 F/ Q4 L8 M
    134. ! u3 i7 r- ^2 Z6 S! z/ {
    135. import java.io.*;
    136. ) g* W9 O9 {+ D4 @( D; f
    137. import jxl.write.*;- {* S. C/ T/ ?3 X+ H/ M
    138. import jxl.*;& C- Q7 w2 d; [: O
    139. $ Y: E. t# y6 h5 m\\" U3 Q* H4 i
    140. public class MergeCells {  \. X9 F6 _4 P\\" X/ b0 m
    141. public static void main(String [] args){
    142. : f  ~5 e\\" j; k6 w& U7 {
    143.   try{3 T& q$ f; O3 n& e
    144.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));, r8 |7 T6 x. J  Y
    145.         WritableSheet sheet = book.createSheet("第一页", 0);
    146. / c. Z& u9 D9 p
    147.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    148. # t* _6 R- Z- E5 Q) ^  E
    149.    
    150. & J* Z  l4 E0 ]! O9 `
    151.         //设置填充内容的格式2 F% ]6 i- [& @$ k
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    153.   ~: }9 Y& Y- o1 s
    154.         WritableCellFormat format = new WritableCellFormat(font);
    155. $ g! {& t% o; l8 I
    156.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中8 H, s/ W  H0 v) }  y
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中# o3 K# ?\\" s! _, A( ?; H
    158.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    159. 3 R5 A8 |$ @7 {0 [6 l0 G) D8 `, u
    160.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式\\" k# {3 p( z) E: N8 \$ @
    161.    * U( ?! [$ ]' \* `
    162.         Label label = new Label(3, 3, "合并", format); //添加内容/ h- @$ P' |$ j) k
    163.         sheet.addCell(label);
    164. 5 W  T% R# j& d& v/ m/ f' s
    165.         book.write();
    166. 3 l4 @7 u5 h7 Q! t6 w7 g
    167.         book.close();8 ]) }/ d\\" \! ~5 l* [
    168.   }//end try
    169. ! A, A) Z: F. a1 Q2 E
    170.       catch (Exception e){
    171. # H7 A6 I  U. T6 B\\" D( ~
    172.            e.printStackTrace();
    173. 1 p) \- K: x# B
    174.        }' {( U0 ?1 F' G+ @8 h7 o' ?( t7 a
    175.    }8 }( `4 W8 I+ L. R\\" C! W* G
    176. }
    177. ; t. a( l  ~' r7 V' {

    178. 0 [: l* F4 T7 v\\" j9 I' F
    179. $ g! d: r+ y8 s\\" P

    180. 4 o* W: X# M0 v, b! |
    181. (4)添加图片
    182. 7 B4 [' A$ s, R% H# f\\" \4 _
    183. 2 ~8 G3 L7 p1 P' n$ c2 Y) _
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. & N0 @3 K! k( @- Q! Z, u9 x

    186. . N# i7 Q' O9 s1 D3 f; ?% [
    187. 2 t7 ^) {6 r, q, o; p/ B- w. P* @  f
    188. //在工作表中添加图片
    189. 1 n- f! j2 j0 ~

    190. 2 L4 T  G, X5 s  L9 O\\" B9 X: R; {
    191. package handleimage;5 [& r+ b9 C8 ?) [0 ~0 [& j
    192. - y! R# l* k9 E1 C! h! O
    193. import java.io.*;) v& Y8 S\\" g% m. t# N9 b+ Y
    194. import jxl.*;
    195. $ U; a4 c1 B5 i: c
    196. import jxl.write.*;
    197. + S4 y8 p5 U  F, p; W1 O) A

    198. - z! g2 Q* i8 p
    199. public class CreateImage {
    200. 5 Z% p0 i, [\\" X( Y
    201. public static void main(String [] args){
    202. 0 [# P# v6 A8 v% h( ^
    203.   try{8 n. {, Y; C9 C8 n. C! b$ [
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    205. - m6 [4 @9 F2 Y1 c1 O
    206.        WritableSheet sheet = book.createSheet("第一页", 0);' Z6 N0 D+ Y9 p% V5 E  m
    207.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    208. 0 U* O# t6 ^, K1 |3 q
    209.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));, Q' x9 r4 j% n$ ~: d7 \
    210.        sheet.addImage(image);  //添加图片
    211. # q. y  M4 H. U
    212.    8 {$ G- T$ B2 {! n
    213.        book.write();4 |6 Q, b# h5 X% N5 N$ _- m\\" y
    214.        book.close();& I( Y) }2 v% F) I9 K
    215.       }//end try
    216. / n# u8 S7 b2 k\\" {# a( N0 ?/ q6 z
    217.       catch (Exception e){ e.printStackTrace(); }
    218. 0 z, v0 Q* m1 W  t& A+ i) m
    219.    }) m( L6 V: s1 i% p5 u: F4 e- _* n
    220. }
    221. * x# H7 V5 [3 ]/ L$ R! m) k
    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-6-6 15:47 , Processed in 0.312404 second(s), 60 queries .

    回顶部