POI导入工具类
前言
导入的通用方法,包括xls、xlsx的取值方法,非空判断方法,空行判断,处理了手机号读取和日期读取格式问题。这几个方法就可以完成简单读取了,有时间我在优化下。
maven依赖
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
导入工具类
package cc.vvxtoys.poi;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
public class ImportExcelUtils {
public static final String EXCEL_2003 = ".xls";
public static final String EXCEL_2007 = ".xlsx";
@SuppressWarnings("static-access")
public String getValue(XSSFCell cell) {
if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(cell.getBooleanCellValue()).trim();
} else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return String.valueOf(sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()))).trim();
}
BigDecimal bd = new BigDecimal(String.valueOf(cell.getNumericCellValue()).trim());
return bd.toPlainString();
} else {
return String.valueOf(cell.getStringCellValue()).trim();
}
}
@SuppressWarnings("static-access")
public String getValue(HSSFCell cell) {
if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(cell.getBooleanCellValue()).trim();
} else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return String.valueOf(sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()))).trim();
}
BigDecimal bd = new BigDecimal(String.valueOf(cell.getNumericCellValue()).trim());
return bd.toPlainString();
} else {
return String.valueOf(cell.getStringCellValue()).trim();
}
}
//判断空行
public boolean isBlank(Row row){
for(int i=0;i<row.getLastCellNum();i++){
Cell cell = row.getCell(i);
if(cell!=null&&cell.getCellType()!=cell.CELL_TYPE_BLANK){
return false;
}
}
return true;
}
//非空判断
public boolean isEmpty(Object obj){
if (obj instanceof HSSFCell) {
HSSFCell cell = (HSSFCell) obj;
return getValue(cell) == null || "".equals(getValue(cell));
}
if (obj instanceof XSSFCell) {
XSSFCell cell = (XSSFCell) obj;
return getValue(cell) == null || "".equals(getValue(cell));
}
return obj == null || obj.toString().trim().equals("");
}
}
POI导入工具类的更多相关文章
- Excel导入工具类
项目需要从Excel导入数据,然后插入到数据库对应表中.设计了一个导入工具类,导入数据和导入结果如下图示: poi jar版本采用的3.15 导入工具类实现如下: package com.alphaj ...
- Excel导入工具类兼容xls和xlsx
package com.bj58.finance.platform.operation.provider.util; import org.apache.log4j.Logger; import or ...
- poi 导出工具类
工具类 package com.banxue.kmsservice.helper; import net.sf.json.JSONArray; import net.sf.json.JSONObjec ...
- java实现Excel定制导出(基于POI的工具类)
我的需求: 项目中有一些工程表格需要导出,设计到行列合并,定制样式,原有工具类冗余,内聚性强.所以想写一个可以随意定制excel的工具类,工具类满足需求: 对于常用的工程表格有模板格式,可以任意插拔. ...
- POI 导出导入工具类介绍
介绍: Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI ...
- 使用POI导出EXCEL工具类并解决导出数据量大的问题
POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...
- excel导入工具
1 介绍 excel导入工具 整个项目的代码结构如下 \---excelExport # 导出工具包 | AsyncExportExcel.java #多线程导出 | ExcelImport.java ...
- 导入导出封装的工具类 (一) 利用POI封装
对于导入导出各个项目中差点儿都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是眼下比較流程和经常使用的框架,有必要都了解一下. ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
随机推荐
- js运行机制
情况一 script标签里面的运行顺序是同步的 遇到settimeout的时候就会变异步,最后执行 执行顺序为1342 情况二 只输出a 情况三 输出4444 异步队列插入的时间和执行时间 for循环 ...
- Linux过滤错误日志
grep -E 'at |Exception|exception|Error|error|Caused by' test.log
- 指导手册01:安装Hadoop
指导手册01:安装Hadoop Part 1:安装及配置虚拟机 1.安装Linux. (1)打开VMvirtualBox (2) 控制->新建虚拟机,输入虚拟机名称“marst+学号” 类型: ...
- eclipse中创建DataBase Connections
1.window --> show view --> other --> Data Management --> Data Exploerer --> ok: 2.右键单 ...
- nodejs --- formidable模块 , post 上传.
1. 只有一个文件域: var formidable = require('formidable'), http = require('http'), util = require('util'); ...
- 外网如何访问web项目holer实现篇
外网访问WEB 内网主机上安装了WEB服务器,只能在局域网内访问,怎样从公网也能访问本地WEB应用? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装Java 1.7及以上版本 ...
- 【Keil5 MDK】armar工具的基本用法(armar --help)
ARM Librarian, 5.03 [Build 76] - archive creation and maintenance tool Command format: armar options ...
- MarkDown学习——基础用法
目录 MarkDown开发版本MD2All基础用法 此处有代码<a id="top"></a>作为页内锚点 此处是用自动生成的目录 MarkDown是什么M ...
- node.js 调用第三方服务
node作为客户端调用第三方服务 nodejs.cn/api 1. let http = require('http'); let util = require("util") ...
- Arch Linux 独特的包管理器相关名词解释及用法对照
https://wiki.archlinux.org/index.php/PacmanPacman包管理器是Arch Linux的主要特色之一.它结合了简单的二进制包格式和易于使用的构建系统.pacm ...