QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2122|回复: 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的使用方法。# o3 H9 `! `+ |) S. e

    2.   k& E# y3 q1 M
    3.         1、环境配置
    4. 4 p* k' Q/ m5 C9 M+ [. c) E

    5. 7 E5 _1 Q3 k  w
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html3 N6 K+ q( h5 ?
    7. 0 R\\" c/ w& `$ a% Z4 K\\" x# Y
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:
    9. 7 j+ L) o8 J' D2 w! k
    10. 2 h+ Q2 ?& m\\" h( d5 u\\" ^& i
    11.        (1)jxl.jar  —— JExcelAPI 函数库;4 {5 e+ O8 \$ g! w
    12. + \2 C2 `' p\\" O2 [
    13.        (2)docs  ——  帮助文档;
    14. 1 x' R2 a  v; W

    15. ; \5 X  Z' ?7 w
    16.        (3)src     ——  源码文件夹;
    17. 8 \! d  g' v% ]4 w2 o+ c# }% R( }
    18. $ \. q3 e8 }$ K3 J' l\\" p
    19.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    20. 3 F9 K2 t( v: X1 a9 [( I* T

    21. # z2 |! N3 K+ O
    22.         2、Excel基础操作实例
    23. , G( H- O; [! [' l1 ]: V1 o

    24. 8 e- J2 g0 U: b: X
    25.         (1)  创建Excel文件    ! U* x5 M$ E\\" w5 _9 G3 ^

    26. ( \. \. W5 l, j7 b7 c! |
    27.   /**读取Excel文件的内容   
    28. * B+ k2 f; y; o$ F# e
    29. * @param file  待读取的文件   ) j+ L6 E: K. L8 _
    30. * @return   // 生成Excel的类    *// T) O8 ~1 P* b( b
    31. package createxls;
    32. 1 \- S8 h: c# C& g7 |3 Z. Z6 i

    33. : H\\" h, V+ U$ d9 @# C( K  c2 N# M$ _8 A
    34. import  java.io.File;   ) S3 y0 j3 Y- o8 f* N* J
    35.   8 A6 T+ Q\\" f0 f
    36. import  jxl.Workbook;   
    37. 0 Z+ t* w' E# K! f7 o
    38. import  jxl.write.Label;   3 v* {, g: `8 ~9 e0 E
    39. import  jxl.write.WritableSheet;   
    40. $ g% P) j! o( P; v( U
    41. import  jxl.write.WritableWorkbook;   
    42. ( d) I  I/ E% k\\" p( {& `2 T
    43.   
    44. / K- v/ P( p# ~5 d) H0 b: I/ N# _
    45. public   class  CreateXLS {   
    46. / i) P+ |4 j/ ?/ G# A  r\\" X7 F
    47.     public   static   void  main(String args[])   {   ; u\\" p# r' J* L; n
    48.         try    {   ; K, f6 _- Z4 v& _; b
    49.             //  打开文件    ! b3 f# L# N  A
    50.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   + [  X\\" S* X+ V
    51.             //  生成名为“第一页”的工作表,参数0表示这是第一页   
    52. # X+ X& z: B6 }* t: N0 M
    53.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   4 X4 }4 d$ B  Z; G. d2 L\\" U
    54.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    55. 7 N# a6 k& R1 i$ H
    56.             //  以及单元格内容为test    6 U* O+ E! j# @' n& t0 f+ e, e4 t
    57.             Label label  =   new  Label( 0 ,  0 ,  " test " );   ) [/ [: w% x% [; m  [
    58.   
    59. - a2 T9 C1 m\\" m; H
    60.             //  将定义好的单元格添加到工作表中   
    61. 9 ~% q\\" Z3 f& d
    62.             sheet.addCell(label);   1 f% c! k& s( ]
    63.   
    64. 5 M' {! k+ |; V2 g
    65.             //  写入数据并关闭文件   
    66. 1 K+ Y. K. K$ F* |5 s
    67.             book.write();   ) u2 A8 r# X7 G$ \! Q. R- [9 z
    68.            book.close();   9 A4 @. ], f! Q; O; J$ Z0 ?\\" @! `
    69.   5 ]) X; l& k4 f, H3 m
    70.        }   catch  (Exception e)   {   0 d9 S5 \+ t9 Q* W5 E8 A
    71.            System.out.println(e);   
    72. - x/ y$ o) ~\\" a0 ~9 g3 v+ f
    73.        }    \\" T+ L( S+ m! Q$ T0 D2 o5 Y' y# b
    74.    }    + c# c, ^3 s5 O\\" z: B( ?
    75. }   . ]) J\\" k8 G+ S0 W

    76. , Q9 j+ e\\" m( a9 u+ J/ W

    77. ( s4 ^5 K( y$ D
    78. ( T2 }$ m, K) o* r
    79. (2)读Excel文件
    80. 9 ]- F# b8 W/ P1 z: [
    81. % \  O& U  z& B7 B( V  e, f
    82. 7 T1 p/ }* i- R! X
    83. package readxls;# n/ n& j9 K  E, {
    84. 6 d5 i2 c1 S1 x& f! i
    85. //读取Excel的类   
    86. 0 |* m& ]/ k+ J7 m, F1 f
    87. import  java.io.File;   
    88. + U+ B6 i. j) M\\" B
    89.   
    90. 4 g$ C. H+ W9 G) h9 l. U5 C
    91. import  jxl.Cell;   . F* P3 d3 e  C) U
    92. import  jxl.Sheet;   
    93. 9 s8 o# ?5 x- c
    94. import  jxl.Workbook;   
    95. 0 T2 m) e. u# I5 t/ P9 Y: K; F$ S1 ]
    96.   
    97. 2 k& r* F# w& {& r1 S% Z0 Y) d. A
    98. public   class  ReadXLS   {   & i! {- s) a8 `& d$ y0 u
    99.     public   static   void  main(String args[])   {   ! I3 |5 Q+ n8 U  K: ?% H5 d
    100.         try    {   
    101. 5 B# k: N\\" B$ V
    102.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   
    103. . Z) _$ q+ W0 |/ K. X  i! ^
    104.             //  获得第一个工作表对象    ' i. }' S  P: M- x% E0 d; q  k
    105.             Sheet sheet  =  book.getSheet( 0 );   $ F8 U4 Y: V5 \$ [/ Z7 v: |
    106.             //  得到第一列第一行的单元格   
    107. # p, ~+ [& e9 R$ b( d) X
    108.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    109. $ s) j+ ?6 r! e, a5 P& I
    110.            String result  =  cell1.getContents();   5 i\\" C* Z+ J5 I2 Q1 X
    111.            System.out.println(result);   
    112. ! b5 X1 d8 N% x) I0 V% d. t
    113.            book.close();   2 e/ |% ]; {\\" U, W9 S  T( b
    114.        }   catch  (Exception e)   {   
    115. ; z: Y\\" g4 R5 Q\\" P8 A- m3 K$ t
    116.            //System.out.println(e);   
    117. * ?! d9 k\\" P6 F& l2 n2 z  M! G
    118.         e.printStackTrace();/ t+ S- B+ d6 x# p# x
    119.        }    * m  Q5 \7 T2 ]7 Q/ z9 s- _
    120.     }   
    121. 6 D; _% o\\" X) ?4 B- u
    122. }& B' U* s( _& P
    123. & a) K! I7 o: C& W
    124. 2 v1 f6 n: H: m: [) Y6 Q$ r7 u1 u

    125. 8 N5 [) c* Z6 ~. ]
    126. 6 A- X, G* m& g& K& \, x
    127. (3)合并单元格、格式化单元格等, a8 @! g2 K8 l$ y. y

    128. 2 s+ h! J, Z0 V* x3 s

    129. 7 `9 G/ x  v$ I+ @
    130. //合并单元格并在单元格中输入内容
    131. ' Z: w  ]$ O7 K

    132. 2 v  s% K& w' {! N6 q8 o2 Y
    133. package additionalproperty;
    134. , s9 k/ q. u\\" [0 T

    135.   s+ D\\" x! t7 p2 P8 b% y
    136. import java.io.*;
    137. \\" {' \5 a/ l& x
    138. import jxl.write.*;
    139. 0 E& i* C9 Z\\" L
    140. import jxl.*;
    141. & f8 o\\" P6 s7 C! F% T) ^* y
    142. 3 E1 o( ?# P, e
    143. public class MergeCells {
    144. 5 y- u! O% I& @7 `! i, {
    145. public static void main(String [] args){
    146.   R% y5 d1 k: ~% o% Z
    147.   try{, }& y8 U: ?3 C( {$ t6 C6 e2 O! f
    148.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));' L+ L5 u2 O% S, v/ t\\" F
    149.         WritableSheet sheet = book.createSheet("第一页", 0);+ \' {: Z* |9 v$ E# `; g3 ^
    150.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    151. % F6 U/ ]  z) Q, o
    152.    
    153. 8 v7 O2 W+ e( L* X
    154.         //设置填充内容的格式6 |2 o* k: B- k2 L- a5 r( P
    155.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);4 X0 A& a) M4 d% t# d7 D
    156.         WritableCellFormat format = new WritableCellFormat(font);
    157. 9 c' r1 D3 q0 a; t! F/ F) a+ @
    158.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中
    159. 5 E1 Y& t% A5 |9 {- J8 Z$ B' ]* ]
    160.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中' _8 B+ E+ w  E
    161.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式3 M& L0 q% A+ ]
    162.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式2 u# e3 ]\\" h: v6 Z( W; A) T* j
    163.    % Y, i7 I3 k+ d9 B
    164.         Label label = new Label(3, 3, "合并", format); //添加内容! i\\" V4 ]4 ?, E6 i: i4 c/ i
    165.         sheet.addCell(label);+ j- c* i6 M8 B; V
    166.         book.write();
    167.   l3 K; u6 J) b\\" B
    168.         book.close();5 f* |' K+ Y1 |# s4 F
    169.   }//end try5 ?. \* _* L' u: V' L4 w
    170.       catch (Exception e){\\" D; z5 U: u  S6 \
    171.            e.printStackTrace();- Z( g- a* E) k& g+ I' r
    172.        }8 N9 B5 P- ]2 w
    173.    }* H- X, ]3 ]2 j9 u# {# u2 f
    174. }
    175. 2 a. c6 m\\" W4 s& ~7 Y

    176. ) G% @, B# J# e. O1 u
    177. ) Z+ ^. z4 W- Q) x\\" s$ f
    178. & O8 a0 h. O% z
    179. (4)添加图片2 E% d# R- y' j( E

    180.   K* K3 _3 s6 u2 b9 U3 K( Z& z! w
    181.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    182. : p\\" ^6 X6 K, u) t7 z
    183. & ?  l# K# k* t, E
    184. + g+ M: v* R7 W
    185. //在工作表中添加图片
    186. / l+ O$ i1 ?/ J5 @0 @5 V; i; b
    187. # t  l8 b; F% [. s0 n% W  X7 }) _8 d
    188. package handleimage;# K/ S% p- m4 m9 j2 w4 x

    189. 4 M' l3 Z7 K6 e) B4 L! g! Q
    190. import java.io.*;\\" M\\" @* |  f* u+ \9 Z
    191. import jxl.*;
    192. ! e7 P8 j9 F* ^9 Y
    193. import jxl.write.*;
    194. 2 s5 E) N' @( K$ P$ ?

    195. 7 R- [2 h7 J! a. V
    196. public class CreateImage {' X8 N$ R! s\\" s4 f/ M# @8 p1 O, m
    197. public static void main(String [] args){! F% Z! f+ E! Z! Y! j1 [$ ?4 P8 p2 }
    198.   try{
    199. 3 u- M3 _, X2 t+ c7 b\\" s' D
    200.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));$ g. x) q5 P- b: q\\" E+ y
    201.        WritableSheet sheet = book.createSheet("第一页", 0);
    202. $ J$ u1 i\\" k- A( K: p% O' @5 q
    203.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式\\" m5 m6 `! t1 R$ M9 _% t0 M
    204.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    205. ' \5 E! u/ M# y- e2 w% a0 `
    206.        sheet.addImage(image);  //添加图片
    207. 8 `\\" A# G\\" v! w% a- J
    208.    $ a. o4 ?; O, p  x: c# ?
    209.        book.write();4 x% @1 X7 L0 n) \5 ^
    210.        book.close();
    211.   ~7 \3 F; T  r. `! G* I
    212.       }//end try
    213. \\" K( t, P4 X\\" o& F8 g0 a% ^
    214.       catch (Exception e){ e.printStackTrace(); }
    215. . v( \2 K5 S; R- Q. ~& |
    216.    }
    217. ) d3 s, G5 F- {7 Y0 `
    218. }
    219. 8 _$ k' ^- a# e. l: z3 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, 2025-7-29 00:57 , Processed in 0.426300 second(s), 66 queries .

    回顶部