package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
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;

/**
* EXCEL文档解析工具类
* 该工具能将EXCEL文档中的表解析为由JAVA基础类构成的数据集合
* 整个EXCEL表由多个行组成.每行用一个LIST表示.
* EXCEL中的行由一个LIST表示,各列的数据索引从0开始一一对齐存放在这个LIST中;
* 多个行构成整个表,由一个LIST存放多个行.
*
*******************************************
* com.trumptech.common.fileParser.excel
* 2007-6-15
* 16:20:38
* author linfan
*******************************************
*/
public class ExcelSheetParser {

private Logger logger= Logger.getLogger(ExcelSheetParser.class);

private HSSFWorkbook workbook ;

public ExcelSheetParser(File excelFile) throws FileNotFoundException, IOException{

workbook = new HSSFWorkbook(new FileInputStream(excelFile));
}

/**
* 获得表中的数据
* @param sheetNumber 表格索引(EXCEL 是多表文档,所以需要输入表索引号)
* @return 由LIST构成的行和表
* @throws FileNotFoundException
* @throws IOException
*/
public List<List> getDatasInSheet(int sheetNumber) throws FileNotFoundException, IOException{
List<List> result = new ArrayList<List>();

//获得指定的表
HSSFSheet sheet = workbook.getSheetAt(sheetNumber);

//获得数据总行数
int rowCount = sheet.getLastRowNum();
logger.info("found excel rows count: " + rowCount);
if (rowCount < 1) {
return result;
}

//逐行读取数据
for (int rowIndex =0; rowIndex <= rowCount; rowIndex++) {

//获得行对象
HSSFRow row = sheet.getRow(rowIndex);

if (row != null) {

List<Object> rowData = new ArrayList<Object>();

//获得本行中单元格的个数
int columnCount = row.getLastCellNum();

//获得本行中各单元格中的数据
for (short columnIndex = 0; columnIndex < columnCount; columnIndex++) {
HSSFCell cell = row.getCell(columnIndex);

//获得指定单元格中数据
Object cellStr = this.getCellString(cell);

rowData.add(cellStr);

}

result.add(rowData);
}
}
return result;
}

/**
* 获得单元格中的内容
* @param cell
* @return
*/
protected Object getCellString(HSSFCell cell){
Object result = null;
if (cell != null) {

int cellType = cell.getCellType();

switch(cellType){

case HSSFCell.CELL_TYPE_STRING :
result = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
result=cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_FORMULA:
result = cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_ERROR:
result=null;
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
result=cell.getBooleanCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
result=null;
break;
}
}
return result;
}

public static void main(String[] args) throws Exception {
File file = new File("D:\\合同1411021948809.xls");
ExcelSheetParser parser = new ExcelSheetParser(file);
List<List> datas = parser.getDatasInSheet(0);

for(int i=0;i<datas.size();i++){//显示数据
List row = datas.get(i);
for(short n=0;n<row.size() ;n++){
Object value = row.get(n);
String data = String.valueOf(value);
System.out.print(data +"\t");
}
System.out.println();
}
}
}

读取EXCEL文档解析工具类的更多相关文章

  1. PHP读取excel文档

    PHP读取excel文档 项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较轻量级, ...

  2. C#操作Excel(2)-- 打开-读取Excel文档

    由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...

  3. Python实现读取Excel文档中的配置并下载软件包

    问题:现在遇到这样一个问题,服务器存储了很多软件包,这些包输入不同的产品,每个产品都有自己的配置,互相交叉,那么到底某一产品所有配置的软件包下载后,占用多大空间呢? 分析:从这个问题入手,了解到:软件 ...

  4. 【转】ExcelHelper类,用npoi读取Excel文档

    //------------------------------------------------------------------------------------- // All Right ...

  5. Java使用poi包读取Excel文档

    项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org. ...

  6. POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

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

  7. NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式

    下载地址 http://npoi.codeplex.com/releases 下面放一个 NPOIHelper 助手类吧,也不是我写的- NpoiExcelHelper 可以生成xlsx格式publi ...

  8. C#读取Excel文档

    上面分别是Excel文档的内容和读取结果: 奉上C#源代码: using System; using System.Data; using System.Data.OleDb; namespace R ...

  9. R语言读取Excel文档

    在R语言数据管理(三):数据读写一博文中,我曾写到有关读取xls.xlsx文件时一般将文档改成csv文件读取,这是一般做法.csv文件也有其缺点,修改较为麻烦,当文件数据较大时尤为明显.而生活中必不可 ...

随机推荐

  1. Ubuntu和UOS+mips64l龙芯处理器安装编译Openssl

    1.下载openssl开发包文件,我这里下载的是openssl-1.1.1f.tar.gz:并放在/data/home/dengchaoqun/openssl1.1.1目录下 2.终端切换到当前目录下 ...

  2. java中jna使用回调实现事件监听器——观察者模式

    (1)C接口中的接口头文件 #pragma once #include <iostream> #include <vector> #include <core/core. ...

  3. JedisCluster使用pipeline操作Redis Cluster最详细从0到1实现过程

    公众号文章链接:https://mp.weixin.qq.com/s/6fMsG009RukLW954UUndbw 前言 2020年4月30日,Redis 6.0.0正式发布,标志着redis从此告别 ...

  4. 基于jupyter lab搭建网页编程环境并添加自定义python kernel和matlab kernel以及plotly的使用

    内容转载自我的博客 目录 说明 1. 创建虚拟环境jupyter 2. 安装nodejs(用于jupyterlab安装扩展) 3. 安装pip包 4. 使用jupyterlab 5. 配置jupyte ...

  5. Linux系统性能排查

    一.性能监控Sar命令 语法格式: [root@cdh init.d]# sar -h -A:所有报告的总和 -b:显示I/O和传递速率的统计信息 -B:显示换页状态 -d:输出每一块磁盘的使用信息 ...

  6. post请求下载文件,获取Content-Disposition文件名

    1.post下载文件代码,doload方法 import request from "../../src/utils/request"; import { API } from & ...

  7. 【对线面试官】Java NIO

    服务端: public class NoBlockServer { public static void main(String[] args) throws IOException { // 1.获 ...

  8. NOIP初赛篇——05计算机语言

    程序 ​ 程序就是一系列的操作步骤,计算机程序就是由人实现规定的计算机完成某项工作的操作步骤.每一步骤的具体内容能够理解的指令来描述,这些指令告诉计算机"做什么"和"怎么 ...

  9. 白日梦的Elasticsearch笔记(一)基础篇

    目录 一.导读 1.1.认识ES 1.2.安装.启动ES.Kibana.IK分词器 二.核心概念 2.1.Near Realtime (NRT) 2.2.Cluster 2.3.Node 2.4.In ...

  10. intellij idea2020将javaWeb项目打成war包并部署到阿里云服务器遇到java.lang. UnsupportedClass VersionError问题(已解决)

    首先将javaweb项目打包成war文件(有关如何打包参考 https://jingyan.baidu.com/article/20b68a88642829386cec62f7.html.https: ...