JXL, POI操作excel文件zz

2024-03-26 08:58
文章标签 excel 操作 poi zz jxl

本文主要是介绍JXL, POI操作excel文件zz,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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文件zz的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847961

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、