<摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]
[<摘自>飞:jxl简析:http://www.emlog.net/fei]
(二)应用
在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Workbook) 组成 , 工作簿由工作表 (sheet) 组成 , 每个工作表又由很多单元格 (cell) 组成 . 工作簿有自己的特征 , 同样工作表 , 单元格也一样 . 从大局上了解了 excel 文件 , 对于我们更好的使用 jxl 是有一定的帮助的 . 具体请查看(一) API
在 jxl 中其大概的层次是这样的
名称 |
属性 |
Workbook |
WorkbookSettings |
Sheet |
SheetSettings |
Cell |
CeLlFormat CellFeatures CellView CellType |
Jxl 读 excel :
得到工作簿的方法主要有四个 :
getWorkbook(File file)
getWorkbook(File file,WorkSettings ws)
getWorkbook(InputStream is)
getWorkbook(InputStream is,WorkSettings ws)
参数有两个 :
第一个参数是必须的 : 文件或输入流 ,
第二个参数 : 工作簿 ws 是作为读出来的 excel 的一些约定 , 如地区 , 编码等 .
如果文件错误或格式错误 , 将会抛出 BiffException 或 IOException.
代码段 :
Workbook wb=null;
try
{
wb = Workbook.getWorkbook(excelFile);
wb.close();
}
catch(BiffException ex){
// 转换错误
}catch(IOException ex){
//IO 错误
}
以上如果一切正常的话 , 将得到此 excel 文件的工作簿 . 接下来我们就可以通过此文件簿得到其他的东西了 . 以下是得到工作表有关的方法
int getNumberOfSheets()// 工作表个数
Sheet getSheet(String name);// 得到此对应名称的工作表
Sheet getSheet(int index);// 得到此序列号的工作表
Sheet[] getSheets();// 得到工作表数组
String[] getSheetNames();// 得到工作表名称数组
示例代码如下:
Sheet sheet;
if(wb.getNumberOfSheets()>0)
{
sheet = wb.getSheet(0);
}
以下的方法除非特别目的,否则用到的地方不多.
Range[] finaName(String name);// 得到此名称的表格区
Cell findCellByName(String name);// 得到此名称的 Cell
Cell getCell(String loc)
String[] getRangeNames();
与文件是否可写有关的
boolean isProected();
得到了工作簿文件的某个工作表时.
对于工作表而言其主要的内容就是单元格了.
// 根据内容查看
Cell findCell(Pattern pattern,int firstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)
Cell findCell(String content)
Cell findCell(String content,omt forstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)
LabelCell findLabelCell(String contents)
// 根据位置得到
Cell getCell(int col,int row)
Cell getCell(String loc)//loc 的格式为 A3/B1/C3 其相同于
getCell(CellReferenceHelper.getColumn(loc0,CellReferenceHelper.getRow(loc)), 所以相对而言其性能没有 Cell getCell(int col,int row) 快
// 单元格数组
Cell[] getRows(int row)// 当前行单元格数组
Cell[] getCols(int col)// 当前列单元格数组
// 特殊单元格数组
// 超链接表格
Hyperlink[] getHyperlinks();// 超链接数组
// 区域表格
Range[] getMergedCells();// 区域单元格数组
// 图像表格
Int getNumberOfImages()// 拥有图片数
Image getDrawing(int index)// 对应序号的图片
// 工作表或多个表格一些自我属性
String getName()// 工作表名
int getRows()// 行数
int getCols()// 列数
SheetSettings getSettings()// 工作表设置
CellView getColumnView(int col)// 此列的表格视图
CellView getRowView(int row)// 此行的表格视图
以下是与单元格有关的一些操作:
CellFeatures getCellFeatures()// 主要是与表格内容有关的一些性质如验证等
CellFormat getCellFormat()// 主要是表格外在表现格式有关的一些性质.
int getColumn()// 所在列
int getRow()// 所在行
String getContents();// 内容
boolean isHidden();// 可见否
CellType getType();// 表格类型 如果不确定表格如果转换则可以使用此方法来确定表格类型.
以下我们讲述如何写 excel 文件.
写文件分为两种情况 一种是新建一种则是更新.
新建 excel 文件
新建 excel 文件很简单:
// 文件
WritableWorkbook createWorkbook(File file) // 无形式的创建一个 excel 文件
WritableWorkbook createWorkbook(File file Workbook in)
// 以 in 一样的格式创建一个 excel 文件,其初始内容与 in 文件相同 ( 更新文件可以用到此方法 )
WriteableWorkbook createWorkbook(File file,WorkSetting ws)// 以 ws 的设定创建文件
WritableWorkbook createWorkbook(File file,Workbook in,WorkSetting ws)
// 以 ws 的设定创建一个与 in 文件相同的文件
// 流
WritableWorkbook createWorkbook(OutputStream os)
WritableWorkbook createWorkbook(OutputStream os Workbook in)
WriteableWorkbook createWorkbook(OutputStream os,WorkSetting ws)
WritableWorkbook createWorkbook(OutputStream os,Workbook in,WorkSetting ws)
代码示例:
WritableWorkbook wrb;
WriteableWorkbook wrbin;
try
{
wrb = Workbook.createWorkbook(targetfile);
wrbin = Workbook.createWorkbook(targetfile,wb);
}
catch (IOexception e)
{
//IO 错误
}
当创建好工作簿时,我们就需要新建工作表了
WritableSheet createSheet(String name,int index);
WritableSheet wrs = wrb.createSheet(“demo”,0);
// 创建一个名为 demo 的工作表,其为工作簿的第一个工作表.
接下来我们就可以进行其他操作了
添加文本类单元格:
Label label = new Label(0,0,””);
wrb.addCell (label);
// 添加数据单元格
Number number = new Number(0,3,1234);
wrb.addCell (number);
// 添加时间单元格
DateTime dt = new DateTime(0,4,new Date());
Wrb.addCell (dt);
// 添加公式单元格
Fornual formual = new Formual(0,11,”Sum(A1:A9)”);
wrb.addCell (formual);
添加超链接类单元格
WirtableHyperlink wrlink =
new WritableHyperlink(0,1,0,1,new URL(“www.emlog.net/fei”),”emlog”);
wrb.addHyperlink (wrlink);
// 添加图像
WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));
wrb.addImage (wrimage);
// 注意, API 中注明只支持 png 文件,然而我用其他格式的图片,通过将其后缘改为 png 也能放到 excel 文件中.果然,在查看其具体源代码时,发现作者只是检测了文件的后缀名,如果不对 给出警告,并没有从图像文件的具体格式进行检测.
当然,表格中的数据算是表格的核心部分,但是同时 API 也提供了大量的其他方法来丰富表格的显示.在此,大家具体在使用过程中进行运用就行.
// 最后,写完表格后,不要忘记进行写操作,也就是常说的保存
wrb.write()
wrb.close(); 保存完后关闭相应资源是一个合格的程序员应该做的.
接下来,我们就来讲述写文件的另一方面:更新文件.有时候,并不仅仅只是需要新写文件,可能需要对已有文件进行更新.这时候我们可以这么来实现.
Workbook wb= Workbook.getWorkbook(modifyFile);
WritableWorkbook wrb = Workbook.createWorkbook(modifyFile, wb);
以上就实现了得到一个已存在的文件的可修改副本.
// 得到第一个工作表
WritableSheet wrs = wrb.getSheet(0);
// 得到 A0 单元格
Cell cell = Wrs.getCell(0,0);
// 对单元格格式进行判断
If (cell.getType()==CellType.LABEL){
Label label=(Label) cell;
label.setString(“u r modified.”);
}//modify end
//save excel
wrb.write();
wb.close();
wrb.close();
以上就简单的完成了一次 excel 文件的修改. API 中还提供了复制工作表,复制单元格等操作,大家可以通过查询 API 来了解其具体的用法. 我们可以从作者提供的包中得到很多关于如何使用API的示例.此处不献丑了 .jxl官文网站:http://www.andykhan.com/jexcelapi/index.html
<摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]的更多相关文章
- <摘自>飞:jxl简析[ http://www.emlog.net/fei ]
<摘自>飞:jxl简析:http://www.emlog.net/fei 最近,完成了一个网上报表系统,刚巧用到了一个 JAVA 操作 excel 表格的 API .闲来无事,就将其大概的 ...
- SpringMVC学习(一)——概念、流程图、源码简析
学习资料:开涛的<跟我学SpringMVC.pdf> 众所周知,springMVC是比较常用的web框架,通常整合spring使用.这里抛开spring,单纯的对springMVC做一下总 ...
- 简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...
- 简析 .NET Core 构成体系
简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...
- RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...
- PHP的错误报错级别设置原理简析
原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices inclu ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Android RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
随机推荐
- rxjs入门7之其它操作符复习
一.辅助类操作符 二.过滤数据流 三.转化数据流 四.异常错误处理 五.多播 ,Subject类型
- 使用appium后安卓手机无法调出键盘解决方法
问题:用appium进行真机调试后,使用手机的app进行输入时无法调出键盘. 原因:appium调试时,将手机输入法设置成了Unicode IME 解决方法: 方法一,手机设置里修改输入法: 不同的手 ...
- 多测师讲解IDE工具python_001.2pycham_安装
PyCharm安装使用教程 Pycharm 是目前 Python 语言最好用的集成开发工具. 下载 Pycharm 载时有两种版本选择 Professional(专业版,收费)和Community(社 ...
- rs232转rs485
rs232转rs485 rs232转rs485 ZLAN9223E是上海卓岚科技开发的一款先进的无源RS232转RS485转换器.具有如下优点: 支持最高达230400bps的波特率.高波特率下供电能 ...
- 算出cron表达式接下来几次执行时间
目录 1.使用cron库 2.总结 1.使用cron库 需要使用的go库:[点击跳转]. 具体使用方法可以参照例子使用,下面主要实现计算接下来几次cron表达式执行时间. package main i ...
- 习题3-5 谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)
#include<stdio.h> #include<string.h> char s[5][5]; int main() { while(gets(s[0])) { int ...
- 洛谷 P6419 Kamp 题解
明天就SX AFO了交篇题解%一下 这题大概是我第一道有独立思考切掉的紫题 之前的都是各种抄借鉴题解 为什么写这题的题解呢?另一个重要的原因是这样的↓ 翻了翻已有题解中的几篇,下面几种情况屡见不鲜 样 ...
- SQL中 char varchar和nvarchar的区别
转至:http://www.cnblogs.com/carekee/articles/2094676.html char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8) ...
- C# 面试前的准备_基础知识点的回顾_04
1.Session和Cookie的使用区别 很容易回答的就是Session在服务器端,存储的数据可以较大容量,比如我们存一个Table,上千条数据. Cookie保存在客户端,安全系数低,不能放重要的 ...
- 解决Mac下AndroidStudio内容时卡顿
Mac下AndroidStudio在写代码的时候出现卡顿,小圆圈会一直转,此时我们应该检查下AndroidStudio的内存使用情况了. 1.点击左上角 AndroidStudio -- Prefer ...