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简单的封装工具"涉及到的主要知识点是Java中的Apache POI库,这是一个用于处理Microsoft Office格式文件的开源库,特别适用于Excel文件的操作。在Java编程中,Apache POI库提供了一种方便的方式来创建、...
标题中的“封装后的POI包”指的是一个经过开发者二次封装的Apache POI库,这个库主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java开发中,POI是一个非常流行的库,用于读取、写入和修改...
在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...
标题提到的"java中excel导出工具poi接口封装"是指开发者为了简化业务代码,提高代码复用性和易用性,对Apache POI的API进行了二次封装。这种封装通常会创建一个或多个高级接口,隐藏了底层复杂的细节,让调用者能更...
在你提供的信息中,“基于poi封装的word-excel-Pdf导出的xdoc设计”是一个使用Apache POI进行文件处理的项目,它包含了将数据导出到Word、Excel和PDF格式的功能。 1. **Apache POI**: Apache POI 是一套用于处理...
poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值), poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值) poi导出导入封装(使用注解建立实体与excel映射关系+反射设置...
poi即Excel导入导出,在开发过程中了,为了提高数据录入速度, 一些系统都会使用导入功能,导入目前只能通过流的方式读写,那么为了此操作的便利性,提供此工具类,是原有的excel数据读取到泛型集合中,然后再对集合...
本例采用javabean + 注解的方式,对POI进行了封装,旨在针对不同的Excel文档用同样的方法处理,已到达代码的重复利用。该jar包包含导入 Import 和导出 Export Excel两部分。 (一)导入: /** * 描述: Excel 导入...
Java POI Excel封装例子 public class ExcelUtils
对poi导出excel进行了二次封装,封装后只需要使用模板导出excel就可以了,简单易用,example包里面有几个实例,可以看看,该工程已经上传到github上了,有兴趣的同学可以一起来改进它,...
本教程将详细介绍如何在iOS应用中实现高德地图POI搜索的封装,并通过一行代码调用。 首先,你需要在项目中引入高德地图SDK。可以通过CocoaPods进行管理,添加以下依赖到你的Podfile文件中: ```ruby pod '...
【标题】"easypoi POI封装工具类 office开发模板导入导出"涉及的核心知识点是Java中的easypoi库以及Apache POI项目,它们主要用于处理Microsoft Office文档,如Excel、Word和PowerPoint。easypoi是对Apache 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封装工具类"这一主题的详细解释。 1. **Apache POI介绍** Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office文件,包括Excel、Word和PowerPoint。它的核心...
只实现了简单的excel导入导出,不支持特殊模版的定义。...1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、函数式接口 等等 5、统一出参包装类 6、lombok
在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...
Apache POI和jXLS是两个在Java世界中处理Excel文件的流行库。本文将深入探讨这两个库以及如何利用它们进行Excel导出,并结合提供的源码进行封装。 Apache POI是一个开源项目,它提供了读取和写入Microsoft Office...
本篇文章将深入探讨如何使用Apache POI对Excel文件进行简单的封装,以便在Java项目中更方便地操作Excel数据。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8...
基于poi对excel操作的简单封装及必要的poi3.17包。针对excel文件或输入流,按行或者单元格解析处理,提供简单的通用单元格数据获取方法(数字类单元格返回Double, 日期返回Date, 公式返回计算后的结果,其它返回...
6. **关闭资源**: 完成写入后,别忘了调用Workbook的close()方法来释放资源,防止内存泄漏。 在这个"poi导出excel demo"项目中,你可能会看到如何组织这些步骤的示例代码,以及如何处理更复杂的功能,比如合并...