Java解析excel文档并以List输出

时间:2022-12-26 19:11:27

/********************************************************工具类start*****************************************************************/

package cn.cnnho.utils;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

/**
* @功能描述: excel文件解析工具

*/
public class BatchUploadUtlis {

/**
* @功能描述:将excel解析为list结合返回
* @参数说明:@param excelPath excel路径
* @参数说明:@return
* @作者: Jgx
* @创建时间:2019年4月26日 下午3:06:54
*/
@SuppressWarnings("resource")
public List<BatchUploadInfo> mentondExecute(String excelPath) {
BatchUploadInfo buInfo =null;
List<BatchUploadInfo> buList = new ArrayList<BatchUploadInfo>();
try {
File excel = new File(excelPath);

//判断文件是否存在
if (excel.isFile() && excel.exists()) {

//转移.特殊字符
String[] split = excel.getName().split("\\.");
Workbook wb;

//根据文件后缀(xls/xlsx)进行判断
if ( "xls".equals(split[1])){
FileInputStream fis = new FileInputStream(excel); //文件流对象
wb = new HSSFWorkbook(fis);
}else if ("xlsx".equals(split[1])){
wb = new XSSFWorkbook(excel);
}else {
System.out.println("文件类型错误!");
return null;
}

/**
* 开始解析
*/
Sheet sheet = wb.getSheetAt(0);//读取sheet 0
int firstRowIndex = sheet.getFirstRowNum()+1;//第一行是列名,所以不读
int lastRowIndex = sheet.getLastRowNum();//总行数
System.out.println("总行数: "+lastRowIndex);

/* 遍历行*/
for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {
Row row = sheet.getRow(rIndex);
if (row != null) {
int firstCellIndex = row.getFirstCellNum();
int lastCellIndex = row.getLastCellNum();

buInfo = new BatchUploadInfo();

/*遍历列*/
for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {
Cell cell = row.getCell(cIndex);
switch(cIndex){
case 1:
buInfo.setDepName(cell.toString());break;
case 2:
buInfo.setStorageLocation(cell.toString());break;
case 3:
buInfo.setContractName(cell.toString());break;
case 4:
buInfo.setContractNo(cell.toString());break;
case 5:
buInfo.setPartyA(cell.toString());break;
case 6:
buInfo.setPartyB(cell.toString());break;
case 7:
buInfo.setHeir(cell.toString());break;
case 8:
buInfo.setTheSignOne(cell.toString());break;
case 9:
buInfo.setTheSignDate(cell.toString());break;
case 10:
buInfo.setElectronicEdition(cell.toString());break;
case 11:
buInfo.setContent(cell.toString());break;
case 12:
buInfo.setStorageType(cell.toString());break;
case 13:
buInfo.setIsSame(cell.toString());break;
case 14:
buInfo.setStorageDate(cell.toString());break;
case 15:
buInfo.setRemark(cell.toString());break;
default:
break;
}
}
buList.add(buInfo);
}
}
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
e.printStackTrace();
}
return buList;
}

public static void main(String[] args) {
BatchUploadUtlis buu = new BatchUploadUtlis();
List<BatchUploadInfo> list = buu.mentondExecute("F:\\工作资料\\20190228档案管理\\合同\\合同\\合同登记表(测试).xls");
for(int i = 0 ; i < list.size() ; i++) {
System.out.println(list.get(i).getContractNo());
}
}
}

/********************************************************工具类end*****************************************************************/

/********************************************************实体类start*****************************************************************/

package cn.cnnho.utils;

/**
* @功能描述:bean

*/
public class BatchUploadInfo {

private String id;
private String depName;
private String storageLocation;
private String contractName;
private String contractNo;
private String partyA;
private String partyB;
private String heir;
private String theSignOne;
private String theSignDate;
private String electronicEdition;
private String content;
private String storageType;
private String isSame;
private String storageDate;
private String remark;

public String getIsSame() {
return isSame;
}
public void setIsSame(String isSame) {
this.isSame = isSame;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
public String getStorageLocation() {
return storageLocation;
}
public void setStorageLocation(String storageLocation) {
this.storageLocation = storageLocation;
}
public String getContractName() {
return contractName;
}
public void setContractName(String contractName) {
this.contractName = contractName;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getPartyA() {
return partyA;
}
public void setPartyA(String partyA) {
this.partyA = partyA;
}
public String getPartyB() {
return partyB;
}
public void setPartyB(String partyB) {
this.partyB = partyB;
}
public String getHeir() {
return heir;
}
public void setHeir(String heir) {
this.heir = heir;
}
public String getTheSignOne() {
return theSignOne;
}
public void setTheSignOne(String theSignOne) {
this.theSignOne = theSignOne;
}
public String getTheSignDate() {
return theSignDate;
}
public void setTheSignDate(String theSignDate) {
this.theSignDate = theSignDate;
}
public String getElectronicEdition() {
return electronicEdition;
}
public void setElectronicEdition(String electronicEdition) {
this.electronicEdition = electronicEdition;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getStorageType() {
return storageType;
}
public void setStorageType(String storageType) {
this.storageType = storageType;
}
public String getStorageDate() {
return storageDate;
}
public void setStorageDate(String storageDate) {
this.storageDate = storageDate;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}

}

/********************************************************实体类end****************************************************************/

所需jar包

commons-collections4-4.1.jar
curvesapi-1.04.jar
poi-3.15.jar
poi-ooxml-3.15.jar
poi-ooxml-schemas-3.15.jar
stax-api-1.0.1.jar
xmlbeans-2.6.0.jar

Java解析excel文档并以List<T>输出的更多相关文章

  1. Android解析Excel文档完整示例

    MainActivity如下: package cc.testexcel; import java.io.File; import jxl.Cell; import jxl.CellType; imp ...

  2. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  3. Java解析XML文档&lpar;简单实例&rpar;&mdash&semi;&mdash&semi;dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  4. POI使用:用poi接口不区分xls&sol;xlsx格式解析Excel文档&lpar;41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法&rpar;

    一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...

  5. Java解析XML文档——dom解析xml

    一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...

  6. Oracle PLSQL读取&lpar;解析&rpar;Excel文档

    http://www.itpub.net/thread-1921612-1-1.html !!!https://code.google.com/p/plsql-utils/ Introduction介 ...

  7. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  8. 浅谈用java解析xml文档(三)

    接上一篇,本文介绍使用JDOM解析xml文档, 首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初, JDOM作 ...

  9. Java解析word文档

    背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...

随机推荐

  1. 定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show&lpar;&rpar;用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show&lpar;&rpar;来显示时钟的时间

    package java1; public class Clock { int hhh; int mmm; int sss; Clock(int h,int m,int s) { hhh=h; mmm ...

  2. 表单和验证事件以及marquee标签

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  3. EF Code First 导航属性 与外键

    一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之间的 ...

  4. destoon实现商铺管理主页设置增加新菜单的方法

    1.打开/lang/zh-cn/home.inc.php,找到9,10行替换如下: $HMENU = $DMENU = array('公司介绍', '供应产品', '采购清单', '新闻中心', '荣 ...

  5. swift学习 - tableView自适应高度1(xib autoLayout)

    tableView自适应高度 效果图: 源码: class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSo ...

  6. GC参考手册 —— GC 算法&lpar;实现篇&rpar;

    学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算法的具体实现.首先要记住的是, 大多数JVM都需要使用两种不同的GC算法 —— 一种用来清理年轻代, 另一种用来清理老年代. 我们可以选择JV ...

  7. &lbrack;转载&rsqb; erp开发-数据查询优化方法

    系统运行环境:MSSQL 2008随着公司业务快速发展,各种业务数据如火箭般的高速增长,出现一个又一个千万行数据的表,往往大表之间的关联,耗费系统大量的磁盘io,并且会影响正常的实时业务的操作,所以我 ...

  8. crm作业知识点集合&lbrack;三&rsqb;

    知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...

  9. 记录:Web相关政策之备案号、视频播放

    (一)备案号链接: 服务器在国内的网站受工信部监管,并受其颁布的<管理办法>约束.根据<互联网信息服务管理办法>及<非经营性互联网信息服务备案管理办法>的法律法规, ...

  10. Java内存优化和性能优化的几点建议

    1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收.有时,开发者会将经常调用的对象或者变量定义为static,以 ...