`

JXL, POI操作excel文件zz

    博客分类:
  • java
阅读更多

2008-11-10

JXL, POI操作excel文件zz

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://coldsummer.blogbus.com/logs/31205142.html

Java操作Excel之理解JXL --读取Excel

http://www.iteye.com/topic/63001

 

JXL (Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。JXL 的主页是:http://www.andykhan.com/jexcelapi/,可以在这里下载到它的最新的版本。
你可以分别通过如下命令
java -jar jxl .jar -xml test.xls
java -jar jxl .jar -cvs test.xls
以xml和cvs格式查看test.xls,这是因为JXL 作者实现了一个用来演示的jxl .demo.Demo的类。

当然我们使用JXL 主要是用它来动态读写Excel文件。现在就来看看JXL 在对Excel的读和写上都提供了那些支持。
先来看看Excel文件中都有写上面对象
1 文件对象 2工作簿对象 3 单元格对象。
相应的在JXL 中就有Workbook,Sheet ,Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。
我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
1选取Excel文件,2选择工作簿,3选择Cell,4读取信息。
那么现在就可以看看JXL 中这四步骤如何体现:
//通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));

//通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);

//通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始)
Cell c2 = sheet.getCell(2,1);

//通过Cell的getContents方法把单元格中的信息以字符的形式读取出来
String stringc2 = c2.getContents();

可以看到正是刚才所说的四个步骤。

我们都知道Excel单元格是有格式的,那么这些信息如何取得。
Cell提供了一个getType方法能够返回单元格的类型信息,同时JXL 提供了一个CellType类用来预设Excel中的类型信息,而且JXL 提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格。所以我们可以这样写:
if (c2.getType() == CellType.NUMBER)
{
  NumberCell nc = (NumberCell) c2;
  numberb2 = nc.getValue();
}

最后不要忘记关闭workbook以释放资源:
workbook.close();
现在总结一下:三个对象,四个步骤,注意格式。就可以轻松的从Excel文件中读取数据。

-------------------------------------------------------------------------------------------------------------------------

Java操作Excel之理解JXL--读取Excel模板动态写入数据并生成Excel

http://viwo.iteye.com/blog/64323

 

上一篇文章 Java操作Excel之理解JXL--读取Excel 说到如何用JXL读取Excel文件,
现在来看看如何读取Excel模板然后把动态数据写入到模板以生成特定格式的Excel。
同样的思路,先来考虑下会涉及到那些对象,和上篇文章读取相比这里涉及到一个写入的步骤,所以JXL必然会提供一个对象
来支持写入,这就是WritableWorkbook。那么如何得到到这个类的实例,查看APIDoc发现Workbook类提供了几个
静态的createWorkbook方法返回WritableWorkbook实例,可以看到众多createWorkbook方法主要分为两类:一个参数
和两个参数。简单分析可以得知前者仅仅是用来直接生成Excel文件,后者先读取模板再向模板写入数据然后生成Excel。
(还有一个三参数方法加上一个用来设置workbook的参数)
现在按照上篇文章中所讲述的流程来看看读取模板并写入需要那些步骤。

第一步:选择模板文件:
Workbook wb = Workbook.getWorkbook(new File(realpath));

第二步:通过模板得到一个可写的Workbook:
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);
第一个参数是一个输出流对象,比如可以
ByteArrayOutputStream targetFile = new ByteArrayOutputStream();
这样定义这个输出流对象。第二个参数代表了要读取的模板。


第三步:选择模板中名称为StateResult的Sheet:
WritableSheet wws = wwb.getSheet("StateResult");
如果需要也可以创建Sheet
WritableSheet wws = wwb.createSheet("Sheet名称",i);


第四步:选择单元格,写入动态值,根据单元格的不同类型转换成相应类型的单元格:
Label A1 = (Label)wws.getWritableCell(0,0);
A1.setString("单元格内容")

Number A2 = (Number)wws.getWritableCell(0,1);//Number是jxl.write.Number
A2.setValue(3.3);
也可以创建新的单元格并且加入到Sheet中
Label C1 = new Label(2,0,"单元格内容");
wws.addCell(C1);

Number C1 = new Number(2,0,3.3);
wws.addCell(C1);

在生成Excel报表的时候还会遇到一种需求就是数据的格式问题,我们可能希望数值型单元格以某种格式显示,而字符串型单元格以另

一种格式显示。这些可以通过WritableFont、NumberFormat、WritableCellFormat等实现,下例给单元格A1、A2添加了不同的格式。

java 代码
  1. WritableFont font=  new  WritableFont(WritableFont.createFont( "宋体" ), 10 ,WritableFont.NO_BOLD);   
  2. NumberFormat format =  new  NumberFormat( "###,##0.00" );  //NumberFormat是jxl.write.NumberFormat   
  3. WritableCellFormat cellFormat1 =  new  WritableCellFormat(font,format);   
  4. WritableCellFormat cellFormat2 =  new  WritableCellFormat(font);   
  5. cellFormat1.setBorder(Border.ALL, jxl.format.BorderLineStyle.THIN);  //Border是jxl.format.Border   
  6. cellFormat2.setBorder(Border.ALL, jxl.format.BorderLineStyle.THIN);  //Border是jxl.format.Border   
  7. A2.setCellFormat(cellFormat1);   
  8. A1.setCellFormat(cellFormat2);  

还有不要忘记关闭WritableWorkbook和Workbook以释放资源:
wwb.close();
wb.close();

最后就可以你需要的方式从输出流targetFile中取得Excel,比如直接生成文件存本地,输出到客户端浏览器等。

如果还有其他需求,按照这种思路,再参照APIDoc相信可以很容易的解决。

至此,Java操作Excel之理解JXL就写完了。下一篇会介绍如何用Jakarta POI操作Excel。

-------------------------------------------------------------------------------------------------------------------------

用Jakarta POI操作Excel文件

http://viwo.iteye.com/blog/66049

Jakarta POI 是一套用于访问微软格式文档的Java API。

Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于早在Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。它的官方首页是:http://jakarta.apache.org/poi/hssf/index.html,这里可以下载到它的最新版本和文档。

下面就来看看如何通过Jakarta POI的HSSF操作Excel文件。

操作Excel文件的步骤同JXL类似(关于如何用JXL操作Excel可以看我的另外两篇文章)。

HSSF对Excel的操作主要是通过下面几个对象实现:
HSSFWorkbook    工作簿对象对应于Excel文件
HSSFSheet       Sheet对象对应于Excel中的Sheet
HSSFRow         行对象表示Sheet中的一行(这个对象在JXL中并没有提供)
HSSFCell        单元格对象

操作步骤就是用HSSFWorkbook打开或者创建“Excel文件对象”,用HSSFWorkbook对象返回或者创建Sheet对象,用Sheet对象返回行对象,用行对象得到Cell对象,有了Cell对象就随你读写了。下面来看一个动态生成Excel文件的例子:

//创建HSSFWorkbook对象
HSSFWorkbook wb = new HSSFWorkbook();
//创建HSSFSheet对象
HSSFSheet sheet = wb.createSheet("sheet0");
//创建HSSFRow对象
HSSFRow row = sheet.createRow((short)0);
//创建HSSFCell对象
HSSFCell cell=row.createCell((short)0);
//用来处理中文问题
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//设置单元格的值
cell.setCellValue("单元格中的中文");
//定义你需要的输出流
OutputStream out = new FileOutputStream("viwo.xls");
//输出Excel
wb.write(out);
out.flush();

HSSF读取文件同样还是使用这几个对象,只是把相应的createXXX方法变成了getXXX方法即可。
只要理解了其中原理,不管是读还是写亦或是特定格式都可以轻松实现,正所谓知其然更要知其所以然。

最后附上HSSF官方的QuickGuide:《Busy Developers' Guide to HSSF Features》,虽然是英文的但还是很容易理解的。
http://jakarta.apache.org/poi/hssf/quick-guide.html

到此Java操作Excel文章系列就结束了,下一篇会介绍如何使用JFreeChart生成各种图。

分享到:
评论

相关推荐

    JXL 和 POI 操作Excel 表格

    JXL和Apache POI是两个Java库,专门设计用于读取、写入和操作Excel文件。这两个库为开发者提供了便利,使他们能够在Java应用程序中无缝地与Excel工作簿交互。 **JXL库** JXL(Java Excel API)是一个开源库,支持...

    操作Excel文件(读取和生成)jxl和poi

    JXL和Apache POI是两个广泛使用的库,分别提供了对Excel文件的读取和生成的支持。本篇文章将深入探讨这两个库的使用方法及其特点。 首先,JXL是一个Java API,主要用于读写Excel 97-2003格式的工作簿,即.xls文件。...

    java操作excel——jxl和poi比较

    本文将对比两种主流的Java Excel处理库:jxl和Apache POI,并探讨它们的特性和适用场景。 首先,jxl是较早的Java Excel处理库,主要用于读写Excel 97-2003格式的.XLS文件。它的API简洁,易于上手,对于简单的读写...

    jxl poi java操作excel

    "jxl"和"Apache POI"是两个主要的库,分别提供了对Excel文件操作的支持。以下是对这两个库及其相关知识点的详细说明: 1. **jxl库**: - **简介**:jxl是一个开源Java库,专门用于读写Microsoft Excel文件。它支持...

    JXL、POI实现Excel导入导出

    JXL和Apache POI是两个流行的Java库,专门用于读取、写入和操作Excel文件。下面将详细介绍这两个库以及如何利用它们实现Excel的导入导出功能。 ### JXL JXL(Java Excel API)是一个轻量级的Java库,它提供了读取...

    利用jxl操作excel文件

    本篇将详细介绍如何利用`jxl`库来操作Excel文件,并结合实例说明如何从Excel文件中提取数据并生成TXT文件。 首先,我们需要理解`jxl`库的基本结构。`jxl`库主要提供了`Workbook`、`Sheet`、`Cell`等类,分别对应...

    jxl poi技术对excel操作

    jxl jxl包 poi技术导出数据至excel中 poi-bin-2.5.1包 jxl对excel表格 代码操作 poi技术 java代码从数据库取数据导入至Excel表中 poi-bin-2.5.1-final-20040804.jar

    poi jxl 生成EXCEL 报表

    Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件。下面将详细阐述这两个库以及如何使用它们来生成Excel报表。 Apache POI 是一个...

    jxl操作excel文件

    ### jxl操作Excel文件知识点详解 ...虽然 jxl 的功能相比 Apache POI 较为简单,但对于简单的 Excel 文件操作而言,它是一个轻量级且高效的解决方案。在实际开发过程中,您可以根据项目的具体需求选择合适的工具。

    java使用poi包和jxl包操作excel的心得

    Java作为一款流行的企业级开发语言,提供了多种工具来操作Excel文件,其中最为常用的当属Apache POI与JXL这两个开源库。 #### 二、Apache POI简介 Apache POI是一个用于读写Microsoft Office格式文件的Java API,...

    java的POI操作Excel文件

    我碰到的主要的问题就是对公式支持不是很好,很多带有公式的Excel文件用JXL打开后,公式就丢失了(比如now(),today()),在网上看到其他大虾评论说JXL写入公式也有问题,另外,JXL操作Excel文件的效率比POI低一点。...

    java读取excel文件POI+jxl

    在Java中,读取和操作Excel文件是常见的需求,这通常涉及到使用库,如Apache POI和JXL。这两个库都允许开发者在Java中方便地读取、写入和修改Excel文件。 Apache POI是一个强大的库,专门用于处理Microsoft Office...

    java 通过poi操作excel jar包

    标题中的"java通过poi操作excel jar包"指的是使用Apache POI库来处理Excel文件的Java程序,通常需要引入特定版本的POI JAR包。在这个案例中,我们有两个版本的JAR包可供使用:poi_3.17.jar和poi_3.15.jar。这些版本...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    Apache POI 是一个流行的Java库,它允许开发者读写Microsoft Office格式的文件,包括Excel。下面我们将详细介绍如何在SpringBoot中整合POI来实现Excel的导入和导出,以及如何利用ExcelFormatUtil工具类进行单元格...

    Excel生成导出JXL和POI两种方式小demo

    此时,开发者通常会借助编程语言来实现自动化操作,Java中就有两个常用的库,即JXL和Apache POI,用于读写Excel文件。下面我们将详细探讨这两个库以及如何使用它们生成Excel导出。 1. **JXL库**: JXL是Java Excel...

    jxl操作excel文件例子

    在Java编程环境中,JXL库是一个非常实用的工具,它允许开发者轻松地读取、写入和修改Excel...不过要注意,JXL库对较新版本的Excel文件(如.xlsx格式)支持有限,对于这些新格式,更推荐使用Apache POI或其他更新的库。

    java 操作Excel jxl poi 有例子

    总结来说,Java中的JXL和Apache POI都是强大的工具,它们让你能够灵活地处理Excel文件。JXL适合简单的需求,而Apache POI则更适合需要处理复杂Excel特性的场景。通过学习和实践这些库提供的API,你可以轻松地完成...

    POI与JXL的实战性能对比

    POI提供了丰富的API来操作Excel文档,不仅可以读取和写入数据,还可以处理复杂的格式化需求、图表绘制等高级特性。虽然POI的使用较为灵活,但在处理大量数据时可能会占用更多的内存资源。 #### 实战性能对比 在...

    Java通过POI和JXL给Excel动态添加水印

    - **读取Excel文件**:使用JXL或POI库加载Excel文件。 - **创建水印图像**:根据`Model`中的数据动态生成水印图像。 - **将水印图像添加到Excel页面上**:使用POI提供的API来实现这一功能。 #### 示例代码框架 ```...

    java poi jxl 操作excel的小例子

    Java POI 和 JXL 是两种常用的 Java 库,用于处理 Microsoft Excel 文件。在这个入门级的实例中,我们将探讨如何使用这两个库来操作Excel文件。首先,我们先了解一下这两个库的基本概念。 1. **Java POI**: - ...

Global site tag (gtag.js) - Google Analytics