一、添加依赖

org.apache.poi

poi

3.8

org.apache.poi

poi-ooxml

3.8

二、工具类

根据文件后缀判断 2003 || 2007 || 2010 格式。

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

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

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

import java.io.FileInputStream;

import java.io.InputStream;

import java.time.Instant;

import java.time.LocalDateTime;

import java.time.ZoneId;

import java.time.format.DateTimeFormatter;

import java.util.HashMap;

import java.util.Map;

public class ExcelUtils {

private static Workbook wb;

private static Sheet sheet;

private static Row row;

private static final String EXCEL_XLS = “xls”;

private static final String EXCEL_XLSX = “xlsx”;

/**

  • 读取表头

  • @param inputStream 文件

  • @return List 返回list

*/

public static Map<Integer, String> readExcelTitle(InputStream inputStream, String suffix) {

getWorkbook(inputStream, suffix);

sheet = wb.getSheetAt(0);

row = sheet.getRow(0);

// 标题总列数

int colNum = row.getPhysicalNumberOfCells();

Map<Integer, String> map = new HashMap<>();

for (int i = 0; i < colNum; i++) {

map.put(i, row.getCell(i).getStringCellValue());

}

return map;

}

/**

  • 读取excel内容

  • @param inputStream 文件

  • @return Map<行, Map < 下标, Object>>

*/

public static Map<Integer, Map<Integer, String>> readExcelContent(InputStream inputStream, String suffix) {

getWorkbook(inputStream, suffix);

Map<Integer, Map<Integer, String>> content = new HashMap<>();

sheet = wb.getSheetAt(0);

// 得到总行数

int rowNum = sheet.getLastRowNum();

row = sheet.getRow(0);

int colNum = row.getPhysicalNumberOfCells();

// 正文内容应该从第二行开始,第一行为表头的标题

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

row = sheet.getRow(i);

int j = 0;

Map<Integer, String> cellValue = new HashMap<>();

while (j < colNum) {

String obj = getCellFormatValue(row.getCell(j));

cellValue.put(j, obj);

j++;

}

content.put(i, cellValue);

}

return content;

}

private static String getCellFormatValue(Cell cell) {

String cellValue = “”;

if (cell != null) {

// 判断当前Cell的Type

switch (cell.getCellType()) {

// 如果当前Cell的Type为NUMERIC

case Cell.CELL_TYPE_NUMERIC:

case Cell.CELL_TYPE_FORMULA: {

// 判断当前的cell是否为Date

if (DateUtil.isCellDateFormatted(cell)) {

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(“YYYY-MM-dd HH:mm:ss”);

Instant instant = cell.getDateCellValue().toInstant();

ZoneId zoneId = ZoneId.systemDefault();

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);

cellValue = dateTimeFormatter.format(localDateTime);

} else {

// 如果是纯数字

// 取得当前Cell的数值

cellValue = String.valueOf(cell.getNumericCellValue());

}

break;

}

// 如果当前Cell的Type为STRING

case Cell.CELL_TYPE_STRING:

// 取得当前的Cell字符串

cellValue = cell.getRichStringCellValue().getString();

break;

default:

// 默认的Cell值

cellValue = “”;

}

}

return cellValue;

}

private static void getWorkbook(InputStream inputStream, String suffix) {

try {

//2003

if (EXCEL_XLS.equals(suffix)) {

wb = new HSSFWorkbook(inputStream);

//2007/2010

} else if (EXCEL_XLSX.equals(suffix)) {

wb = new XSSFWorkbook(inputStream);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

inputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

感谢你耐心看完了文章…

【Java进阶营】java 读取 excel 表格内容相关推荐

  1. java 批量读取excel表格内容_java 使用POI批量导入excel数据

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...

  2. java 读取 Excel表格内容

    读写Excel,这么重要且普遍的问题,伟大的apache,早就为我们封装好了jar包,供我们使用了.无需我们再造轮子. 第一步:添加jar包依赖 <!--读取 excel 的所需jar包--&g ...

  3. java excel 读取表头_java 读取 excel 表格内容

    一.添加依赖 org.apache.poi poi 3.8 org.apache.poi poi-ooxml 3.8 1 2 3 4 5 6 7 8 9 10 二.工具类 根据文件后缀判断 2003 ...

  4. 读取Excel表格内容转为Sql when then语句

    说明 今天测试预上线库时需要改表,先备份列Excel表格. 后发现有问题,需要还原某些数据,但是不是sql文件也不是sql语句. 这里是吧所有user_id 改为了-1,需要还原. 思路就是按照sql ...

  5. python读取excel表格内容

    基本概念: 盖楼房(安装python) 创建厨房(python虚拟环境) 购买锅碗瓢盆(安装各种库,各种工具) 干活做饭(处理execel表格) 1.安装Python 3 (建好一栋楼): 这个步骤具 ...

  6. java利用poi生成/读取excel表格

    1.引入jar包依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</ ...

  7. java用easyexcel实现读取excell表格内容

    引入依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><gr ...

  8. 读取excel表格内容,并写入到word文档中

    import pandas as pd import docx from docx.shared import RGBColor ''' 该代码段适合,将excel题库转换成word格式的题库,写入的 ...

  9. PHP读取excel表格内容 PHP-ExcelReader

    PHP-ExcelReader http://sourceforge.net/projects/phpexcelreader/files/latest/download

最新文章

  1. 游戏关卡中的类型运用:《LOOP》的无限可能
  2. mysql 传统数据恢复_mysql 数据恢复实例
  3. 【待解答】文件目录可以利用foreach边遍历边删除操作,为什么?
  4. java 复制字段_java - 在构造函数中按字段复制字段 - 我需要一个更简洁的形式 - SO中文参考 - www.soinside.com...
  5. 辩论计算机未来不能取代书本的问题,电脑不能取代书本辩论会材料.doc
  6. 量子计算机 时间倒流,科学家首次利用量子计算机成功逆转时间,时间倒流将变成可能?...
  7. 一盒两用!——破解电信IPTV机顶盒为普通安卓机顶盒
  8. 我收集的CS地图mod制作网址
  9. 关于I2C调试过程中遇到的一些细节性的问题(包括定位Master read-->Slaver send不成功的问题)
  10. 女子学电子计算机哪一项专业好,2018最适合女生的高考热门专业有哪些
  11. iOS LBS地图服务--高德地图使用大全
  12. win7安装JAVA程序闪退怎么办_win7打开软件闪退如何解决
  13. Android相机开发: 触摸对焦,触摸测光,二指手势缩放
  14. c语言在打开文件时会使用到的函数,C语言打开文件操作
  15. 浏览器打开一个网站可能经历哪些步骤
  16. DCMM数据管理能力成熟度评估模型
  17. 学pyqt5之前需要学python吗_【第一节】PyQt5简介
  18. Ruby的大冒险(2D游戏精品辅导课)----李大数解读
  19. 马云亲口确认明年退休:转型当老师,张勇将接任
  20. Qt5 QMediaPlayer 音乐播放器

热门文章

  1. email英文计算机求职信,计算机英文求职信范文
  2. SSL证书教程-Letsencrypt
  3. VL8 使用generate_for语句简化代码
  4. js slice 假分页
  5. 【聆听】汪国真诗集(二)
  6. NET工程师必须掌握的武器
  7. 新品发布全线添员,九号全力奔向“红海”深处?
  8. Yunxion智能定位胸牌为一线记者提供安全保障
  9. Hadoop3.0时代,怎么能不懂EC技术纠删码? 个推为你解读
  10. 【TP5】获取数据库注释信息