利用java操作Excel文件(转)

利用java操作Excel文件
很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下。利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。

一.读取Excel文件内容

java 代码
1./**读取Excel文件的内容
2. * @param file 待读取的文件
3. * @return
4. */
5.public static String readExcel(File file){
1. StringBuffer sb = new StringBuffer();
2.
3. Workbook wb = null;
4. try {
5. //构造Workbook(工作薄)对象
6. wb=Workbook.getWorkbook(file);
7. } catch (BiffException e) {
8. e.printStackTrace();
9. } catch (IOException e) {
10. e.printStackTrace();
11. }
12.
13. if(wb==null)
14. return null;
15.
16. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
17. Sheet[] sheet = wb.getSheets();
18.
19. if(sheet!=null&&sheet.length>0){
20. //对每个工作表进行循环
21. for(int i=0;i
22. //得到当前工作表的行数
23. int rowNum = sheet[i].getRows();
24. for(int j=0;j
25. //得到当前行的所有单元格
26. Cell[] cells = sheet[i].getRow(j);
27. if(cells!=null&&cells.length>0){
28. //对每个单元格进行循环
29. for(int k=0;k
30. //读取当前单元格的值
31. String cellValue = cells[k].getContents();
32. sb.append(cellValue+"\t");
33. }
34. }
35. sb.append("\r\n");
36. }
37. sb.append("\r\n");
38. }
39. }
40. //最后关闭资源,释放内存
41. wb.close();
42. return sb.toString();
43.}
二.写入Excel文件

这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10

java 代码
1./**生成一个Excel文件
2. * @param fileName 要生成的Excel文件名
3. */
4. public static void writeExcel(String fileName){
5. WritableWorkbook wwb = null;
6. try {
7. //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
8. wwb = Workbook.createWorkbook(new File(fileName));
9. } catch (IOException e) {
10. e.printStackTrace();
11. }
12. if(wwb!=null){
13. //创建一个可写入的工作表
14. //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
15. WritableSheet ws = wwb.createSheet("sheet1", 0);
16.
17. //下面开始添加单元格
18. for(int i=0;i<10;i++){
19. for(int j=0;j<5;j++){
20. //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
21. Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
22. try {
23. //将生成的单元格添加到工作表中
24. ws.addCell(labelC);
25. } catch (RowsExceededException e) {
26. e.printStackTrace();
27. } catch (WriteException e) {
28. e.printStackTrace();
29. }
30.
31. }
32. }
33.
34. try {
35. //从内存中写入文件中
36. wwb.write();
37. //关闭资源,释放内存
38. wwb.close();
39. } catch (IOException e) {
40. e.printStackTrace();
41. } catch (WriteException e) {
42. e.printStackTrace();
43. }
44. }
45. }
三.在一个Excel文件中查找是否包含某一个关键字

java 代码
1./**搜索某一个文件中是否包含某个关键字
2. * @param file 待搜索的文件
3. * @param keyWord 要搜索的关键字
4. * @return
5. */
6. public static boolean searchKeyWord(File file,String keyWord){
7. boolean res = false;
8.
9. Workbook wb = null;
10. try {
11. //构造Workbook(工作薄)对象
12. wb=Workbook.getWorkbook(file);
13. } catch (BiffException e) {
14. return res;
15. } catch (IOException e) {
16. return res;
17. }
18.
19. if(wb==null)
20. return res;
21.
22. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
23. Sheet[] sheet = wb.getSheets();
24.
25. boolean breakSheet = false;
26.
27. if(sheet!=null&&sheet.length>0){
28. //对每个工作表进行循环
29. for(int i=0;i
30. if(breakSheet)
31. break;
32.
33. //得到当前工作表的行数
34. int rowNum = sheet[i].getRows();
35.
36. boolean breakRow = false;
37.
38. for(int j=0;j
39. if(breakRow)
40. break;
41. //得到当前行的所有单元格
42. Cell[] cells = sheet[i].getRow(j);
43. if(cells!=null&&cells.length>0){
44. boolean breakCell = false;
45. //对每个单元格进行循环
46. for(int k=0;k
47. if(breakCell)
48. break;
49. //读取当前单元格的值
50. String cellValue = cells[k].getContents();
51. if(cellValue==null)
52. continue;
53. if(cellValue.contains(keyWord)){
54. res = true;
55. breakCell = true;
56. breakRow = true;
57. breakSheet = true;
58. }
59. }
60. }
61. }
62. }
63. }
64. //最后关闭资源,释放内存
65. wb.close();
66.
67. return res;
68. }
四.往Excel中插入图片图标

插入图片的实现很容易,参看以下代码:

java 代码
1./**往Excel中插入图片
2. * @param dataSheet 待插入的工作表
3. * @param col 图片从该列开始
4. * @param row 图片从该行开始
5. * @param width 图片所占的列数
6. * @param height 图片所占的行数
7. * @param imgFile 要插入的图片文件
8. */
9.public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
1. int height, File imgFile){
2. WritableImage img = new WritableImage(col, row, width, height, imgFile);
3. dataSheet.addImage(img);
4.}
以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:

java 代码
1. try {
2. //创建一个工作薄
3.WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
4.//待插入的工作表
1.WritableSheet imgSheet = workbook.createSheet("Images",0);
2.//要插入的图片文件
1.File imgFile = new File("D:/1.png");
2.//图片插入到第二行第一个单元格,长宽各占六个单元格
1.insertImg(imgSheet,0,1,6,6,imgFile);
2.workbook.write();
3.workbook.close();
4. catch (IOException e) {
5.e.printStackTrace();
6. catch (WriteException e) {
7.e.printStackTrace();
但是jxl只支持png格式的图片,jpg格式和gif格式都不支持
五.插入页眉页脚

一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚

java 代码
1./**向Excel中加入页眉页脚
2. * @param dataSheet 待加入页眉的工作表
3. * @param left
4. * @param center
5. * @param right
6. */
7.public static void setHeader(WritableSheet dataSheet,String left,String center,String right){
1. HeaderFooter hf = new HeaderFooter();
2. hf.getLeft().append(left);
3. hf.getCentre().append(center);
4. hf.getRight().append(right);
5. //加入页眉
6. dataSheet.getSettings().setHeader(hf);
7. //加入页脚
8. //dataSheet.getSettings().setFooter(hf);
9.}
我们可以用如下代码测试该方法:

java 代码
1. try {
2. //创建一个工作薄
3. WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
4. //待插入的工作表
5. WritableSheet dataSheet = workbook.createSheet("加入页眉",0);
6. ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页");
7. workbook.write();
8. workbook.close();
9.} catch (IOException e) {
10. e.printStackTrace();
11.} catch (WriteException e) {
12. e.printStackTrace();
13.}
14. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值