`

java解释excel(POI) 设计原理与实践

阅读更多

1. poi 包的介绍

 

Apache POI是Apache软件基金会的开放源码函式库,
POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。

 

2.在这里我们介绍一下典型的类型就OK

 这里我们来介绍excel 是怎么解释的,当然像word、ppt、visio 是同理的

 原理: 某管理员要查某层楼有多少人叫什么名字?

        1)首先要明确大楼在那里(找到对应的文件)

        2)其次要明确是在第几单元(找到对应的sheet)

        3)在找到第几层楼(对应的row)

        4)敲门问住户户主先生/小姐的姓名(cell)

    

  就这样就实现了,我们查找某层楼的户主信息了。是不是很简单

我们来看一下用poi 程序包怎么来实现excel 文件的解释工作

注意第四项有先生/小姐所以有一条是重点就是类型string、int、function 等

 

package com.test;

import java.io.FileInputStream;
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;

/**
 * @see poi 设计原理介绍
 * @author liuqing
 *
 */
public class TestA {
	
	public static void main(String args[]) throws Exception {
		//找到大楼的位置
		FileInputStream input = new FileInputStream("d:\\usb.xls");
		//告诉管理员
		POIFSFileSystem f = new POIFSFileSystem(input);
		//走到大楼楼下
		HSSFWorkbook wb = new HSSFWorkbook(f);
		//确认自己走到第几单元
		HSSFSheet sheet = wb.getSheetAt(0);
		//看一看有没有楼层
		Iterator rows = sheet.rowIterator();
		while (rows.hasNext()) {
			//如果有我们一层层问
			HSSFRow row = (HSSFRow)rows.next();
			Iterator cells = row.cellIterator();
			//如果有人开门
			while(cells.hasNext()) {
				//我们一户一户的登记
				HSSFCell cell = (HSSFCell) cells.next();
				//是先生还是小姐(对应的数据类型)
				System.out.print(cell.getStringCellValue() + "====|===");
			}
			System.out.println("");
		}
		
	}

}

  

 

为了方便于正确的读取我们做了一个封装

 

 

package com.test;

import java.io.FileInputStream;
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;
import org.apache.poi.ss.usermodel.Cell;

/**
 * @see poi 设计原理介绍
 * @author liuqing
 *
 */
public class TestA {
	
	public static void main(String args[]) throws Exception {
		//找到大楼的位置
		FileInputStream input = new FileInputStream("d:\\dir.xls");
		//告诉管理员
		POIFSFileSystem f = new POIFSFileSystem(input);
		//走到大楼楼下
		HSSFWorkbook wb = new HSSFWorkbook(f);
		//确认自己走到第几单元
		HSSFSheet sheet = wb.getSheetAt(0);
		//看一看有没有楼层
		Iterator rows = sheet.rowIterator();
		while (rows.hasNext()) {
			//如果有我们一层层问
			HSSFRow row = (HSSFRow)rows.next();
			Iterator cells = row.cellIterator();
			//如果有人开门
			while(cells.hasNext()) {
				//我们一户一户的登记
				HSSFCell cell = (HSSFCell) cells.next();
  			    //是先生还是小姐(对应的数据类型)
				int cellType = cell.getCellType();
				System.out.print(getValue(cell,cellType));
			}
			System.out.println("");
		}
		
	}
	
	/**
	 * 值对象封装
	 * @param cell
	 * @param cellType
	 * @return
	 */
	public static Object getValue(Cell cell,int cellType) {
		if (cellType == Cell.CELL_TYPE_NUMERIC) {
			return cell.getNumericCellValue() + "		|	";
		}
		else if (cellType == Cell.CELL_TYPE_STRING) {
			return cell.getRichStringCellValue() + "		|	";
		}
		else if (cellType == Cell.CELL_TYPE_BOOLEAN) {
			return cell.getBooleanCellValue() + "		|	";
		}
		else if (cellType == Cell.CELL_TYPE_FORMULA) {
			return cell.getCellFormula() + "		|	";
		}
		else if (cellType == Cell.CELL_TYPE_BLANK) {
			return "" + "		|	";
		}
		else if (cellType == Cell.CELL_TYPE_ERROR) {
			return "" + "		|	";
		}
		else {
			return "" + "		|	";
		}
		
	}

}

 

运行结果

 

编号		|	出生年月日		|	性别		|	美好		|	
2134.0		|	40453.0		|	21.0		|	213.0		|	
SSS		|	40453.0		|	22.0		|	3321.0		|	
AS		|	40453.0		|	23.0		|	3322.0		|	
DSADSA		|	40453.0		|	24.0		|	3323.0		|	
2134.0		|	40453.0		|	25.0		|	3324.0		|	
DSADSA		|	40453.0		|	26.0		|	3325.0		|	
DSADSA		|	40453.0		|	27.0		|	3326.0		|	
AS		|	40453.0		|	28.0		|	3327.0		|	
40453.0		|	40453.0		|	29.0		|	3328.0		|	
40453.0		|	40453.0		|	30.0		|	3329.0		|	
40453.0		|	40453.0		|	ASAD		|	DASD		|	
2123321.0		|	40453.0		|	DSA		|	DSAD		|	

  

 

 

分享到:
评论

相关推荐

    java基于poi通过excel模板导出

    在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的文件,包括Excel。本篇文章将详细探讨如何利用POI库基于模板来导出Excel文档。 首先,我们需要理解Apache...

    java-poi-excel-导出20万条记录【源代码】

    在JavaExcel的实践中,当一次性加载大量数据到内存时,确实容易引发`OutOfMemoryError`,这是因为Excel对象模型在内存中的表示占用空间较大。为了解决这个问题,我们需要采用流式处理或者分批处理的策略。在描述中...

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    标题中的“poi将word、PPT、Excel转pdf实现在线预览的jar包”涉及到的是Apache POI库在Java开发中的应用,以及如何利用它来处理Microsoft Office文档并转换为PDF格式,以便进行在线预览。Apache POI是Java平台上用于...

    jxls-poi导出excel示例代码文件

    `jxls`是一个Java库,它扩展了Apache POI项目,使得我们可以使用简单的模板语法来读写Excel文件。`jxls-poi`是`jxls`的一个分支,专门针对Apache POI进行优化,支持使用POI API处理Excel文件。Apache POI是一个开源...

    poi-ooxml-3.9-sources.jar.zip_excel poi_hugeigz_poi ooxml 3.9.ja

    在处理Excel文件时,Apache POI提供了一系列API,例如SXSSF(Streaming Usermodel API)就是为了解决内存消耗问题而设计的。SXSSF允许开发者在内存有限的情况下处理大型Excel文件,因为它会将部分数据写入磁盘,而...

    基于JAVA的依赖POI包装的EXCEL读写组件.zip

    标题中的“基于JAVA的依赖POI包装的EXCEL读写组件”指的是一个使用Java编程语言开发的工具,它依赖于Apache POI库来处理Microsoft Excel文件的读取和写入操作。Apache POI是一个开源项目,它允许开发者使用Java来...

    基于Java的简单数据库设计生成工具(生成Excel文档)

    在IT领域,数据库设计是软件开发过程中的关键环节,它涉及到数据...配合“数据库设计文档.xlsx”和“DataBaseDocumentCreater4Excel”这两个文件,用户可以深入理解工具的工作原理,并可能根据自身需求进行定制和扩展。

    java导出excel 在web项目

    1. **Java与Excel交互库** Java中常用处理Excel的库有Apache POI和JExcelAPI。Apache POI是更流行的选择,它提供了对Microsoft Office格式(包括Excel)的读写支持。POI库分为HSSF(用于旧版的.xls文件)和XSSF...

    Apache POI for Android

    Apache POI 是一个著名的开源项目,主要为处理微软的Office文档格式提供了一个强大的Java API。在Android开发中,Apache POI 提供了处理...在实际开发中,理解其工作原理和最佳实践对于优化性能和用户体验至关重要。

    Excel2html-纯java实现excel转html

    Java中有一些著名的库,如Apache POI,用于读取和写入Microsoft Office格式的文件,包括Excel。这些库允许开发者以编程方式访问Excel的工作表、单元格、样式等元素。在"Excel2html"中,开发者可能利用了POI库来解析...

    poi获取导入行所在的图片

    在Java的POI库中,处理Excel文件时,我们经常需要读取并操作其中的数据,包括文本、数字以及图像等元素。然而,POI API在设计时并未直接提供获取单元格内图片的方法,这就需要我们采取一些间接的方式来实现。本知识...

    excel解析poi.jar包及源码

    Apache POI是一个开源项目,专为处理Microsoft Office格式的文件而设计,特别是Excel。它提供了Java API,使得开发者能够在Java应用程序中读写Excel文件。在本篇中,我们将深入探讨如何使用Apache POI库解析Excel...

    使用java Apache poi 根据word模板生成word报表.rar

    Apache POI是Java社区开发的一个库,主要用于读写Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)等。在本项目中,“使用java Apache poi 根据word模板生成word报表.rar”是一个压缩包,...

    生成excel报表(poi)公用方法AExcuteExcel

    为了深入理解这个公用方法的工作原理,你需要阅读`AExcuteExcel.java`的源代码,并结合业务实体类`DnbBasicPrice.java`来查看如何将数据写入Excel报表。这将有助于你掌握使用Apache POI生成动态Excel报表的技能。

    Excel模板Java实体生成器

    【Excel模板Java实体生成器】是一种工具,它利用Apache POI库来解析Excel文件,无论是2003版的老格式还是2007版的新格式,都能够被它识别并读取。这个工具的主要目的是帮助开发者根据Excel表格中的数据结构自动生成...

    poi3.8 源代码 解析Excel

    Apache POI是一个开源项目,专为处理Microsoft Office格式的文件而设计,特别是Excel。在"poi3.8 源代码 解析Excel"这个主题中,我们主要关注的是如何使用POI库来解析和操作Excel文件。POI 3.8 是一个较早的版本,但...

    Java使用POI导出大数据量Excel的方法

    为了解决这个问题,Apache POI引入了SXSSFWorkbook类,这是一个专门为处理大数据量Excel而设计的类。 **SXSSFWorkbook详解** SXSSFWorkbook是在Apache POI 3.8版本及以上开始支持的,它是XSSFWorkbook的一个子类,...

    Excel与XML相互转化的Java实现

    - **转换原理**:首先,使用纯Java实现的Excel处理库(如Apache POI)读取Excel文件内容,并将其转换为XML格式。这一过程涉及将Excel单元格的数据结构映射到XML元素和属性。接着,将生成的XML文件在网络中传输。接收...

    poi,jxl解析excel

    - **限制**:与Apache POI相比,JXL对Excel的支持相对有限,不支持新格式,且功能相对较弱。 3. **选择和比较**: - **性能**:由于Apache POI处理OpenXML格式,其内存占用可能比JXL高,但提供了更全面的功能。 ...

    Java编写的简易excel

    在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和服务器端...通过以上知识点,我们可以了解到“Java编写的简易excel”项目的实现原理和可能的技术栈,这为Java开发者提供了处理Excel文件的一个实用工具。

Global site tag (gtag.js) - Google Analytics