QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2495|回复: 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的使用方法。. w# D, {8 j4 N  I3 K; c

    2. ) B* j) W, K# \$ s5 N4 Q
    3.         1、环境配置
    4. \\" Z2 c  n/ D  c7 \; {- k\\" @/ }

    5. : M* W4 e, s6 D
    6.          如下网址,可以下载到API:http://www.andykhan.com/jexcelapi/download.html' k' Y/ {; g/ {, K
    7. 6 E) j9 Q1 T7 x
    8.         下载完成的包解压之后,可以得到如下几个重要的文件:$ n/ y# a+ Q1 S- L8 ^# x( A
    9. 6 A# j, i* Y8 a
    10.        (1)jxl.jar  —— JExcelAPI 函数库;
    11. / \, F5 r: x  |1 i' E5 O; Z8 w
    12. \\" o% j7 M/ ?8 i& C2 W
    13.        (2)docs  ——  帮助文档;
    14. ' v1 w7 }! |+ Q1 h, H

    15. 2 r7 l3 C  U' a* y$ n2 o2 B6 [# _
    16.        (3)src     ——  源码文件夹;; I+ ^/ O* X\\" B1 V
    17. 6 f6 _+ g: N, `
    18.          将jxl.jar复制到%JAVA_HOME%\jre\ext\文件夹下面,在CLASSPATH变量里面添加"%JAVA_HOME%\jre\ext",然后就可以调用JExcelAPI了。如果出现编译报错“找不到java.jxl包”,则可能是没有设置成功。这时,如果有Eclipse开发工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路径,然后就能编译成功了。
    19. % H% t7 i. E6 N
    20. ) d5 k/ Y3 o6 z6 V' h' o5 C
    21.         2、Excel基础操作实例) I- B/ T& }$ o8 ^4 p0 h& ]

    22. & l9 D# M2 @( ]$ |
    23.         (1)  创建Excel文件    + V5 X3 }0 R2 N, G
    24. \\" f, u( G% i2 T) ]* m2 `! g$ p6 `8 V
    25.   /**读取Excel文件的内容   
    26. 0 P- z4 e( }; ?& G
    27. * @param file  待读取的文件   
    28. 5 T2 }& I\\" w8 \& w
    29. * @return   // 生成Excel的类    */
    30. # \9 J0 L1 m0 a3 n
    31. package createxls;6 q  l5 U: x: Y4 {7 n+ r  X$ W  P
    32. 8 L6 J- {, D0 t$ B- t; M+ J
    33. import  java.io.File;   . L2 w- I\\" q% G* L5 P
    34.   
    35. $ A  p; T5 {( V/ x: K  v
    36. import  jxl.Workbook;   
    37. 4 D/ T% R7 i  K5 Q/ q
    38. import  jxl.write.Label;   1 L4 b8 X. I1 G3 C
    39. import  jxl.write.WritableSheet;   \\" y+ R5 g0 t\\" ^, ~
    40. import  jxl.write.WritableWorkbook;   7 b  B$ M! Y: Q9 f) e' L' T+ r
    41.   . s* g- P' _1 J1 ^
    42. public   class  CreateXLS {   ' C7 h4 E. h: m+ }- c3 |) f9 ^& R
    43.     public   static   void  main(String args[])   {   6 V- z  v& ^4 a- B& ^1 [' Y
    44.         try    {   
    45. ' w: c5 v6 c- ]6 z& |8 f  Y
    46.             //  打开文件   
    47. 4 I( N5 ~' h/ N! W$ P) E5 R8 X
    48.             WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));   9 r3 q4 B8 M3 s. D/ c
    49.             //  生成名为“第一页”的工作表,参数0表示这是第一页    : L# a- `3 F9 k( p$ a+ ~, y
    50.             WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );   
    51. 4 ~/ I/ U; A+ o* g/ n
    52.             //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)   
    53. $ {% `- Q# l: Z$ G# r7 j
    54.             //  以及单元格内容为test    , r6 ?+ J3 [9 c( |5 O4 J
    55.             Label label  =   new  Label( 0 ,  0 ,  " test " );   $ \3 ^1 h% {* f9 t( ?  c# a* m
    56.   
    57. . m- u9 ~5 C9 A1 Y7 N0 y; p
    58.             //  将定义好的单元格添加到工作表中   
    59. 0 B( B8 L4 w! ^3 u$ Y* j6 y$ x
    60.             sheet.addCell(label);   
    61. + L; p, O( r: `- h
    62.   
    63. ! m3 z) s4 V% U! ^- z
    64.             //  写入数据并关闭文件   
    65. - }( c7 {. l/ E, j7 a, `
    66.             book.write();   
    67. 5 l; F& h2 g. Z. x, g
    68.            book.close();   8 C, L8 X/ E$ O) L
    69.   
    70. . h* f5 |3 b4 v( l( U
    71.        }   catch  (Exception e)   {   9 O9 z1 A( T- K9 l\\" b+ O
    72.            System.out.println(e);   
    73. / d3 O2 K( n8 g4 Y. T) x/ h
    74.        }   
    75. 4 n* h8 W\\" X( g# u* |
    76.    }   
    77. 7 j3 {  Q* K& n4 n1 g+ i$ a
    78. }   
    79. ) d( n1 o) m- l5 g7 R' T; i3 [

    80. % |5 ~8 x- r9 K
    81. 1 I1 Z$ Z& H/ b! B4 v7 Z# S2 X  q
    82. \\" E% d9 Q0 _8 I
    83. (2)读Excel文件
    84. ' d) F, t! x8 N
    85. ' D( u0 {4 W& L) k2 h, m* U

    86. ( g$ X- p1 e8 Y' }# m2 Z
    87. package readxls;/ d; u+ ^& d) |5 M% v9 O/ H: |
    88. . ~) ?- b  r$ H
    89. //读取Excel的类   
    90. ' d& C( c7 U( s8 ]7 Y( E: }& z  E
    91. import  java.io.File;   9 o# Y. t5 Y4 a0 x% }
    92.   % e' Q) y  K6 ^
    93. import  jxl.Cell;   
    94. * |\\" k* O. z# }\\" Z% k
    95. import  jxl.Sheet;   5 q2 X4 v; }) e2 o* d, u+ s
    96. import  jxl.Workbook;   
    97.   E: E& Y/ p  T/ [! M9 Q/ l$ D
    98.   
    99. - w& m6 N7 |; |- C
    100. public   class  ReadXLS   {   
    101. / {- V# _) u4 A& O2 B. I
    102.     public   static   void  main(String args[])   {   1 K2 ^8 L# J/ o) _: s+ a7 \
    103.         try    {   + M0 R& P7 ^. j% v7 f
    104.            Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));   0 E- X# N* N$ j4 d6 ]
    105.             //  获得第一个工作表对象    $ g\\" u# D/ E! Q% Z! C
    106.             Sheet sheet  =  book.getSheet( 0 );   8 S# z' j0 X9 u! K* Z$ A\\" _
    107.             //  得到第一列第一行的单元格    ) K5 q\\" P4 @# _\\" R5 c5 K
    108.             Cell cell1  =  sheet.getCell( 0 ,  0 );   6 M8 h3 Z+ v4 @6 ~! N
    109.            String result  =  cell1.getContents();   
    110. # g1 ?5 [\\" v$ \$ t
    111.            System.out.println(result);   
    112. + g# X$ o+ s5 \7 Q1 I0 o
    113.            book.close();   
    114. : c7 F$ S\\" {) g! u5 m; ]
    115.        }   catch  (Exception e)   {   $ w2 e5 Q; Q3 A& C3 T! N1 k  Y9 K
    116.            //System.out.println(e);   
    117. ! s: E* m/ Z: Q- _1 R\\" E1 D4 n# f  y
    118.         e.printStackTrace();
    119. 3 o  b: F( F5 b! \0 W\\" Y
    120.        }    4 {. H1 b. g4 l  O6 {  U) K
    121.     }   
    122. 2 S8 o7 v: \* j
    123. }6 X\\" l2 q/ g+ H% T* Q3 \

    124. . I+ O7 z$ q+ m+ s) S0 G6 L$ }' a
    125. ; s' k; S+ V* G/ j0 p3 x
    126. ; g  D$ G. V; a- D& @6 v8 s

    127. 1 U' B) K6 e% `( k' ]
    128. (3)合并单元格、格式化单元格等
    129. . \\\" y! k4 a7 ]

    130. 3 N' F% U* F) H# B. {/ h/ }7 ~
    131. 8 I, }# c/ A- C! M. u- N
    132. //合并单元格并在单元格中输入内容3 f- G: E3 u9 r\\" R

    133. % _0 X  n5 Q! Y5 U8 g! u
    134. package additionalproperty;/ Q, F4 t$ v3 V; t2 K2 W6 ?
    135. 3 q\\" E3 F2 R2 ~, [/ q, S4 P
    136. import java.io.*;: ~9 `8 r( E8 j1 x  c
    137. import jxl.write.*;
    138. 9 P% I\\" W! C+ k* q: a% H
    139. import jxl.*;# l\\" H& L( Q; N# ^. Z
    140. 6 l, B( M* ]3 H8 q/ l
    141. public class MergeCells {
    142. + |( W& ]7 a9 t! S1 [9 Z2 w% ~
    143. public static void main(String [] args){2 I/ M- v$ c: e/ s0 N2 g
    144.   try{
    145.   R, J) E: H4 z) R; Y
    146.         WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
    147. . `. U2 H8 A' n- F) x- m
    148.         WritableSheet sheet = book.createSheet("第一页", 0);
    149. 5 g. g, K, i' \, M
    150.         sheet.mergeCells(3, 3, 6, 6);  //合并单元格# `0 K& d6 ^7 q  ?2 H
    151.    ! O\\" c# A1 F- p& ~% I4 I$ c
    152.         //设置填充内容的格式
    153. : B6 z\\" _6 U2 v\\" Z  t
    154.         WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
    155. ) Y\\" x* z1 e) A7 K3 a
    156.         WritableCellFormat format = new WritableCellFormat(font);7 v7 {/ l  m, W) G
    157.         format.setAlignment(jxl.format.Alignment.CENTRE);  //水平居中4 K7 k4 n* A6 J% ]. Y2 h
    158.         format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  //垂直居中
    159. \\" ]- T9 J/ N- q, U9 s3 [
    160.         format.setBackground(jxl.format.Colour.BLUE); //背景颜色和样式
    161. \\" y; G4 o, G5 Z6 b5 y+ n) C
    162.         format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK);  //边框样式
    163. ' X& y3 q$ _1 F, k) i
    164.    ) d9 ]+ y\\" ^7 G& ^- j! e# W
    165.         Label label = new Label(3, 3, "合并", format); //添加内容( H7 ^( @: d2 a; Q+ t7 k
    166.         sheet.addCell(label);( s5 W\\" w( `3 X0 y+ _
    167.         book.write();\\" }) C1 r3 R  p9 Y9 i
    168.         book.close();( L6 N1 N# s4 F  K, k
    169.   }//end try
    170. ( D9 V# w2 R: g3 a6 R$ `
    171.       catch (Exception e){- |9 E$ H4 q7 B
    172.            e.printStackTrace();. ^8 b$ F% a0 p
    173.        }
    174. 1 L$ @+ a  h/ X7 i
    175.    }0 o; C1 i$ b6 q4 Y% s7 L4 Q: k2 ]1 |& C
    176. }
    177. 4 @; O; S* x1 u; ]: V! `3 o
    178. \\" j  [9 ?: j. u- F
    179. # u) k* k( k: d

    180. & ^: J8 S: E1 t, }; p  U9 P5 [8 e
    181. (4)添加图片
    182. / W' [1 F1 a8 b( b1 y: O

    183. + I6 _. d  m! W+ J6 m; d5 o& {
    184.      JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。而且当向工作表中添加图片时,只能支持PNG格式的图片。
    185. 7 T2 E' s8 A& M# U, y# U2 R9 q

    186. 6 h8 }: e0 U, M  Z

    187. 8 m3 E$ J0 H) L# m
    188. //在工作表中添加图片
    189. \\" }  \: r8 ^: C7 N

    190. ! `$ Y4 q: }7 H8 ?) v8 W! a* W
    191. package handleimage;1 I. h$ F+ t3 p: }$ @

    192. \\" M  `* ~/ K& n  j0 [
    193. import java.io.*;
    194. & |, t9 ]: L) Z( }! F) }
    195. import jxl.*;
    196. ' z' t$ O5 L5 Q. v
    197. import jxl.write.*;1 L* U) n9 V5 s9 T' [6 p0 m

    198. + t! S& E8 r\\" g
    199. public class CreateImage {
    200. ! K' z8 e7 j  g; @% b
    201. public static void main(String [] args){( Z* T- P& N* g0 u
    202.   try{9 p, b8 m: ~0 f
    203.        WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));4 ~4 i' R7 A9 t\\" w- G( }% L0 k
    204.        WritableSheet sheet = book.createSheet("第一页", 0);) L' o2 I0 H5 h1 y/ E3 z
    205.        WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7,  //定义图片格式6 `3 A7 s9 g) L\\" V2 V
    206.        new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
    207. ! j) H, J  A! U, y7 F
    208.        sheet.addImage(image);  //添加图片
    209. 5 m\\" l* O& V: O
    210.    
    211. 5 Z! l% V. C% p
    212.        book.write();
    213. ( o9 q# y1 b: R& y( i) v% c, |
    214.        book.close();! A$ c1 a! z9 v! S. a
    215.       }//end try4 J/ q4 _8 Z. G- ^
    216.       catch (Exception e){ e.printStackTrace(); }2 U7 A: e7 G& a. U+ I3 s
    217.    }
    218. ; L4 X! X\\" g5 M1 B9 l; y8 V
    219. }
    220. ( G+ b( d\\" `, Q* p
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    guoaecg        

    0

    主题

    5

    听众

    252

    积分

    升级  76%

  • TA的每日心情
    衰
    2013-11-18 18:53
  • 签到天数: 53 天

    [LV.5]常住居民I

    自我介绍
    想学数学
    回复

    使用道具 举报

    3#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-31 20:23 , Processed in 0.325296 second(s), 66 queries .

    回顶部