jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

使用如下:

搭建环境

将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

基本操作

一、创建文件

拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为
 “第一页”,大致效果如下:

package test;

//生成Excel的类
import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class CreateExcel {
    public static void main(String args[]) {
        try {
            // 打开文件
            WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));

System.out.println(new File("test.xls").getAbsolutePath());//查看生成文件的路径
            // 生成名为“第一页”的工作表,参数0表示这是第一页
            WritableSheet sheet = book.createSheet("第一页", 0);
            // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
            // 以及单元格内容为test
            Label label = new Label(0, 0, "test");

            // 将定义好的单元格添加到工作表中
            sheet.addCell(label);

            
            jxl.write.Number number = new jxl.write.Number(1, 0, 555.12541);
            sheet.addCell(number);

            // 写入数据并关闭文件
            book.write();
            book.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
编译执行后,会产生一个Excel文件。

二、读取excle里面的数据

package org.wwgis.operatExecle;

//读取Excel的类
import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class ReadExcle {
    public static void main(String args[]) {
        try {
            Workbook book = Workbook.getWorkbook(new File("test.xls"));
            // 获得第一个工作表对象
            Sheet sheet = book.getSheet(0);
            // 得到第一列第一行的单元格
            Cell cell1 = sheet.getCell(0, 0);
            String result = cell1.getContents();
            System.out.println(result);
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

编译执行后,会读取文件test.

修改excle里面的数据。 利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,
 其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:

package org.wwgis.operatExecle;

import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class UpdateExcel {
    public static void main(String args[]) {
        try {
            // Excel获得文件
            Workbook wb = Workbook.getWorkbook(new File("test.xls"));
            // 打开一个文件的副本,并且指定数据写回到原文件
            WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"),
                    wb);
            // 添加一个工作表
            WritableSheet sheet = book.createSheet("第二页", 1);
            sheet.addCell(new Label(0, 0, "第二页的测试数据"));
            book.write();
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

其他操作

一、 数据格式化

在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

1、 字串格式化

字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和
 WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,
 为方便叙述,我们为每一行命令加了编号:

WritableFont font1=
 new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①

 WritableCellFormat format1=new WritableCellFormat(font1); ②

 Label label=new Label(0,0,”data 4 test”,format1) ③

其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的
 构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种
 属性,后面的单元格格式化中会有更多描述。

③处使用了Label类的构造子,指定了字串被赋予那种格式。

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们
 上面的实例,可以指定:

 //把水平对齐方式指定为居中
 format1.setAlignment(jxl.format.Alignment.CENTRE);

 //把垂直对齐方式指定为居中
 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

二、单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI
 提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格

 WritableSheet.mergeCells(int m,int n,int p,int q); 

 //作用是从(m,n)到(p,q)的单元格全部合并,比如:
 WritableSheet sheet=book.createSheet(“第一页”,0);

 //合并第一列第一行到第六列第一行的所有单元格
 sheet.mergeCells(0,0,5,0);

合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2、 行高和列宽

 WritableSheet.setRowView(int i,int height);

 //作用是指定第i+1行的高度,比如:

 //将第一行的高度设为200
 sheet.setRowView(0,200);

 WritableSheet.setColumnView(int i,int width);

 //作用是指定第i+1列的宽度,比如:

 //将第一列的宽度设为30
 sheet.setColumnView(0,30);

jExcelAPI还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。

其中:如果读一个excel,需要知道它有多少行和多少列,如下操作:

Workbook book = Workbook.getWorkbook(new File("测试1.xls"));
        // 获得第一个工作表对象
        Sheet sheet = book.getSheet(0);
        // 得到第一列第一行的单元格
        int columnum = sheet.getColumns();// 得到列数
        int rownum = sheet.getRows();// 得到行数
        System.out.println(columnum);
        System.out.println(rownum);
        for (int i = 0; i <</SPAN> rownum; i++)// 循环进行读写
        {
            for (int j = 0; j <</SPAN> columnum; j++) {
                Cell cell1 = sheet.getCell(j, i);
                String result = cell1.getContents();
                System.out.print(result);
                System.out.print("\t");
            }
            System.out.println();
        }
        book.close();

java操作Execle学习相关推荐

  1. poi和easyExcel基于Java操作Excel学习笔记

    1 学习前言 Excel和读写和文件的读写没有本质的区别,都是属于IO操作,我们使用原生的IO就能解决Excel的导入和导出,当然操作起来比较麻烦,性能也不高,这次我们就学习poi和easyExcel ...

  2. java操作properties文件简单学习

    java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...

  3. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

  4. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  5. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  6. 用 Java 训练深度学习模型,原来这么简单

    作者 | DJL-Keerthan&Lanking 来源 | HelloGitHub 头图 | CSDN下载自东方IC 前言 很长时间以来,Java 都是一个很受企业欢迎的编程语言.得益于丰富 ...

  7. [转]java.lang.instrument 学习(一)

    [转]java.lang.instrument 学习(一)  收藏 sunyh 发表于 10个月前 阅读 40 收藏 3 点赞 1 评论 0 转自:http://jiangbo.me/blog/201 ...

  8. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...

  9. redis入门及java操作

    redis 命令可以去菜鸟教程http://www.runoob.com/redis/redis-tutorial.html 或者以下地址去学习http://www.cnblogs.com/huang ...

最新文章

  1. windows性能计数器搜集方法
  2. Hibernate修改命名策略
  3. mysql codesmith_CodeSmith连接Mysql配置
  4. 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法
  5. 年度总结、下年计划不会做?教给你一个一招致胜的方法
  6. 集合 数组 定义 转换 遍历 Arrays API MD
  7. html代码放进json数据,用json数据填充html表
  8. 游戏动词和宾语设计案例精选
  9. TCPIP详解3.8ifconfig
  10. java 性能调优案例_java性能调优实战,java性能调优
  11. 超详细的测试理论基础知识
  12. Android自带浏览器打开网页
  13. 同步或者重构Activiti Identify用户数据的多种方案比较
  14. 生活随记-剪纸与父子
  15. 品鑒「天籁般的印第安音乐,每次聆听都是一场心灵的洗礼」2019年 06月27星期四
  16. [python爬虫之路day5]:实战之电影天堂2019精选电影爬取
  17. MIDI 文件格式 (转)
  18. 大数据给物流带来了什么?
  19. 清风算法对seo不是打击而是好事
  20. csv文件查找指定内容

热门文章

  1. Dockler的基础用法
  2. 阿里云盘三月自动签到Python脚本,可本地、青龙、云函数自动执行
  3. linux shell fifo使用,bash – 在shell脚本中使用mkfifo
  4. linux网络运维基础与故障诊断
  5. 算法系列:电磁频谱划分
  6. 英特尔结盟40公司抢滩家庭娱乐叫板思科
  7. 零基础HTML编码学习笔记
  8. 学习字符串过程中,运行结果有一串烫烫烫该怎么解决
  9. 【软考】中级 | 数据库系统工程师 | 笔记总结
  10. WPF MahApps 设置TabItem字体大小