QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2393|回复: 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. . O$ J4 Y4 s6 A! L6 S+ a; m9 Z+ T# h/ `& U

    3. * W, F9 c/ u; c* o2 G3 ^
    4.         1、环境配置
    5. ) i8 O\\" b# x% S& ^8 d# r8 w1 q+ J

    6.   |( Y7 E# C' d3 E# E+ a\\" I+ @
    7.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html4 g5 h5 V$ \- f# z4 ]

    8. ; S  E: u4 o) n3 F. j) g& P( k/ ^
    9.         下载完成的包解压之后,可以得到如下几个重要的文件:3 r  E' I: S0 E3 L, ~8 Y2 o

    10. ; l' |$ i! W0 A2 O0 R5 n7 m( h
    11.        (1)jxl.jar  —— JExcelAPI 函数库;
    12. / l7 g4 F4 \$ a! B% S- a
    13. 9 N& `$ }. e  K& x  V+ }
    14.        (2)docs  ——  帮助文档;
    15. & Q; W' f0 D) d2 j0 v

    16. 9 A( n8 V: T\\" n
    17.        (3)src     ——  源码文件夹;% h, p, r! v$ t\\" H2 ?# x8 a7 V

    18. 2 q- [: }( i' z  B\\" j- h
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。' Q. U5 R7 |3 k9 }$ s

    20. . l, \3 L# R* s! z
    21.         2、Excel基础操作实例8 p, T: B6 G% r1 W; R4 P. P

    22. ! ^, q5 t\\" t3 K# E8 C\\" b
    23.         (1)  创建Excel文件    ( @* n6 Y5 W, E; Z

    24. $ }# U# ?: D, r1 e4 e2 ~5 s5 ?6 j
    25.   /**读取Excel文件的内容   \\" w' h1 j: A% n* U
    26. * @param file  待读取的文件   . t, Z4 o+ {\\" p( W4 |4 T
    27. * @return   // 生成Excel的类    */$ ?4 H: R0 o) e. v$ t
    28. package createxls;# L- E\\" N( t* K# z2 Q3 F+ f& L

    29. + ]: N. A& e( t0 L- L0 ?# F1 h
    30. import  java.io.File;   
    31. 2 a) p  o2 s) Y7 j
    32.   ) P2 I- U\\" d( d9 l- j
    33. import  jxl.Workbook;   9 R* Z. d( d! C. M
    34. import  jxl.write.Label;   
    35. \\" @  E! H; f$ D6 E0 N+ f3 Z
    36. import  jxl.write.WritableSheet;   
    37. 2 b. ~: f* Y0 w- L/ W
    38. import  jxl.write.WritableWorkbook;   2 {7 u& W4 z8 n, ^! L- B
    39.   4 g& f$ d3 D# W9 x: s7 [  h. i
    40. public   class  CreateXLS {   4 n- ~0 K# ~1 c& ~% H5 Q
    41.     public   static   void  main(String args[])   {   
    42. ! |# z2 z8 C4 R, S2 N
    43.         try    {   3 \0 X4 S% P, ?1 [& O3 t  V. Z
    44.             //  打开文件   
    45. - z2 u5 f- U3 Q' K' n
    46.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   / r9 g0 H7 o2 [; p) Q
    47.             //  生成名为“第一页”的工作表,参数0表示这是第一页    & a, v' D9 p5 ~8 f; X8 Z/ }  V2 F
    48.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    49. % b, C$ Q1 L3 ^
    50.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    51. ( j: n; _  C- Y! N' ]4 ?
    52.             //  以及单元格内容为test   
    53. 0 r1 q* X0 |8 H. d
    54.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    55.   g: C1 _) p6 L2 R3 ?6 ^7 r
    56.   & S! E0 E8 e, F! U$ N! R' v
    57.             //  将定义好的单元格添加到工作表中   
    58. # v. c- L. M. u+ k8 B$ A% O
    59.             sheet.addCell(label);   3 k3 c; {( k$ ~* t
    60.   
    61. , n* r1 K% M4 B
    62.             //  写入数据并关闭文件   
    63. \\" M3 I& B- T4 f+ w  E
    64.             book.write();   & J% M- b& F; z% D7 z: G3 r
    65.            book.close();     A6 T! j( J. s
    66.   + W: S& h) w6 }4 T
    67.        }   catch  (Exception e)   {   
    68.   ]' C6 W4 U; h- X$ X+ [1 f
    69.            System.out.println(e);   
    70. ) |8 f1 z4 J+ F' Y. }3 R2 d: @9 d
    71.        }    ; Z\\" O9 X5 c. S- n) N
    72.    }   
    73. 6 g8 E+ l6 o9 A+ ]' U
    74. }   
    75. 7 u2 N) g) B8 d% z( R5 F$ y! `

    76. * M$ e8 u$ k3 {4 p1 X
    77. - F7 {, j- j3 K
    78. % O1 y. w1 E% u2 S
    79. (2)读Excel文件
    80. : R8 F1 N* w* U

    81. 8 B) C6 e/ I# c; Z7 H
    82. ! F5 A2 Q! ~6 H. J) ~- h! _' A
    83. package readxls;5 W' `# J1 \- i
    84. 6 \: Q! O1 K% c' p3 o$ A4 d$ f
    85. //读取Excel的类    3 {4 f\\" Z1 L/ ^1 x# B\\" ?# I
    86. import  java.io.File;   
    87. & Y5 h) I; T; B5 G1 F% O; b
    88.   - t% E* j9 Q; u! Q4 R! C
    89. import  jxl.Cell;   5 O2 l. p0 \3 @. X
    90. import  jxl.Sheet;   
    91. ; S% @0 y7 r3 |2 j0 U
    92. import  jxl.Workbook;   9 B; u8 ~* r3 O+ ?! q
    93.   
    94. ( \: q& _: o\\" E- v
    95. public   class  ReadXLS   {   8 _\\" N7 S/ _( T3 p
    96.     public   static   void  main(String args[])   {   
    97. ! O& w9 ~: V+ i  h1 M8 s+ b
    98.         try    {   0 U) K6 [$ m, x% x+ a
    99.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    100. : J1 L5 b% C! {# ]
    101.             //  获得第一个工作表对象    0 B- Z1 L3 ?1 y* C4 ~6 g\\" q8 {
    102.             Sheet sheet  =  book.getSheet( 0 );   
    103. 8 O3 G0 S3 P, |) }/ \) i. X\\" O* B
    104.             //  得到第一列第一行的单元格   
    105. - x& i& w9 F* q% f4 `; O
    106.             Cell cell1  =  sheet.getCell( 0 ,  0 );     S  e7 R/ T* n9 W; c
    107.            String result  =  cell1.getContents();   6 T  K! M- H4 r) B# e. G
    108.            System.out.println(result);   
    109. 9 |' o- c, J0 G2 {$ x\\" R$ ^* ]
    110.            book.close();   
    111. % _6 a2 @7 k) v\\" ^
    112.        }   catch  (Exception e)   {   ' o# |+ ]! ]7 d. C2 V
    113.            //System.out.println(e);   - y  y* Y* j7 N% S8 H+ j' ]
    114.         e.printStackTrace();
    115. , n) e' A( L( P
    116.        }   
    117. 9 g' L' G; t: E
    118.     }    9 P8 x3 X  R* ?8 k/ `) ~& H( S
    119. }
    120. ) `$ ]. b! t+ ?$ E
    121. * a, i. n+ q. V9 Y2 Y* N: Y
    122. / t, B$ A* Z5 f, N
    123. 5 m9 C. e* f4 |6 B8 d0 A6 a
    124. 6 D: z$ f7 w/ a* N+ F
    125. (3)合并单元格、格式化单元格等\\" B: _1 [- C3 `. ]+ k  P: X$ [

    126. - W1 q\\" {5 }4 ^\\" U& ~
    127.   K3 }( |\\" u; G& A
    128. //合并单元格并在单元格中输入内容! h: q% X1 v& E& `/ h
    129. ( t; {! j2 i4 I* u$ k) x8 T. f
    130. package additionalproperty;! u. f4 \\\" q8 X2 e

    131. 7 r8 s% h* R( E  y3 S1 U8 A' N
    132. import java.io.*;& Q* }2 j2 m6 z  h6 z4 w  v
    133. import jxl.write.*;0 c9 g- m' p9 L. Y2 N7 f7 g- Q
    134. import jxl.*;: X- V2 s& B7 n5 C: q. ~

    135. ; N% e5 t7 J1 v
    136. public class MergeCells {! h' a' Y/ z2 D% W7 T
    137. public static void main(String [] args){3 e3 Y0 R# v# L& U
    138.   try{
    139. \\" X/ c5 ]0 W2 L7 C) X
    140.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));4 K) _( B) R' S
    141.         WritableSheet sheet = book.createSheet("第一页", 0);
    142. 9 r2 D8 C) }$ s1 G7 P' p
    143.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    144.   n4 _- H) |8 S$ f+ N\\" L4 i
    145.    8 G& [! F; v* |: R5 H
    146.         //设置填充内容的格式
    147. ( E# O6 a7 y! M0 N! p& F
    148.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    149. - z9 \; |\\" }- n( N
    150.         WritableCellFormat format = new WritableCellFormat(font);: r5 U5 R- s# ~  n
    151.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中% J  z& n2 \2 o8 K9 v! m% G\\" ~: v
    152.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中' R* ^2 x, g6 h/ j# Q
    153.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式' _6 F0 i. v+ h3 ]. R
    154.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    155. 3 u  _% v: X% T& e
    156.    + r3 Y5 E  o- _1 ]$ Q/ n( s6 L+ d
    157.         Label label = new Label(3, 3, "合并", format); //添加内容
    158.   p/ j: F6 L- c+ Z
    159.         sheet.addCell(label);
    160. 0 y/ k/ [* F, E+ V- M
    161.         book.write();
    162. 2 s. I& q# v7 y0 y: J; w2 W9 ~
    163.         book.close();# K3 `( u. w( j& h1 b' |
    164.   }//end try
    165. : b7 m- ~( X2 g0 {6 q1 w% j
    166.       catch (Exception e){
    167. * y& A+ Y9 D/ Z6 x( N
    168.            e.printStackTrace();
    169. 6 L/ s2 d2 d5 |\\" z
    170.        }- B0 G! ^$ j) {. `5 B+ D8 u$ @0 M
    171.    }. P- `) u# T7 j  w! i- t1 F
    172. }
    173. 1 }$ [* ]  N& a6 x7 F
    174. - y- R8 G7 a* V9 ^% `9 |\\" ], a! `

    175. & P9 J. h; `6 J3 V5 w5 o- y6 ^/ U
    176. & p6 B, O9 ]& c5 r2 I\\" A
    177. (4)添加图片
    178. & Q, p1 ?: }+ a\\" Z\\" G
    179. # o% [' p! l$ K/ ~
    180.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    181. - z/ Q- O; K3 r! U2 h) T

    182. % x3 b+ d; c0 ?( e; ?
    183. * ?! k  p9 l6 H6 W0 l! |+ {
    184. //在工作表中添加图片
    185. % j& {$ k4 \; \, F
    186. / d; L: t6 S4 a5 Y; `8 ^  q
    187. package handleimage;: `( m+ |! m9 e\\" Y
    188. ( b! T& I2 l& r# B+ S- R
    189. import java.io.*;
    190. 7 W. _9 D8 U4 i* x  c
    191. import jxl.*;
    192. : K2 \9 P' S+ `0 j) r# s& h+ K
    193. import jxl.write.*;
    194. . ~% [2 {, c. G\\" M. H\\" L* _8 Q

    195. # x; I9 t. a1 p* r
    196. public class CreateImage {
    197. 1 ]( u! l) K  v! j% K$ M& m. I
    198. public static void main(String [] args){
    199. ; n& R# r( ~2 P6 \1 m
    200.   try{0 A/ U1 k# C1 @: G
    201.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));1 f, j1 R6 y# v& W8 w2 b
    202.        WritableSheet sheet = book.createSheet("第一页", 0);
    203. , Z8 m& D6 \6 c* v( b, p
    204.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    205. & X0 ^4 m) S+ C+ w6 s8 B$ |\\" d
    206.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    207. % G5 S7 S1 Z- x. v# g& e% d
    208.        sheet.addImage(image);  //添加图片
    209. ! H/ t6 Z! |7 x  c; D4 Y( H
    210.    
    211. % P! A* l+ K4 N; ^5 q
    212.        book.write();
    213. 8 T' I  y6 y7 U# P/ D) Z+ v9 j
    214.        book.close();
    215. ( ?* o. v- e2 I( @
    216.       }//end try) O; i$ h. X- B( c6 t' x
    217.       catch (Exception e){ e.printStackTrace(); }1 l! J: d+ A7 G0 h0 g0 [4 ~/ l
    218.    }
    219. : J# Q/ v& p9 {
    220. }
    221. ( n; p8 \+ N2 o% i
    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-6 12:20 , Processed in 0.450648 second(s), 67 queries .

    回顶部