本文实例为大家分享了java读取简单excel通用工具类的具体代码,供大家参考,具体内容如下

读取excel通用工具类

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

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;

import org.apache.poi.ss.usermodel.CellType;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**

* 读取Excel通用工具类

* @author zql

*/

public class ReadExcel {

/**

* 读取Excel

*

* @param filepath 文件路径

* @param filename 文件名,包括扩展名

* @param startrow 开始行号,索引从0开始

* @param startcol 开始列号,索引从0开始

* @param sheetnum 工作簿,索引从0开始

* @return

*/

public List> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

String suffix = filename.substring(filename.lastIndexOf(".") + 1);

if ("xls".equals(suffix)) {

varList = readExcel2003(filepath, filename, startrow, startcol, sheetnum);

} else if ("xlsx".equals(suffix)) {

varList = readExcel2007(filepath, filename, startrow, startcol, sheetnum);

} else {

System.out.println("Only excel files with XLS or XLSX suffixes are allowed to be read!");

return null;

}

return varList;

}

/**

* 读取2003Excel

*

* @param filepath 文件路径

* @param filename 文件名,包括扩展名

* @param startrow 开始行号,索引从0开始

* @param startcol 开始列号,索引从0开始

* @param sheetnum 工作簿,索引从0开始

* @return

*/

public List> readExcel2003(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

try {

File target = new File(filepath, filename);

FileInputStream fis = new FileInputStream(target);

HSSFWorkbook wb = new HSSFWorkbook(fis);

fis.close();

// sheet 从0开始

HSSFSheet sheet = wb.getSheetAt(sheetnum);

// 取得最后一行的行号

int rowNum = sheet.getLastRowNum() + 1;

HSSFRow rowTitle = sheet.getRow(0);

// 标题行的最后一个单元格位置

int cellTitleNum = rowTitle.getLastCellNum();

String[] title = new String[cellTitleNum];

for (int i = startcol; i < cellTitleNum; i++) {

HSSFCell cell = rowTitle.getCell(Short.parseShort(i + ""));

if (cell != null) {

cell.setCellType(CellType.STRING);

title[i] = cell.getStringCellValue();

} else {

title[i] = "";

}

}

// 行循环开始

for (int i = startrow + 1; i < rowNum; i++) {

Map varpd = new HashMap();

// 行

HSSFRow row = sheet.getRow(i);

// 列循环开始

for (int j = startcol; j < cellTitleNum; j++) {

HSSFCell cell = row.getCell(Short.parseShort(j + ""));

String cellValue = "";

if (cell != null) {

// 把类型先设置为字符串类型

cell.setCellType(CellType.STRING);

cellValue = cell.getStringCellValue();

}

varpd.put(title[j], cellValue);

}

varList.add(varpd);

}

wb.close();

} catch (Exception e) {

System.out.println(e);

}

return varList;

}

/**

* 读取2007Excel

*

* @param filepath 文件路径

* @param filename 文件名,包括扩展名

* @param startrow 开始行号,索引从0开始

* @param startcol 开始列号,索引从0开始

* @param sheetnum 工作簿,索引从0开始

* @return

*/

public List> readExcel2007(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

try {

File target = new File(filepath, filename);

InputStream ins = new FileInputStream(target);

XSSFWorkbook wb = new XSSFWorkbook(ins);

ins.close();

// 得到Excel工作表对象

XSSFSheet sheet = wb.getSheetAt(sheetnum);

// 取得最后一行的行号

int rowNum = sheet.getLastRowNum() + 1;

XSSFRow rowTitle = sheet.getRow(0);

int cellTitleNum = rowTitle.getLastCellNum();

String[] title = new String[cellTitleNum];

for (int i = startcol; i < cellTitleNum; i++) {

XSSFCell cell = rowTitle.getCell(Short.parseShort(i + ""));

if (cell != null) {

// 把类型先设置为字符串类型

cell.setCellType(CellType.STRING);

title[i] = cell.getStringCellValue();

} else {

title[i] = "";

}

}

// 行循环开始

for (int i = startrow + 1; i < rowNum; i++) {

Map varpd = new HashMap();

// 得到Excel工作表的行

XSSFRow row = sheet.getRow(i);

// 列循环开始

for (int j = startcol; j < cellTitleNum; j++) {

// 得到Excel工作表指定行的单元格

XSSFCell cell = row.getCell(j);

String cellValue = "";

if (cell != null) {

// 把类型先设置为字符串类型

cell.setCellType(CellType.STRING);

cellValue = cell.getStringCellValue();

}

varpd.put(title[j], cellValue);

}

varList.add(varpd);

}

wb.close();

} catch (Exception e) {

System.out.println(e);

}

return varList;

}

}

读取excel通用工具示例测试类

import java.util.List;

import java.util.Map;

