QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2420|回复: 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. 3 H: {, u3 K\\" U& O% U2 l
    3. \\" V( ~$ t- }5 x- j# ?- U$ K
    4.         1、环境配置% C\\" G* e: T1 x5 C: X5 d( s

    5. 2 S\\" N! }+ B0 n8 @
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html\\" V, f- q' Z2 b8 H) _
    7. ( ^6 _* b( L4 A\\" O) B
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:) i3 F; v* H9 M
    9. ; [& Y6 n& R' C( _
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. 9 l4 a: I6 G0 W+ s9 w
    12.   A3 V  j% p, V$ ]9 L+ |
    13.        (2)docs  ——  帮助文档;
    14. 3 |2 v* V* n$ E5 |
    15. 8 N1 g: e% ^8 r( V; T& P
    16.        (3)src     ——  源码文件夹;
    17. / `# {4 J# s% @4 c+ M7 w

    18. . B% A; k1 @8 c( M* H  r
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. \\" b' `% E- N: S7 `* u4 `, |. s

    21. 0 G* w: l9 g* ?) A+ p. T9 ~7 M
    22.         2、Excel基础操作实例) E# W/ [! B, _9 z9 D8 `% ^
    23. * K$ h$ _8 j. M9 o8 n
    24.         (1)  创建Excel文件   
    25. . D% i* a( E- ?3 _\\" b) s! |

    26. 3 J: p) K, `( p; `: d\\" \
    27.   /**读取Excel文件的内容   . X' k. `1 Y7 i- k8 j5 k
    28. * @param file  待读取的文件   
    29. : [. }! i) s$ T! l! p1 j- {
    30. * @return   // 生成Excel的类    */% t3 t0 I( C! y8 I. I& T( D\\" r  g
    31. package createxls;7 {& W: v- T. ^) t7 s+ |' P

    32. 1 z; T2 @# o# b4 C' D, }9 d
    33. import  java.io.File;   
    34. 4 Y$ \. E  t, T# F\\" o! H
    35.   
    36. * S( }9 u$ _; h5 ^( M
    37. import  jxl.Workbook;   
    38. * r- D3 M: }9 u: ~; E! Y5 }# F8 e
    39. import  jxl.write.Label;   
    40. 8 U8 I/ N* `: @! z, p\\" i9 }
    41. import  jxl.write.WritableSheet;   
    42. 2 N- u- [) T- t8 H2 q* r+ v
    43. import  jxl.write.WritableWorkbook;   
    44. : \, j5 E& d+ P9 e  j
    45.   6 i3 j( `3 x0 p4 c7 I
    46. public   class  CreateXLS {   
    47. & f  ^7 B, K/ J& }4 s
    48.     public   static   void  main(String args[])   {   
    49. 2 r, _% K/ f9 h
    50.         try    {   
    51. 2 e$ V2 _! y5 j  |- Y; F/ P
    52.             //  打开文件   
    53. : k$ O4 _! b& `- c. h
    54.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    55. / g7 U! {5 L, e# A. A$ o5 n
    56.             //  生成名为“第一页”的工作表,参数0表示这是第一页    3 Y& x% k# X\\" S( v, A  F$ j
    57.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    58. ' O- G7 M' p* M5 E$ h2 u0 I
    59.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    60. - ]0 k9 G2 \2 @, Z8 N; F1 z
    61.             //  以及单元格内容为test   
    62. . p7 M; I1 k1 C- h& w0 y
    63.             Label label  =   new  Label( 0 ,  0 ,  " test " );   4 L\\" H% [2 }6 G! r: P7 R/ n
    64.   1 P- {- V( V6 \0 `, b
    65.             //  将定义好的单元格添加到工作表中   
    66. 7 N; @. x; X' Z1 j' U
    67.             sheet.addCell(label);   # {; m3 V5 g\\" N: T& b- M- A1 H6 |
    68.   
    69. ( T9 d. b7 `* b
    70.             //  写入数据并关闭文件    : _0 H5 p4 v! B
    71.             book.write();   & B0 D4 S4 y# i8 S: b% M$ h
    72.            book.close();   
    73. 4 Y* ~: h) T; S9 G3 m\\" z
    74.   4 G7 \& a  F+ [\\" {3 u9 }8 x
    75.        }   catch  (Exception e)   {   
    76. ) W; r4 H$ Z1 s( X( C
    77.            System.out.println(e);   6 S9 o/ g2 ]  b6 j
    78.        }   
    79. : Q* E' l, h\\" w\\" V+ ]( D/ ~
    80.    }    % i8 o$ ^0 y* L! S+ u5 h' s2 C
    81. }   5 ~1 K3 a1 X0 y% _& R\\" h9 b
    82.   f\\" s; M5 v& n# m: `  F
    83. % W' ?6 L1 ~8 t1 C$ }1 b% b8 M
    84. & I+ f  _2 a6 W9 \6 ?6 O
    85. (2)读Excel文件: O, ]7 R5 u) z% f1 d
    86. $ _. c! j: `4 C
    87. ) X/ q5 |2 Q: `# w2 E$ U. C/ A
    88. package readxls;' N# `5 J/ u! y* g\\" ^1 L5 X

    89. 2 q$ Z. X6 H* p8 E, l( S# {4 t
    90. //读取Excel的类   
    91. $ J\\" N9 F4 p! \; i- G
    92. import  java.io.File;   * E8 c; p6 K: h8 X. l
    93.   ' ?1 K) ?; E) b5 o7 O8 T$ L2 t2 U
    94. import  jxl.Cell;   4 j( m1 Q9 L' z- \0 ]
    95. import  jxl.Sheet;   
    96. & t' Q. L' {5 }& N- A8 f7 l
    97. import  jxl.Workbook;   
    98. / T3 M$ u  V1 r! d
    99.   & X# C\\" W( v2 B  x
    100. public   class  ReadXLS   {   
    101. 1 @# ^2 V6 w  T# l& I) I
    102.     public   static   void  main(String args[])   {   
    103. & w2 b% z: ~1 D! e
    104.         try    {   \\" B( w2 m5 _2 x- s1 ?9 B
    105.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   ) A7 e- d; N/ g& H2 G. I. h) X5 T
    106.             //  获得第一个工作表对象    6 d) `$ ?  X) ?( L$ Y! J
    107.             Sheet sheet  =  book.getSheet( 0 );   
    108. & @* h/ n$ h, D
    109.             //  得到第一列第一行的单元格   
    110. $ i3 C) [/ G- Q& w7 n) b$ k
    111.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    112. - R; n. C  B. t0 b
    113.            String result  =  cell1.getContents();   : B6 z# X& @2 S# I- v4 k! q
    114.            System.out.println(result);   
    115. ( \& \% u& X# C) ?
    116.            book.close();   
    117. - N- ~6 P( F% l/ C3 b  S$ [
    118.        }   catch  (Exception e)   {   1 b9 v5 U0 Y5 s+ [( O: T( l; L6 g
    119.            //System.out.println(e);   
    120. 3 k/ L) r# ^3 l- n4 X
    121.         e.printStackTrace();4 K$ B9 k- H0 E; T7 F
    122.        }   
    123. 4 i! F; K! B% s  g* v' q; a
    124.     }   
    125. , |2 V, C9 ~9 R9 D
    126. }
    127. ( {0 W4 A7 S8 j1 l/ V5 ]

    128. 8 M7 K6 }6 X7 K7 R3 i3 e\\" X

    129. 6 _1 k( h, E% J) ]; j6 i7 ^
    130. , I; g2 r0 i2 m, _\\" J1 I. B
    131. 4 L: v. D, d7 y: K3 e; I# o
    132. (3)合并单元格、格式化单元格等
    133. \\" `5 {4 z9 Q9 [7 z+ l* M

    134. % ]8 |% x) i' O2 l0 `

    135. + L5 s6 e% g! |9 g3 N5 o5 h
    136. //合并单元格并在单元格中输入内容
    137.   S( t$ l  l2 T3 r) B' }
    138. \\" y4 \, |! ^9 c* _
    139. package additionalproperty;- R/ ~( G$ S& M

    140. 1 r. f8 V% j2 H
    141. import java.io.*;
    142. : _/ {  l+ ?\\" ~* A  G
    143. import jxl.write.*;$ f# b, Y# w5 b0 q& c! Y\\" w
    144. import jxl.*;
    145. & |\\" |+ A7 v0 P( W* _5 [1 ?

    146. * Q2 @4 w9 t- K; j! j( |
    147. public class MergeCells {
    148. : N4 f! W\\" @2 ?. o
    149. public static void main(String [] args){: f' \9 {3 x& A8 u( [/ c/ _! b\\" D
    150.   try{; r' _/ b; ^1 ~0 @
    151.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    152. ! g+ V\\" L* V2 o9 ]
    153.         WritableSheet sheet = book.createSheet("第一页", 0);
    154. 4 w5 K' u! j/ I' h+ @; w. e
    155.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    156. & N5 T* ]+ A3 ?0 x
    157.    
    158. % a6 V) O/ L8 k7 R% b- G
    159.         //设置填充内容的格式- C' [2 M* a4 g
    160.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    161. ' ]( w2 k2 G$ J$ D& v
    162.         WritableCellFormat format = new WritableCellFormat(font);
    163. 8 l- d8 \( D  Q! x
    164.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中4 c. `. m7 C9 N6 d
    165.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中! F5 R+ j' ~  z% z  p
    166.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    167. ' M  ?4 I) ^& s' }: b
    168.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式% x\\" p  x( M; k
    169.    
    170. 3 \$ \! J3 K  @
    171.         Label label = new Label(3, 3, "合并", format); //添加内容
    172. ' C7 c, R0 R. z; q) m1 Z8 O) }) t
    173.         sheet.addCell(label);4 a7 n% H0 c/ {- n
    174.         book.write();8 _\\" l: }7 i5 b/ I
    175.         book.close();& S4 G( D: Q( A# _1 u
    176.   }//end try
    177. 5 _+ u5 U# s+ J) w' j4 g. H
    178.       catch (Exception e){) @9 A; D1 l7 W% A
    179.            e.printStackTrace();
    180. 6 E! @4 h  L; G$ l
    181.        }! e& d3 p; z5 F6 b/ o* G# u
    182.    }8 \# p! z4 g2 a/ a, t! B\\" U3 T
    183. }
    184. 9 E+ U' m* a2 r/ n

    185. $ Y8 Z3 ^9 e. V1 \7 j\\" G* P
    186. 0 l1 x2 }; z! Z& O3 j# w
    187. ' F! I  x! N5 y0 u
    188. (4)添加图片( W  Y: I& M/ B1 q\\" N6 H1 f
    189. 2 E  i% T  R( O9 z. Z+ ?; F  I  U
    190.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。+ M, f9 H& ^) f4 C* ~

    191. + V( {0 B7 x# A! q
    192. 6 S. J6 l( z* c/ L% V
    193. //在工作表中添加图片+ o3 Z* S$ z& K1 A. N' e, s

    194. / C6 t4 Z: N5 o( s7 l8 y+ D
    195. package handleimage;
    196. 4 E7 d- ?3 B* T1 Z4 s, P+ J

    197. ' G2 ~. |- ?+ \6 Z; v4 U* E
    198. import java.io.*;
    199. - J3 c\\" s8 h8 A3 a& M
    200. import jxl.*;* d3 o3 g8 R) S! \
    201. import jxl.write.*;  y2 U, c& |5 G  {
    202. ! ?3 L5 \. }- p/ C, |% s
    203. public class CreateImage {9 n+ P( U1 ?) ~8 j
    204. public static void main(String [] args){
    205. 1 X. N1 w1 t, E* Z( @
    206.   try{
    207. 1 K4 {) R- n8 |& O
    208.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));& L7 ]# J7 V. U4 w: ?; @( I+ f
    209.        WritableSheet sheet = book.createSheet("第一页", 0);, p7 w3 h  X$ X. o: Q8 o
    210.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式: H  Q5 r. f# G! e  A  E$ z
    211.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));  p/ |) f4 b2 J% D' q7 R+ z4 @9 Q( C5 F
    212.        sheet.addImage(image);  //添加图片
    213. 9 W9 X* P* W\\" Q. I' n+ I
    214.    \\" r\\" H/ ~\\" ?2 D+ i  z
    215.        book.write();+ r* E5 D: [; W- N' y
    216.        book.close();0 H( h! N, G; z. `: I
    217.       }//end try( N1 t, _' `8 \% g7 z\\" S( r. B
    218.       catch (Exception e){ e.printStackTrace(); }
    219. & {7 J0 B\\" C1 ]5 N! S
    220.    }
    221. 0 N; O' ^* b/ P+ P+ o
    222. }& g+ k) P& Z4 E' Q
    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-7-24 08:01 , Processed in 0.516967 second(s), 61 queries .

    回顶部