QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2359|回复: 1
打印 上一主题 下一主题

【转】Java操作Excel方法详解

[复制链接]
字体大小: 正常 放大

937

主题

117

听众

3万

积分

升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    跳转到指定楼层
    #
    发表于 2013-8-9 11:28 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    1.   JAVA 通常有两种方法来操作Excel,分别是POI和JExcelAPI,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。本文介绍的也是JExcelAPI的使用方法。\\" ~9 P0 k6 X3 r; o' T, h) j

    2. 7 s. q: `# H* a
    3.         1、环境配置
    4. 5 w, R/ s  J8 Y7 U9 S: P2 p
    5. + A/ k. u) Q  A% o
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html$ o) I' y1 l1 |  a) c
    7. 7 a. _! t8 @( Q
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:# i3 D7 h6 J1 x8 S! H

    9. 2 l: u$ `\\" D; r\\" |/ Y
    10.        (1)jxl.jar  —— JExcelAPI 函数库;& \\\" ?+ E( Q& k. a1 K* G4 j
    11. 7 v$ Y& {! T\\" E$ y
    12.        (2)docs  ——  帮助文档;
    13. \\" n, u* O1 m  I  z: H/ v

    14. 6 \! u* [. F! ?* b# ]! l# p
    15.        (3)src     ——  源码文件夹;
    16. 1 `% O1 `7 z1 b5 ^9 f! W: h
    17. 5 C& w5 s8 J# D3 I% j6 _
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。, w( v3 e; g7 g
    19. / t# k& `$ k4 Y6 y8 h0 u
    20.         2、Excel基础操作实例
    21. ! T! u& h# v+ c& \  e2 E

    22. ' v$ O4 H7 D7 Y
    23.         (1)  创建Excel文件    , _. \8 F5 o8 C4 M3 w7 X  }
    24. / g$ A9 S  ]5 T) @
    25.   /**读取Excel文件的内容   
    26. / x( v* S3 F\\" W! ^
    27. * @param file  待读取的文件   / L( _1 k- W) M3 m2 x* U
    28. * @return   // 生成Excel的类    */
    29. 6 n7 |4 P/ b1 l3 e
    30. package createxls;- ?3 F. |3 `/ K: X4 v- M

    31. ( A6 Q3 ]2 j7 A0 w/ z8 ]* d
    32. import  java.io.File;     {! H. D+ @: k& J
    33.   
    34. 3 ]; M2 @& i1 s2 N
    35. import  jxl.Workbook;   
    36. & ~' Z* n* p/ O) L) A
    37. import  jxl.write.Label;   
    38. % N& f$ }5 l\\" \' D
    39. import  jxl.write.WritableSheet;   
    40. 6 O: ~3 L6 E( N
    41. import  jxl.write.WritableWorkbook;   + s$ K3 h7 E! e% l  M
    42.   
    43. ; L* n0 k. R5 J3 I( @1 A
    44. public   class  CreateXLS {   
    45.   z$ S\\" C' y- _% r3 `\\" G
    46.     public   static   void  main(String args[])   {   
    47. # {5 M, l( P# L: F4 B7 z
    48.         try    {   # n\\" G3 ]5 S( @1 Z
    49.             //  打开文件   
    50. \\" [1 f0 b8 f: y9 y( N1 }
    51.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    52. # B/ g# Z* B; u, E% y2 ?7 V- I
    53.             //  生成名为“第一页”的工作表,参数0表示这是第一页    9 w% ?% S7 \9 K/ ~# b' B  |
    54.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    55.   {8 p) V\\" i. t  b
    56.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   ( t! }9 R: [; W
    57.             //  以及单元格内容为test   
    58. + P% c' z2 k  P5 U% l$ d
    59.             Label label  =   new  Label( 0 ,  0 ,  " test " );   7 D9 [( X. z0 U1 o% N9 U8 ?' t
    60.   
    61. 1 C! c- L' B1 s  e, g( j
    62.             //  将定义好的单元格添加到工作表中   
    63. 0 E6 S) M( i  h\\" d- y9 v1 U\\" y
    64.             sheet.addCell(label);   
    65. 1 @- n+ C0 F& Q/ d! y
    66.   & d\\" s8 Z! z7 K  R4 y4 e9 R
    67.             //  写入数据并关闭文件    & [0 B( \\\" `$ n# z8 {3 `
    68.             book.write();   
    69. 1 x7 `4 P5 G8 I/ N% \
    70.            book.close();   7 O1 I' f2 L9 X% o\\" J
    71.   
    72. , B/ O4 y* C, J% ^# ]8 s0 Z& [
    73.        }   catch  (Exception e)   {   
    74. / F/ w( L) H\\" }/ \: ~2 E1 s. G
    75.            System.out.println(e);   
    76. $ p/ S/ p* \/ O4 t
    77.        }    3 U& w* O4 u0 @. d) i5 O
    78.    }   
    79. 4 W\\" f. m& A4 _
    80. }   
    81.   l7 n6 K* }* [' e
    82. 4 ?; J9 ]; ~) }! B3 N- _
    83. 4 Q' {4 Q0 b; S4 q0 R- ~7 G

    84. 4 K0 |: p\\" Y6 u+ D
    85. (2)读Excel文件5 C\\" \. U/ Z. y- N3 O
    86. 2 Z( E8 t0 t1 d3 f5 \
    87. / q4 W9 Q  O  r/ R$ y/ L' Z- p( S
    88. package readxls;
    89. . V5 h: i& B; I% ], A% P0 y
    90. - I. L7 B' v4 }  r
    91. //读取Excel的类    0 J( `3 Z: L4 ]! b1 a
    92. import  java.io.File;   
    93. & ^3 ^* x) s6 _( V8 K. Y
    94.   0 Y9 Y1 T: [$ e  a+ i& {
    95. import  jxl.Cell;   7 l5 M/ i6 I0 `) i
    96. import  jxl.Sheet;   
    97. 1 ?) M& I- }: Z0 |
    98. import  jxl.Workbook;   
    99. $ ?$ }( n+ ^1 Y: }
    100.   
    101. \\" j) I- s& }- t& C! e
    102. public   class  ReadXLS   {   ! k1 ]# ~% G4 O7 w- w4 Q# O5 a
    103.     public   static   void  main(String args[])   {   
    104. - t6 ?5 c/ Q$ d, s+ I: ]
    105.         try    {   ; q# ]5 w4 D% b0 z0 w: d
    106.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   0 x+ ~% ?, e4 x7 H: k( i
    107.             //  获得第一个工作表对象   
    108. ; @5 n* G% \\\" }; S7 ^
    109.             Sheet sheet  =  book.getSheet( 0 );   2 G9 x2 w( ?4 }& ?1 S2 h! W
    110.             //  得到第一列第一行的单元格    ! H5 l+ {8 ~3 y) t' i5 z. \
    111.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    112. + F\\" l5 A! s2 K4 a\\" D1 O
    113.            String result  =  cell1.getContents();   
    114. + Q% G. y7 L7 v: y. F
    115.            System.out.println(result);   
    116. 0 S7 ]9 ]9 D  k6 Y5 t9 H
    117.            book.close();   ; g+ z, x6 e4 [, V  {/ [7 c
    118.        }   catch  (Exception e)   {   * ]+ E5 J; N/ L. u& K- n5 i
    119.            //System.out.println(e);   
    120. $ p8 h; l( E& X( l( F
    121.         e.printStackTrace();/ M6 Q  a' ^* p# `- c2 @& F/ b5 Y
    122.        }    1 ?' F) p3 F0 D7 N# Q6 o5 ?* [2 M
    123.     }    8 K7 Q1 C( m/ Q( C& h
    124. }
    125. ! A& m$ o$ R& x

    126. 1 R% U1 q\\" Y) M! R

    127. 7 i) J  U% V+ f, x

    128. 3 C! \* Q6 {5 @( @\\" q! z

    129. \\" j( E, y. T( i  R
    130. (3)合并单元格、格式化单元格等
    131. 7 G  q: a, |; i3 x/ C5 W

    132. % d# k! U6 [9 D9 e. T

    133. , \  u$ Y; F7 h- Q/ a4 g  |2 x( f
    134. //合并单元格并在单元格中输入内容( j' o' Q2 u( y+ [+ m
    135. 7 s9 e, w; x; @5 {+ p, J/ u! h& X
    136. package additionalproperty;
    137. 2 C2 U% |6 m9 I
    138. 9 P, p$ t! v% y+ Q( y) J/ U
    139. import java.io.*;+ t, t8 e3 _* t: t: T1 U
    140. import jxl.write.*;
    141. ; \* Z  d7 ?! k9 ~: u. o
    142. import jxl.*;
    143. ; h# ]4 H1 m, ^- d8 D% U* R) L' o
    144. ) G\\" e4 H$ z/ ?9 N* ~/ s. H8 d2 ?
    145. public class MergeCells {
    146. 7 M4 l) O+ @  h9 c, c: R1 s
    147. public static void main(String [] args){( S7 e1 ^; X' p
    148.   try{
    149. & m& B& Z\\" w, Z! U
    150.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));5 c# r/ T: ?% U  V$ p6 g% @
    151.         WritableSheet sheet = book.createSheet("第一页", 0);9 D8 V1 o0 H) u\\" Y& M& Y! p; X
    152.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格7 o4 X# n- A. Q: W
    153.    7 c' ]. J\\" V' K
    154.         //设置填充内容的格式: N% A2 K& |- h2 m2 J. J( a2 X) V& m
    155.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    156. : q/ s0 l8 P: N% h6 z4 {
    157.         WritableCellFormat format = new WritableCellFormat(font);
    158. ; r8 T0 l4 n  W+ D  `
    159.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    160. 0 g6 l# h( ?* Z3 }  X1 o% X( b& ^3 T
    161.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中/ b3 M, H* \3 S  \; y
    162.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    163. . Q- R9 n1 v. _
    164.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    165. 4 O  D! R7 _; s- B. L# [  S1 J$ f
    166.    
    167. 2 W  E: c; Q& [+ b6 U1 r
    168.         Label label = new Label(3, 3, "合并", format); //添加内容
    169. / q\\" r. d2 F7 W
    170.         sheet.addCell(label);
    171. 5 m; y1 t7 t  C* {
    172.         book.write();
    173. 4 g1 T% a8 A/ {# V
    174.         book.close();
    175. - ~\\" R' V\\" O2 m# G( `- z
    176.   }//end try; z5 W3 v. |, h
    177.       catch (Exception e){- p2 u- K* ?3 O: b
    178.            e.printStackTrace();  N4 A+ g/ h( Y$ }! t. v
    179.        }
    180. % @. `0 q; p9 k# R
    181.    }! z6 ~  @9 w- L! S
    182. }
    183. 0 m  E7 \; y9 y9 b; \: j( c% M

    184. 4 r# Z% D9 T; B6 p( P9 u( I

    185. ! e, r9 W# P* I
    186. \\" x. l  k' C' k: ?0 ~  K
    187. (4)添加图片4 b& U4 D6 S\\" h. r8 p6 \$ P
    188. # T+ @, E1 V  Y( M
    189.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。7 V; x$ [- h9 [' \6 R  n0 d
    190. / i! U1 a& |; u+ k2 G

    191. . k\\" s5 ]* p$ N2 c- O
    192. //在工作表中添加图片
    193. + I2 W# g4 R3 l1 v9 e) x; l

    194. ; p0 T8 n& Q7 _- C& F5 Y\\" A& k
    195. package handleimage;+ h& e7 [; d\\" T, w; [
    196. ) s( f/ H, x4 S0 Z\\" g
    197. import java.io.*;0 ~5 n$ x2 t* z# @
    198. import jxl.*;
    199. - G) M* ]; f1 L- R' M7 M# N- i
    200. import jxl.write.*;  z! n* O/ G- n
    201. + d1 f; n) t. r& v* n' M
    202. public class CreateImage {
    203. % U: {% G8 L1 H& q
    204. public static void main(String [] args){
    205. 9 j\\" F9 j& B6 L! ]5 g5 U0 p' v
    206.   try{* \/ m/ o2 J\\" `: d* l% g6 E0 c4 Q
    207.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));5 [; U! |0 p3 u6 a
    208.        WritableSheet sheet = book.createSheet("第一页", 0);
    209.   a. X5 o* X, h+ i8 q
    210.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式; y* F; \0 k' a5 O4 S
    211.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));0 ^. B0 T: p$ C1 b6 Q! ^
    212.        sheet.addImage(image);  //添加图片
    213. ( A: m2 Z' P9 R$ v% a( C+ v
    214.    
    215. 0 _' g2 N/ I1 A' O) q
    216.        book.write();
    217. ! \8 \* g4 v: |4 n* B+ h4 x/ x
    218.        book.close();7 j; }, u0 Z% w
    219.       }//end try
    220. # L1 d% ~/ V4 X# U2 C8 l3 U: E2 `9 c
    221.       catch (Exception e){ e.printStackTrace(); }
    222. # ?& O\\" [. B0 N\\" F1 ~
    223.    }/ c! H4 O% b) c, E$ E
    224. }
    225. ; B) u0 }+ ~' q6 M* D7 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-4-16 16:05 , Processed in 0.477639 second(s), 63 queries .

    回顶部