- 浏览: 334584 次
文章分类
最新评论
-
luokery:
你把正常的代码放到try里面不就好了, 异常的时候就catch ...
巧用while循环避免执行除了异常处理的的另一个处理机制 -
java_doom:
这个行号根据什么来的 为什么不是连续的?
别拿Hadoop map key当id使 -
mixer_b:
...
写博客的那些事儿 -
flyfx:
谢谢谢谢
java break,continue,return 使用。【借鉴与改编】 -
andilyliao:
比起青鸟 我更鄙视大学。
北大青鸟就让你们这么鄙视吗.
先看代码,挨句解释:
一般遍历使用两种方式,1:得到总的行数和每行的列数,然后循环。2:使用迭代
先看第一种:
- package com.golden.test;
- import java.io.File;
- import java.io.FileInputStream;
- import org.apache.poi.hssf.usermodel.HSSFCell;
- import org.apache.poi.hssf.usermodel.HSSFRow;
- import org.apache.poi.hssf.usermodel.HSSFSheet;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- /**
- *
- * @author 崔素强
- *
- */
- public class PoiReadXls2 {
- public static void main(String[] args) {
- File f = new File("c:\\a.xls");
- try {
- FileInputStream is = new FileInputStream(f);
- HSSFWorkbook wbs = new HSSFWorkbook(is);
- HSSFSheet childSheet = wbs.getSheetAt(0);
- // System.out.println(childSheet.getPhysicalNumberOfRows());
- System.out.println("有行数" + childSheet.getLastRowNum());
- for (int j = 0; j < childSheet.getLastRowNum(); j++) {
- HSSFRow row = childSheet.getRow(j);
- // System.out.println(row.getPhysicalNumberOfCells());
- // System.out.println("有列数" + row.getLastCellNum());
- if (null != row) {
- for (int k = 0; k < row.getLastCellNum(); k++) {
- HSSFCell cell = row.getCell(k);
- if (null != cell) {
- switch (cell.getCellType()) {
- case HSSFCell.CELL_TYPE_NUMERIC: // 数字
- System.out.print(cell.getNumericCellValue()
- + " ");
- break;
- case HSSFCell.CELL_TYPE_STRING: // 字符串
- System.out.print(cell.getStringCellValue()
- + " ");
- break;
- case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
- System.out.println(cell.getBooleanCellValue()
- + " ");
- break;
- case HSSFCell.CELL_TYPE_FORMULA: // 公式
- System.out.print(cell.getCellFormula() + " ");
- break;
- case HSSFCell.CELL_TYPE_BLANK: // 空值
- System.out.println(" ");
- break;
- case HSSFCell.CELL_TYPE_ERROR: // 故障
- System.out.println(" ");
- break;
- default:
- System.out.print("未知类型 ");
- break;
- }
- } else {
- System.out.print("- ");
- }
- }
- }
- System.out.println();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
得到Excel的文件然后读取,这个很简单。关键有两个地方,也许在网上会看到有的这样使用有的那样使用。
System.out.println("有行数" + childSheet.getLastRowNum());
System.out.println(childSheet.getPhysicalNumberOfRows());
System.out.println("有列数" + row.getLastCellNum());
System.out.println(row.getPhysicalNumberOfCells());
如果人都拷贝代码进行使用了,不知道有什么区别。太多的区别不知道,但是有一点我发现了,那就是如果中间各行或者隔列的话getPhysicalNumberOfRows和getPhysicalNumberOfCells就不能读取到所有的行和列了。
再者,一定要对单元格的格式进行判断switch (cell.getCellType()),不同的单元格格式使用不同的方法。最后加上为止类型,以防万一。
而且在数字类型里,又分为了纯数字和时间格式:
- case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
- if (HSSFDateUtil.isCellDateFormatted(cell)) {
- // 如果是date类型则 ,获取该cell的date值
- value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
- } else { // 纯数字
- value = String.valueOf(cell.getNumericCellValue());
- }
还有一种迭代的方法:
- package com.golden.test;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Iterator;
- import org.apache.poi.hssf.usermodel.HSSFCell;
- import org.apache.poi.hssf.usermodel.HSSFRow;
- import org.apache.poi.hssf.usermodel.HSSFSheet;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.poifs.filesystem.POIFSFileSystem;
- /**
- *
- * @author 崔素强
- *
- */
- public class PoiReadXls {
- @SuppressWarnings( { "unchecked", "deprecation" })
- public static void main(String[] args) {
- File f = new File("c:\\a.xls");
- try {
- InputStream input = new FileInputStream(f);
- POIFSFileSystem fs = new POIFSFileSystem(input);
- HSSFWorkbook wb = new HSSFWorkbook(fs);
- HSSFSheet sheet = wb.getSheetAt(0);
- Iterator rows = sheet.rowIterator();
- while (rows.hasNext()) {
- HSSFRow row = (HSSFRow) rows.next();
- // System.out.print("行:" + row.getRowNum() + " ");
- Iterator cells = row.cellIterator();
- while (cells.hasNext()) {
- HSSFCell cell = (HSSFCell) cells.next();
- // System.out.println("列:" + cell.getCellNum());
- switch (cell.getCellType()) {
- case HSSFCell.CELL_TYPE_NUMERIC: // 数字
- System.out.print(cell.getNumericCellValue() + " ");
- break;
- case HSSFCell.CELL_TYPE_STRING: // 字符串
- System.out.print(cell.getStringCellValue() + " ");
- break;
- case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
- System.out.println(cell.getBooleanCellValue() + " ");
- break;
- case HSSFCell.CELL_TYPE_FORMULA: // 公式
- System.out.print(cell.getCellFormula() + " ");
- break;
- case HSSFCell.CELL_TYPE_BLANK: // 空值
- System.out.println(" ");
- break;
- case HSSFCell.CELL_TYPE_ERROR: // 故障
- System.out.println(" ");
- break;
- default:
- System.out.print("未知类型 ");
- break;
- }
- }
- System.out.println();
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- }
这种方法,如果数据的紧凑的,使用还是方便的,但是我发现,如果是空行或者是空列,他就会隔过去。具体的自己试试就知道了。
另外,也能看到这里得到Excel文件的方式是通过File,如果要引用到Struts2里,这是很简单的,因为Struts2上传时Action里定义的就是File或者File数组。
发表评论
-
java如何终止线程
2012-04-24 21:38 1076对于线程的终止或者中断,由于java中Thread.stop方 ... -
ubuntu-11.10-server-i386学习笔记-网络基本配置
2012-04-23 22:11 10431. 静态IP地址配置 配置文件路径:/etc/networ ... -
ubuntu-11.10-server-i386学习笔记-Apache安装
2012-04-23 22:11 837第一步:先更新安装包缓存 1.1 sudo apt-get ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装
2012-04-23 22:10 1126在安装SVN前,假设你的Apache已经安装好了。 ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器-客户端测试
2012-04-23 22:10 746进入客户端测试之前,您应该确保svn服务器已经正确安装,如果您 ... -
svn服务器搭建经验总结
2012-04-23 22:09 1024从最近几天的实验来看,svn(Subversion versi ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(二)
2012-04-18 13:59 1944上一节贴出了web应用访问生成报告的action ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(一)
2012-04-18 13:59 2104后台主要工作是解析XML定义的标签文件,并 ... -
单例类、final、抽象类
2012-04-15 23:53 1667前些日子一直没写博客,因为病了,所以就耽误了,现在好点了 ... -
怎样在架构中合理的设置request中的Lcoale
2012-04-15 23:51 1266相信很多朋友在做J2EE国际化的时候,很可能遇到这个问题 ... -
一个Java时间工具类
2012-04-14 21:50 1031主要包含了对时间操作的一些工具方法,仅供参考吧! ... -
POI Excel导出,我的又一个模板方法
2012-04-14 21:49 2843下面有源码,下载就可以用,如果因为包的问题,就拷贝我 ... -
Poi 读写Excel 合并ExcelSheet Struts2实现
2012-04-14 21:48 1522网上有许多人在找这样的例子,有多个Excel,要把他们合 ... -
struts2项目中静态html在firefox下乱码的解决
2012-04-13 00:03 1007struts2 项目,通常开 ... -
黑马程序员——Java开发前奏
2012-04-12 23:59 824对于Java,我的一 ... -
《JAVA与模式》之单例模式
2012-04-12 23:58 782在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模 ... -
Java中的String不再纠结
2012-04-12 23:58 1457又是新的一月,又是各种总结,先分享一下java中st ... -
swing绘制了一只直升机
2012-04-12 23:56 3535周末用swing绘制了一只直升机 对swing的的绘制技 ...
相关推荐
要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...
android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel
本教程将详细讲解如何使用Apache POI库来读取Excel文件的内容。 首先,为了在Java项目中使用Apache POI,我们需要通过Maven进行依赖管理。在`pom.xml`文件中添加以下依赖: ```xml <groupId>org.apache.poi ...
Apache POI提供了丰富的API,可以实现对Excel文件的复杂操作,如合并单元格、设置样式、处理公式等。在Android开发中,这些功能同样适用,但需要注意资源管理,因为Android设备的内存有限。 总的来说,Apache POI是...
POI读取excel的例子
标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...
**POI读取Excel** 读取Excel主要涉及以下步骤: 1. **打开Workbook**:通过 FileInputStream 读取Excel文件,然后创建Workbook对象。 2. **获取Sheet**:从Workbook中获取需要的Sheet。 3. **遍历Row和Cell**:...
实现了JAVA 窗口,读取EXCEL文件,用poi读取EXCEL内容只是一个小例子
Apache POI提供对Microsoft Office格式的全面支持,包括Excel的.xlsx格式。此精简版可能是为了减小Android应用的体积和提高性能,移除了不必要的部分,但仍保留了读取Excel文件的核心功能。 3. **aa-poi-ooxml-...
apache poi 读取 Excel 的 jar 包 博文链接:https://wxinpeng.iteye.com/blog/231895
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...
在Java编程环境中,如果你需要读取或写入Excel文件,POI 提供了强大的支持。本教程将深入讲解如何使用POI的HSSF组件来处理Excel 97-2003格式的文件(BIFF8格式)。 一、Excel基础 Excel 97 文件格式,也被称作BIFF8...
标题提到的“poi读取Excel用到的jar包”指的是在Java项目中使用POI库进行Excel操作所需引入的依赖文件。这些jar包在描述中给出,包括了以下几个: 1. poi-ooxml-schemas-3.8-beta5-20111217.jar:这个文件包含了...
本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到实体类中以供后续使用。 Apache POI是一个强大的库,允许程序员使用Java来创建、修改和显示Microsoft...
本篇将详细讲解如何使用Apache POI读取Excel文件中的带格式数据。 首先,理解Apache POI的基本架构至关重要。POI提供了HSSF(Horrible Spreadsheet Format)用于处理老版本的.xls文件,而XSSF用于处理较新的.xlsx...
本篇将详细讲解如何利用Java的开源库Apache POI,结合反射机制,通过ExcelUtil工具类简化Excel读取的过程。 Apache POI是一个强大的库,它允许Java程序员创建、修改和展示MS Office格式的文件,包括Excel。在传统的...
在Java环境中,如果你需要使用POI库来读取、写入或操作Excel文件,你需要确保你的项目中包含了正确的JAR文件。在这个场景中,你提到的几个JAR文件都是Apache POI的不同版本和组件: 1. **poi-3.8.jar**:这是Apache...
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
#### 三、使用 POI 创建和读取 Excel 文件 为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...