/**

* @author zql

*

*/

public class ReadExcelTest {

public static void main(String[] args) throws Exception {

ReadExcel r = new ReadExcel();

List> list = r.readExcel("e:\excel", "测试表格.xls", 0, 0, 0);

if (list != null) {

for (int i = 0; i < list.size(); i++) {

Map m = list.get(i);

m.forEach((key, value) -> {

System.out.println(key + ":" + value);

});

System.out.println();

}

}

List> lists = r.readExcel("e:\excel", "测试表格.xlsx", 0, 0, 0);

if (lists != null) {

for (int i = 0; i < lists.size(); i++) {

Map m = lists.get(i);

m.forEach((key, value) -> {

System.out.println(key + ":" + value);

});

System.out.println();

}

}

}

}

普通项目需要引入的包

poi-4.0.1.jar

poi-ooxml-4.0.1.jar

poi-ooxml-schemas-4.0.1.jar

commons-codec-1.11.jar

commons-collections4-4.3.jar

commons-math3-3.6.1.jar

xmlbeans-3.0.2.jar

commons-compress-1.18.jar

curvesapi-1.06.jar

maven项目依赖

org.apache.poi

poi

4.0.1

org.apache.poi

poi-ooxml

4.0.1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

java通用解析excel_java读取简单excel通用工具类相关推荐

  1. 利用poi 读取excel通用工具类

    poi excel导出通用工具 | 这一行是废话 根据上一篇利用poi 导出excel通用工具类去年写的一个工具类,同样根据业务需求重新封装了一个读excel 工具类,感觉还算通用,分享到博客,欢迎各 ...

  2. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  3. java poi解析excel_Java 利用POI 解析Excel

    引入的依赖 org.apache.poi poi 3.16 org.apache.poi poi-ooxml 3.16 简单说明 主要有四个属性,Workbook(工作表),Sheet(表单),Row ...

  4. JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)

    JAVA导出Excel通用工具--第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选.动态合并横向(纵向)单元格等多种复杂情况--保姆级别,真的不能再详细了,封装通用工具类,代码拿 ...

  5. java通用解析excel,java解析excel

    import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workb ...

  6. java下载本地目录excel_java写简单Excel 首行是目录 然后前台下载

    页面: 表格下载: @RequestMapping("/download") public void download(HttpServletRequest request, Ht ...

  7. java poi 解析excel_Java用POI解析excel并获取所有单元格数据

    1.导入POI相关jar包 org.apache.poi jar 2.代码示例 public List getAllExcel(File file, String tableName, String ...

  8. java导入导出excel_Java导入导出Excel工具 easyexcel

    Java导入导出Excel工具  easyexcel 做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了.Java解析生成Excel比较有名 ...

  9. Java之——导出Excel通用工具类

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79659605 新版地址  https://blog.csdn.net/l1028 ...

最新文章

  1. Unity Log重新定向
  2. 集群中的session共享存储 实现会话保持
  3. 比Redis快5倍的中间件,为啥这么快?
  4. 初三学生多会筹备计算机中考考试,2020年的初中生注意,中考将会发生这几大变化,最好提前准备...
  5. Python3 模块相关及输入输出模式
  6. 桥接模式(Bridge) 1
  7. php sqlite视图,SQLite 视图
  8. condition_variable_any
  9. 参与过上千亿项目的人,账单是何等的惊人?
  10. matlab2c使用c++实现matlab函数系列教程-cumsum函数
  11. 几款ReactJS最优秀的UI框架
  12. Web敏感目录快速扫描软件 wwwscan
  13. SQL sever2008 r2安装闪退的解决办法
  14. 【交换基础】交换基础知识总结
  15. 牛腩——SQLhelper
  16. # GIT团队实战博客
  17. 今日头条赚钱是真的吗,今日头条赚钱规则是什么
  18. “耀星计划”之华为信用钱包,覆盖HMS生态多领域
  19. css3多列布局(columnz),多列布局相关属性
  20. get/post请求使用工具(apifox/postman/浏览器)能请求通但是java代码不行的问题解决

热门文章

  1. java synchronized 原理_Java Synchronized的原理
  2. python数组切片教程_手把手numpy教程【二】——数组与切片
  3. java jobdetail_Java JobDetail.setName方法代码示例
  4. mysql8.0 linux 安装教程_linux下mysql8.0安装详细教程
  5. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
  6. ant4 多个form 验证_ant-design表单处理和常用方法及自定义验证操作
  7. c语言中缺少link文件夹,c – Cmake找不到使用“link_directories”的库
  8. 模拟人生4修改服务器,【M4分享】PS4主机版模拟人生4的作弊码
  9. mysql主从授权_MySQL主从复制(10)读写分离授权多种方案
  10. dapperpoco mysql_Dapper-master