- 浏览: 154968 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
liveandevil:
我的一直出现驱动找不到的错误 你那个驱动jar文件时放在哪里 ...
JDBC数据库通用DAO -
zouc816:
hi,wjm901215
我看你这篇文章对mapXtreme ...
用mapXtreme Java开发web gis应用 (下)
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); int sheets = rwb.getNumberOfSheets(); |
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); Sheet[] sheets = rwb.getSheets(); |
3. String getVersion()
返回正在使用的API的版本号,好像是没什么太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); String apiVersion = rwb.getVersion(); |
Sheet接口提供的方法
1) String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); String sheetName = rs.getName(); |
2) int getColumns()
获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); int rsColumns = rs.getColumns(); |
3) Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); Cell[] cell = rs.getColumn(0); |
4) int getRows()
获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); int rsRows = rs.getRows(); |
5) Cell[] getRow(int row)
获取某一行的所有单元格,返回的是单元格对象数组,示例子:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); Cell[] cell = rs.getRow(0); |
6) Cell getCell(int column, int row)
获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0); Cell cell = rs.getCell(0, 0); |
2、生成新的Excel工作薄
下面的代码主要是向大家介绍如何生成简单的Excel工作表,在这里单元格的内容是不带任何修饰的(如:字体,颜色等等),所有的内容都作为字符串写入。(完整代码见ExcelWriting.java)
与读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象,这里要注意的是,只能通过 API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,因为类WritableWorkbook的构造函数为protected类型。示例代码片段如下:
import java.io.*; import jxl.*; import jxl.write.*; … … … … try { //构建Workbook对象, 只读Workbook对象 //Method 1:创建可写入的Excel工作薄 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile)); //Method 2:将WritableWorkbook直接写入到输出流 /* OutputStream os = new FileOutputStream(targetfile); jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os); */ } catch (Exception e) { e.printStackTrace(); } |
API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问Web服务器,如果HTTP 头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。
接下来就是要创建工作表,创建工作表的方法与创建工作薄的方法几乎一样,同样是通过工厂模式方法获得相应的对象,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位置,参考下面的代码片段:
//创建Excel工作表
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
"这锅也支好了,材料也准备齐全了,可以开始下锅了!",现在要做的只是实例化API所提供的Excel基本数据类型,并将它们添加到工作表中就可以了,参考下面的代码片段:
//1.添加Label对象
jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell");
ws.addCell(labelC);
//添加带有字型Formatting的对象
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
jxl.write.Label labelCF = new jxl.write.Label(1, 0, "This is a Label Cell", wcfF);
ws.addCell(labelCF);
//添加带有字体颜色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);
jxl.write.Label labelCFC = new jxl.write.Label(1, 0, "This is a Label Cell", wcfFC);
ws.addCell(labelCF);
//2.添加Number对象
jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);
ws.addCell(labelN);
//添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
//3.添加Boolean对象
jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
ws.addCell(labelDT);
//添加带有formatting的DateFormat对象
jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
ws.addCell(labelDTF);
这里有两点大家要引起大家的注意。第一点,在构造单元格时,单元格在工作表中的位置就已经确定了。一旦创建后,单元格的位置是不能够变更的,尽管单元格的内容是可以改变的。第二点,单元格的定位是按照下面这样的规律(column, row),而且下标都是从0开始,例如,A1被存储在(0, 0),B1被存储在(1, 0)。
最后,不要忘记关闭打开的Excel工作薄对象,以释放占用的内存,参见下面的代码片段:
//写入Exel工作表 wwb.write(); //关闭Excel工作薄对象 wwb.close(); |
这可能与读取Excel文件的操作有少少不同,在关闭Excel对象之前,你必须要先调用write()方法,因为先前的操作都是存储在缓存中的,所以要通过该方法将操作的内容保存在文件中。如果你先关闭了Excel对象,那么只能得到一张空的工作薄了。
3、拷贝、更新Excel工作薄
接下来简要介绍一下如何更新一个已经存在的工作薄,主要是下面二步操作,第一步是构造只读的Excel工作薄,第二步是利用已经创建的Excel工作薄创建新的可写入的Excel工作薄,参考下面的代码片段:(完整代码见ExcelModifying.java)
//创建只读的Excel工作薄的对象 jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile)); //创建可写入的Excel工作薄对象 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw); //读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0); //获得第一个单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //判断单元格的类型, 做出相应的转化 if(wc.getType() == CellType.LABEL) { Label l = (Label)wc; l.setString("The value has been modified."); } //写入Excel对象 wwb.write(); //关闭可写入的Excel对象 wwb.close(); //关闭只读的Excel对象 rw.close(); |
之所以使用这种方式构建Excel对象,完全是因为效率的原因,因为上面的示例才是API的主要应用。为了提高性能,在读取工作表时,与数据相关的一些输出信息,所有的格式信息,如:字体、颜色等等,是不被处理的,因为我们的目的是获得行数据的值,既使没有了修饰,也不会对行数据的值产生什么影响。唯一的不利之处就是,在内存中会同时保存两个同样的工作表,这样当工作表体积比较大时,会占用相当大的内存,但现在好像内存的大小并不是什么关键因素了。
一旦获得了可写入的工作表对象,我们就可以对单元格对象进行更新的操作了,在这里我们不必调用API提供的add()方法,因为单元格已经于工作表当中,所以我们只需要调用相应的setXXX()方法,就可以完成更新的操作了。
尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,以使单元格的内容以不同的形式表现。
新生成的工作表对象是可写入的,我们除了更新原有的单元格外,还可以添加新的单元格到工作表中,这与示例2的操作是完全一样的。
最后,不要忘记调用write()方法,将更新的内容写入到文件中,然后关闭工作薄对象,这里有两个工作薄对象要关闭,一个是只读的,另外一个是可写入的。
发表评论
-
JAX-WS一个很简单的RPC风格的Web Service同步调用
2013-01-10 17:13 946Web Service技术,无疑会越来越被广泛应用的,可 ... -
JAX-WS集成Web工程的Web Service的创建和发布简单入门(1)
2013-01-10 17:10 1036首先, 为了我们这个WS的实验能够顺利的完成,最好能到官 ... -
C3P0连接池配置
2012-11-08 10:07 942<c3p0-config> <defau ... -
Http学习之使用HttpURLConnection发送post和get请求 .
2012-10-29 15:40 1086最常用的Http请求无非是get和post,get请求可以获取 ... -
WebServices实例
2012-09-06 16:58 624http://www.cnblogs.com/mingzi/a ... -
博客文章
2012-08-23 14:13 0http://caoweiblog.sinaapp.com/ -
80端口被占用
2012-08-09 10:53 749netstat -aon|findstr "80&q ... -
ANT build.xml文件详解
2012-07-26 16:29 878Ant的优点 跨平台性。Ant是用Java语言编写的 ... -
关于C3P0超过最大连接数问题
2012-07-02 10:27 1178package com.innotek; import ... -
设置Eclipse背景色
2012-06-21 15:33 829(Window)-->(Preferences)--&g ... -
JSTL之formatNumber取整 .
2012-03-16 23:16 1762在网上查了许多资料都说EL表达式无法取整,的确EL表达式除法结 ... -
Apache APMServ 80端口被占用的最全面的解决方法
2011-12-14 13:35 375311小时前 在使用WampServer成功架设起Apache ... -
Eclipse中添加MyEclipse插件
2011-12-14 11:31 764众所周知eclipse是一个很强大的java IDE,而且它免 ... -
千万数量级分页存储过程,可支持多表查询,任意排序
2011-12-12 11:15 1215从程序中考虑:比如用 ... -
java技术大全网址
2011-11-28 14:20 784http://www.open-open.com/ -
Eclipse的TPTP使用方法
2011-10-09 13:56 1625Eclipse的TPTP工具使用方法:1. ... -
TPTP教程
2011-10-09 11:04 1125Eclipse Test and Performance To ... -
JExcelAPI修改Excel的实例
2011-09-09 14:33 869package com.jExcelApi.test; ... -
EL表达式取整或者取固定位小数 目前最好的方法
2011-07-28 10:37 924在网上查了许多资料都说EL表达式无法取整,的确EL表 ... -
java读取网络上的图片并保存到本地,图片文件名不变
2011-07-05 14:34 3375import java.io.DataInputStream; ...
相关推荐
在Eclipse这样的集成开发环境中,使用Java Excel API可以轻松处理各种Excel数据操作任务。本教程将详细介绍如何在Eclipse中利用Java Excel API进行Excel文件的读取与写入。 首先,你需要了解两个主要的Java库:...
Java Excel API,通常指的是jxl库,是一个广泛使用的开源Java库,用于读写Microsoft Excel文件。这个库使得在Java程序中处理Excel数据变得极其便捷,无论是读取现有的工作簿、创建新的工作簿,还是修改现有表格,jxl...
这个API使得非Windows操作系统上的开发者也能使用纯Java代码处理Excel数据。Java Excel API的稳定版本V2.0支持多种Excel文件格式,如Excel 95、97、2000等,并具备以下功能: 1. **读取Excel文件数据**:API能够从...
下面将详细介绍 JXL 的使用方法和相关知识点。 一、JXL 的主页和下载 JXL 的主页是 http://www.andykhan.com/jexcelapi/,可以在这里下载到它的最新的版本。 二、JXL 的命令行使用 可以分别通过以下命令使用 JXL...
Java Excel API提供的方法不仅限于读取内容,还可以设置单元格的值,格式化单元格,添加或删除行、列,甚至合并单元格。例如,设置单元格的值: ```java Label label = new Label(0, 0, "New Value"); rs.addCell...
以下是一个简单的应用示例,展示如何使用Java Excel API从Excel文件中读取数据: 首先,需要导入必要的库: ```java import java.io.*; import jxl.*; ``` 然后,你可以创建一个`Workbook`对象来表示Excel文件,...
java excel api 包 博文链接:https://crane-ding.iteye.com/blog/230690
Java Excel API的使用非常灵活,不仅可以从文件读取Workbook,还可以从InputStream创建,这在处理网络上的Excel文件时非常有用。此外,对于复杂的格式设置和数据操作,API提供了丰富的类和方法供开发者使用,如样式...
本资料“全面挖掘Java Excel API 使用方法 .rar”主要聚焦于如何高效地使用Java来读取、写入以及操作Excel文件。下面将详细介绍Java Excel API的相关知识点。 1. **Apache POI库** Apache POI是Java领域中最常用的...
下面是一些基本的用法示例,展示如何使用Java Excel API来创建和修改Excel文件。 ##### 创建一个新的Excel文件 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook...
This is the home page of Java Excel API - open source Java API which allows Java developers to read Excel spreadsheets and to generate Excel spreadsheets dynamically. In addition, it contains a ...
在本文中,我们将深入探讨JavaExcel API的核心功能、使用场景以及如何在实际项目中进行操作。 1. **核心功能**: - **读取Excel文件**:JavaExcel API允许开发者轻松地读取Excel工作簿(Workbook)中的数据,包括...