QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2402|回复: 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. % ?' \+ |- v) @\\" I& _: X3 v2 C) @

    3. , S: N  H' S' _
    4.         1、环境配置$ n1 H! N3 i$ k5 N

    5. 0 n+ T4 f8 r( \$ M9 ?
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html; M$ v$ \$ I3 n/ w$ M0 v\\" Z4 H

    7. % r8 a! g# U7 a0 }4 B4 N6 ~
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:; U' A- C6 i) ~0 W0 Y( }& ]/ m

    9. % }6 _. J6 `/ D/ Q/ S
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. 8 j2 T+ h  n/ w# Q& z
    12. \\" R; \. }$ R* x
    13.        (2)docs  ——  帮助文档;
    14.   d6 R5 s' I3 a2 t7 [4 D3 Z\\" ?
    15. : ?4 w7 ]7 V! b0 ]( _# N
    16.        (3)src     ——  源码文件夹;
    17. * |9 G1 J# g/ V' ]( T7 ?
    18. ' `% D7 a3 t/ G7 ~  X4 v; C8 v
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. ) v\\" m, W# W! ~# D5 O: y. {) {

    21. & e, Q6 ~( O6 M0 C) ^\\" f
    22.         2、Excel基础操作实例# m) `! N9 r2 y' h

    23. 7 p- N; g$ M/ O) x8 _; a: @- K2 b
    24.         (1)  创建Excel文件   
    25. ; m, [3 z9 |* \* o\\" u
    26. . {3 E, B) Q\\" h
    27.   /**读取Excel文件的内容   ; _% n6 M# T# Q- ]# `6 H4 p7 A( t/ I
    28. * @param file  待读取的文件   0 h' f& B( \) g+ V
    29. * @return   // 生成Excel的类    */: v9 G3 P1 B3 v, Z8 Z! d  m. u
    30. package createxls;! g( E, U# N- ]0 x1 E

    31. + v1 j) O2 O# H5 h( V+ x
    32. import  java.io.File;   / }. q, t1 A6 G! ^. ]5 d7 @5 _
    33.   & b- }$ @5 t# q
    34. import  jxl.Workbook;   
    35. 2 o& |! {9 z9 {2 Z+ l
    36. import  jxl.write.Label;   
    37. 5 G\\" U0 }9 x) z\\" i6 W5 M
    38. import  jxl.write.WritableSheet;   ; W8 ]; J6 _6 b* w# t9 B
    39. import  jxl.write.WritableWorkbook;   
    40. & y. t! V* j. ?: N( s/ U+ D
    41.   
    42. 5 j3 a. w1 c) f  M
    43. public   class  CreateXLS {   
    44. & L7 G# Q' A$ x; \/ ^8 I, I- }% e/ ^
    45.     public   static   void  main(String args[])   {   ; K0 d0 ^9 F. Z- P! n) b2 g
    46.         try    {   
    47. , N! V% g, Z8 R+ K
    48.             //  打开文件   
    49. + O$ l: `\\" G4 Q) s
    50.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    51. & F! ^\\" |+ Z% H: ?9 L
    52.             //  生成名为“第一页”的工作表,参数0表示这是第一页    . x$ f$ d+ f7 V! A8 I8 L3 l6 \
    53.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    54. 9 F; H% {1 n3 K5 g
    55.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   ) y9 K( F, C8 [+ L
    56.             //  以及单元格内容为test    \\" i, x& h+ ~$ i
    57.             Label label  =   new  Label( 0 ,  0 ,  " test " );   . F/ i* {0 g6 h9 |3 ?
    58.   
    59. ) ^/ Q0 i# _2 C
    60.             //  将定义好的单元格添加到工作表中   
    61. $ h) l% W- \1 Y/ F2 a\\" j4 z
    62.             sheet.addCell(label);   
    63. / k( f  |# s1 n9 i' R
    64.   8 i+ t7 e6 @, y1 d! Z
    65.             //  写入数据并关闭文件   
    66. 2 K/ j3 {% L* F( B0 {& g\\" p
    67.             book.write();   
    68. 9 j3 m3 L% {8 I6 T. T
    69.            book.close();   \\" ~; \+ ?8 y( V& n7 _
    70.   
    71. / O# v+ y, Z1 e. A( l/ y\\" j
    72.        }   catch  (Exception e)   {   / ?  Y) p$ ]: i\\" e
    73.            System.out.println(e);   ; f9 Q( Y\\" }7 h. t8 J! J
    74.        }   
    75. ) e0 r) [+ M) j- @. X2 V
    76.    }    4 m5 F# ^2 b  v( f/ J
    77. }   
    78. 5 b& |6 R, _; o/ `\\" L5 d; n( e3 M
    79. 5 O, {1 N/ n6 A$ m* }! B; J

    80. - I. A: f7 J' b' z3 P+ }
    81. + k: D. `8 Q& i5 I4 f7 I0 L
    82. (2)读Excel文件4 ~( ]- W; X0 v5 [\\" z
    83. 4 U# K  J; S$ C  C) y+ f

    84. 0 z8 k0 N/ l2 `' i  c
    85. package readxls;
    86. . Y) G7 H1 d. l% Q# U

    87. 1 E! I  d& g/ `\\" h6 t* @+ q
    88. //读取Excel的类    6 l  E1 m  z* k# v3 b* A' `+ I
    89. import  java.io.File;   : F! Y\\" U5 X/ o7 W\\" |; f: |6 ^
    90.   / r+ o  d: h! Q; g
    91. import  jxl.Cell;   
    92. \\" \7 `8 ?/ _4 R' T
    93. import  jxl.Sheet;   2 q- ~  _$ @0 _0 P) {5 o- }\\" ], w
    94. import  jxl.Workbook;   % t5 t* t# p8 g8 u
    95.   : n% S/ o& h; o+ j\\" Y* T
    96. public   class  ReadXLS   {   8 g7 V& a0 {1 g/ ?3 m# A
    97.     public   static   void  main(String args[])   {   / b2 r% A$ [) e: w* z* W
    98.         try    {   * ]( I. z* P2 i3 A
    99.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   \\" `$ Z* c* S' N! l
    100.             //  获得第一个工作表对象    & c- m- I* x0 p: ^/ d
    101.             Sheet sheet  =  book.getSheet( 0 );   + `1 `* I/ T( O* x& S: j) \
    102.             //  得到第一列第一行的单元格   
    103. - K/ ^\\" G- P# q7 \/ `
    104.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    105. , r  F) Z+ U2 x( Z1 v! l, r
    106.            String result  =  cell1.getContents();   
    107. 6 X! P0 E% ?6 d* b
    108.            System.out.println(result);   ' l7 ~! v2 y( |. {: E! B
    109.            book.close();   / w/ C5 V  L9 F8 z
    110.        }   catch  (Exception e)   {   
    111. 7 t- K  h6 ]$ \( b
    112.            //System.out.println(e);   
    113. 6 x  [8 C) p+ G
    114.         e.printStackTrace();! r8 L; D# ^3 _/ _, h  g* z2 E0 {
    115.        }   
    116. 5 ]0 d1 v; T3 x* r
    117.     }   
    118. ' `* v' O. g- C+ y/ _# n  p
    119. }
    120. ( r+ w9 Y- T; h1 L7 `
    121. ' P) L2 ?. M/ j) y( k! M\\" k) G
    122. , j3 H, }0 G9 {; l3 F
    123. , p6 f% A1 B5 m9 G2 a0 t

    124. , h7 z- d9 |2 E! D% c\\" \
    125. (3)合并单元格、格式化单元格等
    126. 3 ~( O. O8 k$ v
    127. 5 C5 R& b1 g- E
    128. ( Q$ z8 S+ k: n/ ^* E6 H5 B
    129. //合并单元格并在单元格中输入内容$ l\\" T/ V- c4 s7 u
    130. - _! u! y, u0 k4 r
    131. package additionalproperty;
    132. ) |# G$ D1 C; ], r* F- e9 t
    133. + p, \  p7 {+ P' @& x' l
    134. import java.io.*;0 f& T3 X, J3 z1 R
    135. import jxl.write.*;
    136. ' i* `/ J5 T! p' k' T$ {. y4 m
    137. import jxl.*;
    138. ! V4 x# U* I1 r' o
    139. - [' {$ W6 G3 Y: b
    140. public class MergeCells {
    141. 2 }+ |! x) k  ~4 U) p\\" y+ C7 k8 N
    142. public static void main(String [] args){
    143. & M; I; l. }5 V6 ^
    144.   try{
    145. 7 f+ T- R( w3 S
    146.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));: c7 m) T4 V. p3 N' s; C5 D
    147.         WritableSheet sheet = book.createSheet("第一页", 0);
    148. 6 O8 I( j  P( U4 t+ y
    149.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格1 _  _! c+ s0 e) z3 ^; W  U. p7 |
    150.    
    151. : I1 T3 V  I3 R) C/ e( j. c$ M! h! }\\" T& f
    152.         //设置填充内容的格式; ~. L5 K: l, Z& N! ]
    153.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);- n7 W% Z4 Z. Q  b0 M
    154.         WritableCellFormat format = new WritableCellFormat(font);
    155. 8 \; t/ s* }7 C% ?- r! p7 e; u% F
    156.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中, b7 d; b0 z# W) {1 o4 j  M
    157.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中% f4 K9 [/ S  S
    158.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式7 l' g+ A7 T+ F; }3 x5 B' J
    159.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    160. 0 i7 C/ c# R, c) y
    161.    
    162. ; C7 [4 U: n- @! R3 B
    163.         Label label = new Label(3, 3, "合并", format); //添加内容& m3 m$ i$ ]9 m5 K
    164.         sheet.addCell(label);# g7 |1 ~2 H6 U! [
    165.         book.write();
    166. ' i# Y4 ]7 {4 Y9 x7 \
    167.         book.close();& c( Q4 t/ E& z
    168.   }//end try
    169. 0 a6 I1 I7 l5 t2 N: r1 A2 E( \& ^
    170.       catch (Exception e){
    171. + k5 B3 k6 A) m) g3 d) V( n: T
    172.            e.printStackTrace();
    173. \\" }# u  F\\" c3 m: w- x0 Q$ y: }
    174.        }
    175. $ [( D- ]; d0 U5 X\\" y' t
    176.    }0 B! S0 e' d0 h/ ^' x& E
    177. }\\" S% X. Y\\" @\\" s& A& q
    178. 0 g3 E& W% k- b

    179. - n2 D5 }6 w8 q% j\\" o2 m4 N

    180. 4 q\\" i) h* Y, T1 [
    181. (4)添加图片
    182. ' _8 Z1 _0 L) |
    183. & X+ c0 c4 O$ J4 P. Z
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. , G4 F1 u% @\\" w  D) L) w. L

    186. 7 h% H% [4 G$ J& P7 k' }* O
    187. : ^& X3 D& J) s/ Q  H* H) D
    188. //在工作表中添加图片
    189. , U- S( [7 w* l% w9 K  e6 p
    190. , q5 z, H\\" x  N8 y- X1 \$ Q3 O6 J: _
    191. package handleimage;  x1 d( V# e- A: O4 {) N

    192. \\" r5 ^9 k$ q$ e. {% F* h$ D
    193. import java.io.*;
    194. 5 d: l. s/ \& k6 S
    195. import jxl.*;! S6 R6 n: X( M% s
    196. import jxl.write.*;
    197. $ d0 |) u$ s! h! B\\" v2 \
    198. 6 K1 Q. M( [- l. t
    199. public class CreateImage {
    200. % G- e  r+ j3 \6 A, x
    201. public static void main(String [] args){! d+ a5 \' b  W1 i; _3 \  L
    202.   try{
    203.   ?2 x  c1 {; ?+ z\\" K% `
    204.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));: ~1 \4 _2 V+ H5 l# r5 r
    205.        WritableSheet sheet = book.createSheet("第一页", 0);
    206. % d+ n) a\\" S  f( V- ]
    207.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    208. 5 o7 l) Q! }0 R
    209.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));1 k) c1 O3 V8 ~
    210.        sheet.addImage(image);  //添加图片0 U6 d5 J8 Z7 v) t1 [+ g1 j4 k
    211.    \\" j, i) e8 Z; d# C3 ]$ X' a
    212.        book.write();5 h  c8 j9 A) W# F/ m: F8 v  r6 `
    213.        book.close();
    214. - ]9 }( X/ [/ s/ L2 {
    215.       }//end try2 X9 k2 q: j: D- b
    216.       catch (Exception e){ e.printStackTrace(); }
    217. ) G- H' v1 Z- }
    218.    }
    219. # K- n) o1 x2 u( H$ B* {6 r* T
    220. }\\" o8 \# x0 T  J+ J$ e3 P
    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-6-15 04:34 , Processed in 0.438832 second(s), 67 queries .

    回顶部