JXL 工具包
读文件(jxl包)
|
写文件(Jxl.write包)
|
说明
|
Workbook
|
WritableWorkbook
|
操作Excel文档的工作薄
|
Sheet
|
WritableSheet
|
操作Excel文档的工作表
|
Cell
|
WritableCell
|
操作Excel文档的单元格
|
Image
|
WritableImage
|
操作Excel文档的图像
|
Hyperlink
|
WritableHtperlink
|
操作Excel文档的超链接
|
Jxl的API中我们主要用的就3个包(jxl,
jxl.write,jxl.format) ,jxl能支持对 Excel
文档的读,写,删除,修改的操作,对java更好的支持,而且不依赖于windows操作系统,我们都知道excel
文档分为工作薄,工作表,以及单元格组成,下面我们来理解一下jxl
中的各个
类及对excel文档的操作。
单元格(此处指文本单元格,图像及链接和单元格做为一个层次)分为好多种,所以在API的设计中将Cell作为一个接口而存在.
对应的jxl中的结构为:
读文件(包jxl)
|
写文件(包jxl.write)
|
说明
|
Cell
|
WritableCell
|
单元格
|
BooleanCell
|
Boolean
|
布尔值单元格
|
DateCell
|
DateTime
|
时间单元格
|
ErrorCell
|
|
形式错误的单元格
|
LabelCell
|
Label
|
文本单元格
|
NumberCell
|
Number
|
数字单元格
|
FormualCedll
|
Formual
|
公式单元格
|
|
Blank
|
空格单元格
|
BooleanFormualCell
|
|
布尔公式单元格
|
DateFormualCell
|
|
时间公式单元格
|
ErrorFormualCell
|
|
错误公式单元格
|
StringFormualCell
|
|
文本公式单元格
|
NumberFormualCell
|
|
数字公式单元格
|
|
|
|
|
|
|
虽然数据是电子表格的核心,但是同时其也需要一些辅助类 比如文件格式设置,工作表设置与显示效果.单元格设置与显示效果等.按照其层次,则依次有以下接口或类.
读文件(包jxl)
|
写文件(包jxl.write)
|
说明
|
WorkbookSettings
|
WorkbookSettings(包jxl)
|
设置workbook
属性的bean
|
SheetSettings
|
SheetSettings(包jxl)
|
设置具体sheet的属性的bean(比如表头表底等)
|
HeaderFooter
|
HeaderFooter(包jxl)
|
表示表头表底类
|
HeaderFooter.Contents
|
HeaderFooter.Contents(包jxl)
|
具体表头表底设置
|
CellFeatures
|
WritableCellFeautres
|
表格内容相关设置(验证)
|
CellReferenceHelper
|
|
得到引用单元格相关属性
|
CellType
|
|
表格相关类型
|
CellView
|
CellView(包jxl)
|
表格视图相关设置
|
CellFormat
|
WritableCellFormat
|
表格显示样式设置
|
|
BoldStyle
|
边框枚举
|
|
DateFormat
|
时间格式
|
|
DateFormats
|
时间格式枚举
|
|
NumbreFormat
|
数据格式
|
|
NumbreFormats
|
数字模式枚举
|
|
WritableFont
|
字体设置
|
|
WriteableFont.Fontname
|
静态字体内部类
|
下面还有一个jxl.format包,里面主要是有关一些字体的设置及样式的设置的一些接口和类。
以上是我们了解的jxl的API 及里面的常用类的一个说明 下面我们具体的来讲以下怎么用jxl包来操作excel文档,毕竟只说不做有点不太好吧。
读取Excel文档中的数据
上面说了,读取文档中的数据主要用到Workbook,sheet,cell 3个类,下面有一段代码:
publicvoid readExcel(File file){
try {
Workbook book = Workbook.getWorkbook(file);//获取Workbook的实例
Sheet sheet = book.getSheet(0);//获取sheet的实例
int columns = sheet.getColumns();//获取工作表的列数
int rows = sheet.getRows();//获取工作表的行数
Cell cell =
null;
String word =
null;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns;
j++) {
cell = sheet.getCell(j,i);//获取某行某列单元格
word = cell.getContents();//获取单元格中的内容
if (cell.getType() == CellType.LABEL)
{//判断单元格中的数据类型
LabelCell lc= (LabelCell)cell;
word = lc.getString();//获取数据的字符串形式
System.out.println(word);//输出
}
}
}
book.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
1.Workbook类
Workbook,工作簿类,它是一个抽象类,所以不能通过new来获取实例, 只能通过 Workbook的静态方法getWorkbook()来获取他的实例,他的实例是new它的子类WorkbookParser来实现的,WorkbookParser在jxl.read.biff中。它继承了java.lang包中的Object类,其中有几个方法是经常用的:
a.staticWritableWorkbook CreateWorkbook(File file); 它可以通过文件名来获取一个可写的 WritableWorkbook 实例。
b.abstractSheet getSheet(int index); 它可以通过下标来获取该文档的工作表,下表从0开始,它的子类WorkbookParser 复写了一个方法。
c.staticWorkbook getWorkbook(File file);这是一个工厂方法,通过他返回的是一个Workbook的子类WorkbookParser的一个实例,这是多态的一种表现。
2.Sheet接口
Sheet接口 工作表类,它是通过WorkbookParser的getSheet()方法来获取它的子类 SheetImpl 的实例,SheetImpl也在jxl.read.biff中。其中就几个常用的方法。
a.Cell getCell(int column,introw);它通过列标,行标来获取本工作表的某个单元格。
b.int getColumns(); 获取此工作表的列数。
c.int getRows(); 获取此工作表的行数。
3.Cell接口单元格类,可以通过他获取单元格中的数据类型。
a.CellType getType();获取这个单元格的数据类型,然后和LabelCell进行类型比较,强转成LabelCell,通过getString() 方法获取其中类容。
写入Excel文档数据
下面先看以下代码:
publicvoid writeExcel(File file){
WritableWorkbook book =
null;
WritableSheet stu_sheet =
null;
try {
book = Workbook.createWorkbook(file);
stu_sheet = book.createSheet("学生",0);
Label label =
null;
label = new Label(0,0,"编号");
stu_sheet.addCell(label);
label = new Label(1,0,"姓名");
stu_sheet.addCell(label);
label = new Label(2,0,"性别");
stu_sheet.addCell(label);
label = new Label(3,0,"年龄");
stu_sheet.addCell(label);
book.write();
book.close();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
要往xls文件里面写入数据的时候需要注意的是第一要新建一个xls文件
OutputStream os=newFileOutputStream("c:\\excel2.xls");
再建完这个文件的时候再建立工作文件
jxl.write.WritableWorkbook wwb =Workbook.createWorkbook(new File(os));
如果这个文件已经存在,那么我们可以在这个文件里面加入一个sheet为了和以前的数据进行分开;
jxl.write.WritableSheet ws =wwb.createSheet("Test Sheet 1", 0);
在createSheet方法里前面的参数是sheet名,后面是要操作的sheet号写入文件要用到下面几个类。
1.WirtableWorkbook
a.void close ();关闭;
b.WritableSheet getSheet (int index);返回第index个可写工作表;
c. WritableSheet moveSheet (int fromIndex, int toIndex);把fromIndex的工作表移动到toIndex处.
d.void removeSheet (int index);删除这个工作表;
e.void write ();代表已写完;
2.WirtableSheet
- void addCell(WritableCellcell); 添加单元格到本表。
-
WritableCell
getWritableCell(intcolumn, introw); 获取本表的某个可写的单元格。
- void removeRow(introw);删除某行
- void removeColumn(intcol);删除某列
3.Label
- void setString(java.lang.Strings)设置Label中的内容。
修改Excel文档数据
Jxl在修改excel文件时使用的方法比较怪,也可以说jxl不支持修改excel文件。它的处理方式是每次打开旧excel文件,然后创建一个该excel文件的可写的副本,所有的修改都是在这个副本上做的。下面是一个例子。
publicvoid updateExcel(File file){
WritableWorkbook book =
null;
Workbook book1 =
null;
try {
book1 = Workbook.getWorkbook(file);
book = Workbook.createWorkbook(file,book1);
WritableSheet sheet = book.getSheet(0);
WritableCell cell = sheet.getWritableCell(0,0);
if (cell.getType() == CellType.LABEL) {
Label label = (Label) cell;
label.setString("学号");
System.out.println("修改成功");
}
book.write();
book.close();
}catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
删除Excel文档数据
publicvoid deleteExcel(File file){
WritableWorkbook book =null;
try {
book = Workbook.createWorkbook(file);
WritableSheet sheet = book.createSheet("学生",0);
sheet.removeRow(0);
book.write();
book.close();
System.out.println("删除成功!");
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
填充数据
(1)添加的字体样式
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18,WritableFont.BOLD, true);
WritableFont()方法里参数说明:
这个方法算是一个容器,可以放进去好多属性
第一个: TIMES是字体大小,他写的是18
第二个: BOLD是判断是否为斜体,选择true时为斜体
第三个: ARIAL
第四个: UnderlineStyle.NO_UNDERLINE 下划线
第五个: jxl.format.Colour.RED 字体颜色是红色的
jxl.write.WritableCellFormat wcfF = newjxl.write.WritableCellFormat(wf);
jxl.write.Label labelC = newjxl.write.Label(0, 0, "This is a Label cell",wcfF);
ws.addCell(labelC);
在Label()方法里面有三个参数
第一个是代表列数,
第二是代表行数,
第三个代表要写入的内容
第四个是可选项,是输入这个label里面的样式
然后通过写sheet的方法addCell()把内容写进sheet里面。
(2)添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
(3)添加Number对象
(3.1)显示number对象数据的格式
jxl.write.NumberFormat nf = newjxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
jxl.write.Number labelNF = newjxl.write.Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
Number()方法参数说明:
前两上表示输入的位置
第三个表示输入的内容
(4)添加Boolean对象
jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
(5)添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, newjava.util.Date());
ws.addCell(labelDT);
DateTime()方法的参数说明
前两个表示输入的位置
第三个表示输入的当前时间
(6)添加带有formatting的DateFormat对象
这个显示当前时间的所有信息,包括年月日小时分秒
jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyyhh:mm:ss");
jxl.write.WritableCellFormat wcfDF = newjxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, newjava.util.Date(), wcfDF);
ws.addCell(labelDTF);
(7)添加带有字体颜色Formatting的对象
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10,WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
import="jxl.format.*
jxl.write.WritableFont wfc = newjxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);
(8)设置单元格样式
jxl.write.WritableCellFormat wcfFC = newjxl.write.WritableCellFormat(wfc);
wcfFC.setBackGround(jxl.format.Colour.RED);//设置单元格的颜色为红色
wcfFC = new jxl.write.Label(6,0,"i love china",wcfFC);
分享到:
相关推荐
java利用jxl工具包操作Excel文件.doc
基于微信小程序设计校园浴室预约系统.docx基于微信小程序设计校园浴室预约系统.docx基于微信小程序设计校园浴室预约系统.docx基于微信小程序设计校园浴室预约系统.docx基于微信小程序设计校园浴室预约系统.docx基于...
用于前端传递table值到Java后台,进行导出Excel表格操作
1、通过java操作excel表格的工具类库 2、支持Excel 95-2000的所有版本 3、生成Excel 2000标准格式 4、支持字体、数字、日期操作 5、能够修饰单元格属性 6、支持图像和图表
jxl是java操作Excel的一个工具类,同样的工具类还有apache的poi,这个工具类我没用过,用了jxl就够了,jxl在进行数据量较大的工作中性能较强于poi,但是在样式上逊色于poi
Excel2003导出工具jxl.jar包,版本虽有点老,但还能用。
解析EXCEL的常用工具类--JXL,包括源码和JAR包,以及描述文件
jxl.jar是通过java操作excel表格的工具类库,开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。
使用jxl工具,实现excel表格数据导入到数据库中
jxl工具包 java eclipse插件
包含通过java操作excel表格的工具类库jxl.jar,方便使用。
jxl是java关于Excel的一个工具类,同样的工具类还有apache的poi,jxl在进行数据量较大的工作中性能较强于poi,但是在样式上逊色于poi,数据量小的时候,推荐使用
jxl.jar是一个java操纵excel的jar包,使用性很高,导入即可使用,在很多项目里非常实用,可处理excel文件,jxl.jar操作简单,使用方便。
JXL 处理excel的开源工具 这是2.4.3版本---用jdk1.4运行 如果自行下载,注意:2.6的版本需要jdk1.6运行
jxl的包,创建xls的工具jxl的包,创建xls的工具jxl的包,创建xls的工具jxl的包,创建xls的工具jxl的包,创建xls的工具
该jar包是Java操作excel的工具 该jar包是Java操作excel的工具 该jar包是Java操作excel的工具 该jar包是Java操作excel的工具 该jar包是Java操作excel的工具
通过java来操作Excel表格的工具类库。 支持字体、数字、日期操作,能够修饰单元格属性,能支持图像和图表,可以正确的处理Excel文件。 附使用方法。
jxl实现excel的读取和写入 jar包,jxl实现excel的读取和写入 jar包
jxl是一款小而强大的解析Excel 的第三方工具包,内含jar包和源文件包(两个),xl-2.6.12.jar,jxl-2.6.12_src.jar,非常有用的
问题:目前,无论是JXL还是POI,对Excel的操作都是比较原始的,用户无法使用这些框架代码直接读取Excle并相应相应的数据实体(Entity),也无法直接将数据实体写入到Excle文件中去。 本文章要介绍的是一个对JXL框架...