QQ登录

只需要一步,快速开始

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

【转】Java操作Excel方法详解

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

937

主题

118

听众

3万

积分

升级  0%

  • TA的每日心情
    开心
    2026-9-17 16:51
  • 签到天数: 265 天

    [LV.8]以坛为家I

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

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

    群组: 2013年数学建模国赛备

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

    2. 9 i6 N& s* ?. x  T8 m: m
    3.         1、环境配置: i9 H& @. y2 w\\" Y

    4. 1 v( T) R/ l\\" U  E\\" G  h1 L
    5.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html, V* S9 t0 Z% V1 V\\" B

    6. , r) j% R) K5 Q# ~; V) a5 T6 f6 I
    7.         下载完成的包解压之后,可以得到如下几个重要的文件:\\" U( A+ y$ z% V2 D; I# u
    8. * v% ]; U8 r, F3 F/ _
    9.        (1)jxl.jar  —— JExcelAPI 函数库;
    10. ; Q; k. o3 M5 K* |

    11. # Q* k* a+ l0 W  ~, @
    12.        (2)docs  ——  帮助文档;: n% `1 l5 v+ W, J2 G* r+ w% D
    13. + n( r, j7 ~1 I2 ]4 T4 o& R\\" Q
    14.        (3)src     ——  源码文件夹;
    15. 3 w, h5 q% z9 ~

    16. : m  r. f4 s/ R3 u2 `. y, B7 c
    17.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    18. 3 T1 @7 j7 ]* _0 ~% P% O
    19. # u7 n! I6 e3 L; N' G2 w\\" g
    20.         2、Excel基础操作实例
    21. & V! r3 @0 u$ J0 _# N- u+ M
    22. ! y0 u: F) {+ V% C
    23.         (1)  创建Excel文件   
    24. , h' h\\" u2 Z. ]( Y6 L9 ^

    25.   Q7 \: a3 X5 Q* T* r$ _
    26.   /**读取Excel文件的内容   - c6 s0 q% G( N: Y1 ~/ [2 u9 U
    27. * @param file  待读取的文件   , s- J$ f4 g0 p7 J! n
    28. * @return   // 生成Excel的类    */
    29. 5 Z3 X. c. w8 B1 q% f
    30. package createxls;6 Z# K- p/ e4 }3 E; C  ?0 f; K
    31. 8 H$ n5 b& ^# {* C5 [6 Q
    32. import  java.io.File;   ( S' ?$ K& |0 D. j% [4 ^
    33.   \\" B& W, a% a; W! A1 z# e# n5 \* K
    34. import  jxl.Workbook;   5 ~, I& c: F1 i6 t0 z6 ~) U0 [
    35. import  jxl.write.Label;   ) T) R1 a# Q6 A1 ~
    36. import  jxl.write.WritableSheet;   
    37. $ s3 |4 z6 ^+ H( l# E4 v# l
    38. import  jxl.write.WritableWorkbook;   \\" \) o8 F! o* l. f$ s. E! _  ~
    39.   5 R5 j, v\\" `; E3 ^
    40. public   class  CreateXLS {   
    41. : V3 A$ S/ X7 F# V2 Y4 e
    42.     public   static   void  main(String args[])   {   $ V' q; h* m5 ^, g* E1 M
    43.         try    {   0 K4 _. _8 D' S! q9 M- l
    44.             //  打开文件    ' r( f- {7 g  e  _6 e$ k
    45.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   
    46. : u' K4 A\\" I8 l! L3 D, k
    47.             //  生成名为“第一页”的工作表,参数0表示这是第一页    ; Y. d, P7 ]# I4 f6 `& w, u
    48.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   ) r0 M4 b( h, A
    49.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   - R) a: [\\" Y) I1 g, O% c
    50.             //  以及单元格内容为test    4 a0 D5 F2 ^* x+ T2 S
    51.             Label label  =   new  Label( 0 ,  0 ,  " test " );   
    52. ) o+ T; L\\" l* j- V# p' @) x% [# E\\" L
    53.   2 O% ^/ H, d+ g0 e- O6 d
    54.             //  将定义好的单元格添加到工作表中   
    55. * S: k( I$ j0 X2 `- Y3 L2 \
    56.             sheet.addCell(label);   
    57. \\" x1 F. B, o5 p2 I6 [* _, H; B3 }' S
    58.   & b  b$ q5 i, b: Z9 }$ j1 N
    59.             //  写入数据并关闭文件    ; C: G2 T1 O9 ~3 i
    60.             book.write();   / `+ G% P) _; o, U( i3 u) b
    61.            book.close();   # m) N! C6 T( Y0 D! l& m
    62.   
    63. 0 o( |: U% ~: v: W$ K
    64.        }   catch  (Exception e)   {   % _: H* `  E* F3 q7 h& n* ~
    65.            System.out.println(e);   $ z( n8 p1 L\\" p/ q% o
    66.        }    % m- E. V) ?\\" V' x* v
    67.    }    * x2 {\\" M2 z6 t' V
    68. }   
    69. ' Y2 y8 R/ b* K, }& z& X3 I
    70. 0 I5 `, R! G\\" D
    71. ! I4 C% a5 V\\" }8 r, C

    72. 3 Q/ x- b& s  _/ R) {
    73. (2)读Excel文件\\" O9 Y! b, S; A1 C
    74. ' u# c; E# f, S\\" N4 _2 ?% b9 m
    75. ' L7 @% t. }- V
    76. package readxls;
    77. ' b- {5 }. K+ A2 E; g6 n
    78. 8 T! i$ \4 X. i$ D
    79. //读取Excel的类    \\" S3 D- E  X8 R- F\\" ~7 f& M8 `' T
    80. import  java.io.File;   
    81. 6 K6 j2 p9 a! b0 x! p
    82.   
    83. $ n& Q1 f' ~$ J
    84. import  jxl.Cell;   
    85. + _- E1 t5 a* T1 q- f9 M5 B( G
    86. import  jxl.Sheet;   
    87. . A( o# L' q3 `: @, d
    88. import  jxl.Workbook;   & |$ P  L9 I% ]. a' D/ R3 A; w
    89.   
    90. + F0 S8 `7 R% b* }1 q
    91. public   class  ReadXLS   {   
    92. + t+ `\\" e2 s* q
    93.     public   static   void  main(String args[])   {   
    94. 6 r* \( A, u( J* T1 h
    95.         try    {   
    96. # @5 W+ k# e5 S
    97.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   ( f; R! l$ X* e
    98.             //  获得第一个工作表对象    1 M/ N\\" p* Z\\" u4 s& K1 @( L
    99.             Sheet sheet  =  book.getSheet( 0 );   
    100. ! K. T/ D' I$ B, ]
    101.             //  得到第一列第一行的单元格    & E. a- X8 U2 m
    102.             Cell cell1  =  sheet.getCell( 0 ,  0 );   
    103. * P* A' x$ l# H3 {1 r  V8 S
    104.            String result  =  cell1.getContents();   
    105. ) j4 K5 S. ~) ?' l) N\\" t
    106.            System.out.println(result);   
    107. + P; G0 ^' i( g
    108.            book.close();   
    109. 2 h* E, _6 t1 Z) i+ Q* D
    110.        }   catch  (Exception e)   {   
    111. , m8 E4 h3 t8 W$ @/ l7 l
    112.            //System.out.println(e);   % T# j\\" {( h9 ~' G5 g
    113.         e.printStackTrace();
    114. 8 o8 p2 z- P9 @\\" D\\" {; u
    115.        }    6 S: Z- f2 x% ~# ^- N, m. |
    116.     }   
    117. # l# R8 W4 s7 o  S8 L# w* \* _
    118. }
    119. 4 }- M3 e! \, l* C

    120. 4 T4 m# i. U# O( @) W

    121. - p\\" ]0 T0 l- k! N
    122. 5 N. {. k' Y3 B

    123. ( V7 u: i  F  x5 W2 x9 ^, Y
    124. (3)合并单元格、格式化单元格等1 [( v* x7 e+ V
    125. , ^, a9 o% f6 P

    126. - c) g% u8 x; t+ P
    127. //合并单元格并在单元格中输入内容
    128. ) Z) s; d4 f6 y; g) E
    129. * ^( g4 ?0 ^  W# \! U+ g
    130. package additionalproperty;
    131. / n# }) ]/ X* ]0 }
    132. ( N% y! p( a1 r5 {5 E6 J* w
    133. import java.io.*;7 z- \1 N  R) S7 \2 U  ^3 d; u
    134. import jxl.write.*;
    135. ( s. V8 }. K5 W\\" u
    136. import jxl.*;
    137. % |! X  J- D- H9 e, ^

    138. 8 n( T/ A; ^, M3 j* N
    139. public class MergeCells {
    140. ! h: ?/ {4 A  A$ T; G; r
    141. public static void main(String [] args){
    142. + A$ _/ N0 N) f& {, y
    143.   try{
    144. 9 ?' q2 B5 k7 ]8 Q\\" e) w
    145.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));3 o( a! ?4 A5 O; C8 v
    146.         WritableSheet sheet = book.createSheet("第一页", 0);
    147. 3 U* m\\" L- l( @4 R1 ]% U
    148.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格
    149. 6 m7 U9 ?2 u8 L% C. u' u& H
    150.    8 f  R2 Q9 C! z( Y& P* q6 Z
    151.         //设置填充内容的格式2 A# ~# f, p4 T% e, O0 `. p8 h
    152.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    153. 8 w6 p: {. B\\" Q! t: U( Y
    154.         WritableCellFormat format = new WritableCellFormat(font);& }6 X' y, X' w7 S. g% [. y
    155.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中1 k2 Q3 v; w- g: }# K
    156.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    157. 6 N+ I# {' y$ ]0 Y' @* i! ^
    158.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式* I: D+ S3 B! w
    159.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式\\" R$ M0 r1 T0 }- z
    160.    
    161. 6 v) p8 [1 Y& T+ V
    162.         Label label = new Label(3, 3, "合并", format); //添加内容' [# z: p6 C; L6 E* a  H4 O
    163.         sheet.addCell(label);\\" ]1 V' Q, Z  k6 U, |
    164.         book.write();8 S$ d# Z; r( j# `3 |5 N/ E- ?7 p
    165.         book.close();4 l: r/ n. N& \4 \2 a/ e1 d
    166.   }//end try% e8 \8 j9 p8 T3 n  r% g3 r
    167.       catch (Exception e){5 r- ^8 F- ^1 L8 Y4 o
    168.            e.printStackTrace();! `9 n8 y3 X) S! n1 ~7 N
    169.        }
    170. / S3 c+ M0 y  ]& b, T
    171.    }+ R2 R3 v' U) J6 d
    172. }
    173. ) H+ {\\" I. M- j* G3 Q

    174. 5 D/ d  _0 Z8 n: x
    175. 5 c- U; N7 R1 V6 ~6 M% I

    176. $ n6 i# z& o) c9 U& n
    177. (4)添加图片
    178. + ^1 b/ {6 Y! Q# C
    179. 5 |& [  M) S3 |
    180.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    181.   d+ M9 q) C3 [0 Z& j\\" ?+ a% U

    182. 6 q3 F! P* c2 A  @
    183. \\" r' Y2 b3 R3 o+ i
    184. //在工作表中添加图片
    185. 5 I; {+ C7 S( E& m; _% n* A8 g& Z
    186. 3 H6 o9 S/ K0 H, j, G: W
    187. package handleimage;! g' [1 r' e% l+ B& M8 w

    188. & [& V# ~\\" I6 Y& @2 `: _1 z
    189. import java.io.*;
    190. + g/ N! e- {. G. T  e
    191. import jxl.*;& c+ G( `) l4 c\\" c* o: I
    192. import jxl.write.*;
    193. \\" c7 [1 Y- ~- e1 F& f) a

    194. # C5 Q. s# F+ e) }: f& T) S: T
    195. public class CreateImage {
    196. 7 M5 m- ~2 V' y( s0 j( a
    197. public static void main(String [] args){0 O' I' P3 K0 D0 T\\" S
    198.   try{# ]1 T7 Q3 j8 p* x\\" H( q! z
    199.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));( W0 k+ J6 M5 `) c4 h
    200.        WritableSheet sheet = book.createSheet("第一页", 0);
    201.   i+ @7 i/ {6 A8 @
    202.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式
    203. \\" O' x0 y+ w$ G! V! x- J6 ?3 [
    204.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));8 U  m! W- w( p2 ^6 M  }: U2 v0 s7 T; N
    205.        sheet.addImage(image);  //添加图片
    206. + D2 Y- C  B) o& Y- j3 b3 G
    207.      P2 k3 X0 Y' l+ K+ j
    208.        book.write();* k% ]1 P4 n4 N
    209.        book.close();7 `3 ~% X, d! S
    210.       }//end try  ~2 L) K2 k% F3 x( q+ z$ C
    211.       catch (Exception e){ e.printStackTrace(); }
    212. * E# J( z( H' o
    213.    }
    214. : C* G* q' l  F2 j* K
    215. }( ?2 d1 E# T# e2 O0 h
    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-9-27 14:24 , Processed in 0.541345 second(s), 67 queries .

    回顶部