JXL操作Excel

前言:

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 " ));

// 生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet = book.createSheet( " 第一页 " , 0 );

// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

// 以及单元格内容为test

Label label = new Label( 0 , 0 , " test " );

// 将定义好的单元格添加到工作表中

sheet.addCell(label);

/*

* 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123

*/

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文件。

三、读取文件

以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

package test;

// 读取Excel的类

import java.io.File;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

public class ReadExcel {

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

四、修改文件

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

package test;

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 < rownum; i ++ ) // 循环进行读写

{

for ( int j = 0 ; j < 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 jxl mergecells_java 中JXL操作Excel实例详解相关推荐

  1. java jxl_java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...

  2. java 操作excel jxl_java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...

  3. java控制excel_利用Java控制EXCEL实例详解

    利用Java控制EXCEL实例详解发布者:本站     时间:2020-05-06 15:05:43 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵 ...

  4. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

  5. java asynchronize_Java 中synchronize函数的实例详解

    Java 中synchronize函数的实例详解 java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由 ...

  6. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  7. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

  8. android mvp模式例子_Android中mvp模式使用实例详解

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

  9. php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

最新文章

  1. SpringBoot整合Shiro权限框架
  2. 解调去载波后均衡信道与实际信道的关系
  3. 音乐计算机融合课,融合信息技术的音乐课
  4. 图解利用栈实现递归函数的非递归计算
  5. 什么是 XDoclet?
  6. php rsa aes混合加密,手动演示RSA和AES混合加密过程
  7. cygwin汉化简单操作【ZT】
  8. 2008年9月三级网络技术考试试卷 参考答案1
  9. 28天打造专业红客(四)
  10. iOS平台上的音视频即时通讯应用开发
  11. css实现返回顶部,实现返回顶部效果
  12. HandlerSocket简介及安装及卸载
  13. 服务器cmd升级系统命令,02-软件升级操作指导(命令行版)
  14. 清华大学马少平:一款智能硬件背后的“AI争霸”...
  15. 解决0xc00d5212
  16. Word 2016封面不显示页码
  17. 微信小程序|基于小程序实现打卡功能
  18. ArcGIS工具 - 批量删除空图层
  19. 常用的加密有哪些?在Java中如何实现?(MD5、AES、RSA)
  20. C语言-学生学号成绩读入程序(输出了学生总分、平均分、名次以及学生信息的查询)

热门文章

  1. 给postfix设置黑名单
  2. Download Burp Suite Community Edition
  3. Css3 常见技术面试题(二)
  4. promise用法详解
  5. win10 tightvnc 连接(多个)树莓派远程桌面控制
  6. kernel: TCP: time wait bucket table overflow的问题剖析及解决方法
  7. 设计一个对银行账户余额操作的程序
  8. Qt自定义类使用QSS换肤
  9. 静默安装ogg12.3提示ACTION: Specify an empty directory or an Oracle home containing the selected Oracle Gol
  10. layui框架----下拉框的二级联动