`
walkon
  • 浏览: 2909 次
文章分类
社区版块
存档分类
最新评论

POI封装之六

    博客分类:
  • POI
阅读更多
public class POICell implements ICell {

	private Cell cell;

	private String key;

	private FormulaEvaluator fe;

	private IRow row;

	private static final Map<String, CellStyle> CACHE = new HashMap<String, CellStyle>();

	POICell(Cell cell, String key) {
		this.cell = cell;
		this.key = key;
	}

	@Override
	public int getType() {
		return cell.getCellType();
	}

	@Override
	public void setValue(Object value) {
		int type = getType();
		if (Cell.CELL_TYPE_NUMERIC == type) {
			if (value instanceof Date) {
				Workbook wb = cell.getRow().getSheet().getWorkbook();
				CellStyle cs = wb.createCellStyle();
				cs.setDataFormat(wb.createDataFormat().getFormat("yyyy-m-d"));
				cell.setCellStyle(cs);
				cell.setCellValue((Date) value);
			} else {
				cell.setCellValue(Double.parseDouble(String.valueOf(value)));
			}

		} else if (Cell.CELL_TYPE_STRING == type) {
			cell.setCellValue(String.valueOf(value));
		} else if (Cell.CELL_TYPE_BLANK == type) {
			cell.setCellValue(String.valueOf(value));
		} else if (Cell.CELL_TYPE_BOOLEAN == type) {
			cell.setCellValue(Boolean.parseBoolean(String.valueOf(value)));
		} else if (Cell.CELL_TYPE_FORMULA == type) {
			cell.setCellFormula(String.valueOf(value));
		} else {
			cell.setCellValue((RichTextString) value);
		}

	}

	@Override
	public String getKey() {
		return key;
	}

	@Override
	public Object evaluate() {
		if (null == fe) {
			fe = cell.getSheet().getWorkbook().getCreationHelper()
					.createFormulaEvaluator();
		}
		CellValue cv = fe.evaluate(cell);
		if (cv == null) {
			return null;
		}
		return getCellValue(cv);
	}

	private Object getCellValue(CellValue cv) {

		switch (cv.getCellType()) {
		case Cell.CELL_TYPE_BOOLEAN:
			return cv.getBooleanValue();
		case Cell.CELL_TYPE_NUMERIC:
			return cv.getNumberValue();
		case Cell.CELL_TYPE_STRING:
			return cv.getStringValue();
		case Cell.CELL_TYPE_BLANK:
			return null;
		case Cell.CELL_TYPE_ERROR:
			return null;
		case Cell.CELL_TYPE_FORMULA:
			return null;
		}
		return null;
	}

	@Override
	public IRow getRow() {
		return this.row;
	}

	void setRow(IRow row) {
		this.row = row;
	}

	@Override
	public ICellValue getCellValue() {
		return new POICellValue(cell);
	}

	@Override
	public void setValue(Object value, String dataFormat) {
		int type = getType();
		Workbook wb = cell.getRow().getSheet().getWorkbook();

		CellStyle cs = null;
		if (CACHE.containsKey(dataFormat)) {
			cs = CACHE.get(dataFormat);
		} else {
			cs = wb.createCellStyle();
			cs.setDataFormat(wb.createDataFormat().getFormat(dataFormat));
			cs.setWrapText(true);
			cs.setShrinkToFit(true);
			CACHE.put(dataFormat, cs);
		}

		cell.setCellStyle(cs);

		if (Cell.CELL_TYPE_NUMERIC == type) {
			if (value instanceof Date) {
				cell.setCellValue((Date) value);
			} else {
				cell.setCellValue(Double.parseDouble(String.valueOf(value)));
			}

		} else if (Cell.CELL_TYPE_STRING == type) {
			cell.setCellValue(String.valueOf(value));
		} else if (Cell.CELL_TYPE_BLANK == type) {
			cell.setCellValue(String.valueOf(value));
		} else if (Cell.CELL_TYPE_BOOLEAN == type) {
			cell.setCellValue(Boolean.parseBoolean(String.valueOf(value)));
		} else if (Cell.CELL_TYPE_FORMULA == type) {
			cell.setCellFormula(String.valueOf(value));
		} else {
			cell.setCellValue((RichTextString) value);
		}
	}
}
分享到:
评论

相关推荐

    poi简单的封装工具

    【标题】"poi简单的封装工具"涉及到的主要知识点是Java中的Apache POI库,这是一个用于处理Microsoft Office格式文件的开源库,特别适用于Excel文件的操作。在Java编程中,Apache POI库提供了一种方便的方式来创建、...

    封装后的POI包

    标题中的“封装后的POI包”指的是一个经过开发者二次封装的Apache POI库,这个库主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java开发中,POI是一个非常流行的库,用于读取、写入和修改...

    POI操作Excel的封装

    在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...

    java中excel导出工具poi接口封装

    标题提到的"java中excel导出工具poi接口封装"是指开发者为了简化业务代码,提高代码复用性和易用性,对Apache POI的API进行了二次封装。这种封装通常会创建一个或多个高级接口,隐藏了底层复杂的细节,让调用者能更...

    基于poi封装的word-excel-Pdf导出的xdoc设计,xdoc的jar包,加代码

    在你提供的信息中,“基于poi封装的word-excel-Pdf导出的xdoc设计”是一个使用Apache POI进行文件处理的项目,它包含了将数据导出到Word、Excel和PDF格式的功能。 1. **Apache POI**: Apache POI 是一套用于处理...

    poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值)

    poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值), poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值) poi导出导入封装(使用注解建立实体与excel映射关系+反射设置...

    POI web导入导出类封装!

    poi即Excel导入导出,在开发过程中了,为了提高数据录入速度, 一些系统都会使用导入功能,导入目前只能通过流的方式读写,那么为了此操作的便利性,提供此工具类,是原有的excel数据读取到泛型集合中,然后再对集合...

    POI 封装操作Excel(导入、导出)

    本例采用javabean + 注解的方式,对POI进行了封装,旨在针对不同的Excel文档用同样的方法处理,已到达代码的重复利用。该jar包包含导入 Import 和导出 Export Excel两部分。 (一)导入: /** * 描述: Excel 导入...

    Java POI Excel封装例子

    Java POI Excel封装例子 public class ExcelUtils

    poi导出excel二次封装,简单易用,完全不需要了解poi的api就可以使用

    对poi导出excel进行了二次封装,封装后只需要使用模板导出excel就可以了,简单易用,example包里面有几个实例,可以看看,该工程已经上传到github上了,有兴趣的同学可以一起来改进它,...

    高德地图POI搜索封装 iOS 集成一行代码调用

    本教程将详细介绍如何在iOS应用中实现高德地图POI搜索的封装,并通过一行代码调用。 首先,你需要在项目中引入高德地图SDK。可以通过CocoaPods进行管理,添加以下依赖到你的Podfile文件中: ```ruby pod '...

    easypoi POI封装工具类 office开发模板导入导出.zip

    【标题】"easypoi POI封装工具类 office开发模板导入导出"涉及的核心知识点是Java中的easypoi库以及Apache POI项目,它们主要用于处理Microsoft Office文档,如Excel、Word和PowerPoint。easypoi是对Apache POI进行...

    Excel POI读取封装(文件+示范代码)

    Excel POI读取封装(文件+示范代码) package org.excel.service; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java....

    java中poi读写excel封装工具类(兼容office2003和2007等版本)

    以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍** Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office文件,包括Excel、Word和PowerPoint。它的核心...

    spring-excel-demo--poi 封装对象注解式导入导出--springboot--注释非常完整,适合初学者研究!!!

    只实现了简单的excel导入导出,不支持特殊模版的定义。...1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、函数式接口 等等 5、统一出参包装类 6、lombok

    基于poi的excel导入导出封装

    在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...

    java excle导出封装 poi jxls exlce导出源码

    Apache POI和jXLS是两个在Java世界中处理Excel文件的流行库。本文将深入探讨这两个库以及如何利用它们进行Excel导出,并结合提供的源码进行封装。 Apache POI是一个开源项目,它提供了读取和写入Microsoft Office...

    POI操作EXCEL文件的简单封装

    本篇文章将深入探讨如何使用Apache POI对Excel文件进行简单的封装,以便在Java项目中更方便地操作Excel数据。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8...

    基于poi对excel操作的简单封装和必要的poi3.17包

    基于poi对excel操作的简单封装及必要的poi3.17包。针对excel文件或输入流,按行或者单元格解析处理,提供简单的通用单元格数据获取方法(数字类单元格返回Double, 日期返回Date, 公式返回计算后的结果,其它返回...

    poi导出excel demo

    6. **关闭资源**: 完成写入后,别忘了调用Workbook的close()方法来释放资源,防止内存泄漏。 在这个"poi导出excel demo"项目中,你可能会看到如何组织这些步骤的示例代码,以及如何处理更复杂的功能,比如合并...

Global site tag (gtag.js) - Google Analytics