package cn.com.gome.scot.alamein.business.report.common.util;
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.FileNotFoundException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author :Wf
* @date :Created in 2022/5/6 13:35
* @description:解析excel表格
* @modified By:
* @version: 1.0
*/
public class ReadExcelUtils {
/**
* 工作簿对象
*/
private Workbook wb;
/**
* 工作表
*/
private Sheet sheet;
/**
* 工作行
*/
private Row row;
public ReadExcelUtils() {}
/**
* 读取文件,判断格式
*/
public ReadExcelUtils(String filepath) {
// 文件路径为空时自动跳过
if (filepath == null) {
return;
}
// 获取文件后缀名
String ext = filepath.substring(filepath.lastIndexOf("."));
try {
InputStream is = new FileInputStream(filepath);
if (".xls".equals(ext)) {
wb = new HSSFWorkbook(is);
} else if (".xlsx".equals(ext)) {
wb = new XSSFWorkbook(is);
} else {
wb = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解析入口
*/
public Map<Integer, Map<Integer, Object>> ReadExcelcontent(String filepath) {
Map<Integer, Map<Integer, Object>> map = null;
try {
ReadExcelUtils excelReader = new ReadExcelUtils(filepath);
map = excelReader.readExcelContent();
} catch (FileNotFoundException e) {
System.out.println("未找到指定路径的文件!");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
// 读取表头
public String[] readExcelTitle() throws Exception {
if (wb == null) {
throw new Exception("工作簿Workbook对象为空!");
}
// 读取第一张(索引为零)表格
sheet = wb.getSheetAt(0);
// 获取第一张表格的第一行
row = sheet.getRow(0);
// 获取标题总列数
int colNum = row.getPhysicalNumberOfCells();
System.out.println("colNum:" + colNum);
// 以列数作为数组元素个数创建数组
String[] title = new String[colNum];
// 将表头字段装进数组
for (int i = 0; i < colNum; i++) {
title[i] = row.getCell(i).getCellFormula();
}
return title;
}
/**
* 读取 Excel 数据内容,返回包含单元格数据内容的Map对象
*/
public Map<Integer, Map<Integer, Object>> readExcelContent() throws Exception {
if (wb == null) {
throw new Exception("工作簿Workbook对象为空!");
}
Map<Integer, Map<Integer, Object>> content = new HashMap<Integer, Map<Integer, Object>>();
// 获取工作簿的第一张表
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, Object> cellValue = new HashMap<Integer, Object>();
// 读取该行的每列数据,并存入map集合中
while (j < colNum) {
Object obj = getCellFormatValue(row.getCell(j));
cellValue.put(j, obj);
j++;
}
// 将每行数据装入map数组中
content.put(i, cellValue);
}
return content;
}
// 根据Cell类型设置数据
private Object getCellFormatValue(Cell cell) {
Object cellvalue = "";
if (cell != null) {
// 判断当前单元格的类型
switch (cell.getCellTypeEnum()) {
case NUMERIC: {
// 如果当前Cell的Type为NUMERIC
cellvalue = (int) cell.getNumericCellValue();
break;
}
case FORMULA: {
// 判断当前的cell是否为Date
if (DateUtil.isCellDateFormatted(cell)) {
// data格式是带时分秒的:2013-7-10 0:00:00
// cellvalue = cell.getDateCellValue();
// data格式是不带带时分秒的:2013-7-10
Date date = cell.getDateCellValue();
cellvalue = date;
} else {
// 如果是纯数字
// 取得当前Cell的数值
cellvalue = String.valueOf(cell.getNumericCellValue());
}
break;
}
case STRING:
// 如果当前Cell的Type为字符串
// 取得当前的Cell字符串
cellvalue = cell.getRichStringCellValue().getString();
break;
default:// 默认的Cell值
cellvalue = "";
}
} else {
cellvalue = "";
}
return cellvalue;
}
}
相关推荐
四、SVN客户端tortoiseSVN的基本功能介绍
档案浏览器(Repo-browser) 鼠标右键–>tortoiseSVN->版本库浏览器 输入版本库URL地址,进入如菜单界面 版本库浏览器支持SVN及http两种最常用的通信协议 SVN服务器访问方式 方法 模式 访问方法 File:// 直接版本库访问(本地磁盘) http:// 通过配置subversion的WEB服务器的WEBDAV协议 http...
JAVA的@EXCEL导出导入常用注解汇总
JAVA的@EXCEL导出导入常用注解汇总
模拟IC设计笔记:拆解一个经典的时钟占空比校正(DCC)电路模块,从理论到SPICE仿真
本文深入解析了时钟占空比校正(DCC)电路在模拟IC设计中的关键作用,特别是在高速ADC应用中。通过晶体管级拆解,详细介绍了基于电荷泵和积分器的模拟反馈型DCC电路设计,包括占空比检测、误差放大与校正执行单元的实现。文章还提供了SPICE仿真验证方法,确保电路在100MHz时钟下的稳定性和性能。
使用java解析和读取excel表格(EasyExcel的简单使用)
使用java解析和读取excel表格(easyexcel的简单使用)
时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比
本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。
详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢
详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。
JAVA解析Excel工具EasyExcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax
YOLOv8改进,YOLOv8主干网络替换为ShuffleNetV2
ShuffleNet V2的设计原则:1.减少内存访问成本:通过优化数据传输路径,减少内存访问延迟,提高整体运算速度。2.考虑平台特性:针对不同硬件平台的特性进行优化设计,确保在目标平台上的高效运行。3.结构简洁高效:采用简洁而高效的模块设计,降低计算复杂度,同时保持或提升模型的预测准确性。下图,以四种不同计算复杂度水平下的准确性(在ImageNet验证集上的分类),速度和FLOPs的测量结果。(a, c) 为GPU结果,批量大小为8。(b, d) 为ARM结果,批量大小为1。
java通用Excel解析工具类
以下是一个简化的通用Excel解析工具类的示例。
【转录调控网络】代谢组学与其他组学的联合分析经典模式简介
多组学联合分析经典模式转录组学&代谢组学联合分析 转录组学&代谢组学联合分析 转录组是获得生物体内基因表达的重要方法,代谢组是生物体表型的基础和直接体现者。 转录组测序可以得到大量差异表达基因和调控代谢通路,但由于基因与表型之间很难之间关联,导致关键的信号通路难以确定,因此往往达不到预期的研究目的。代谢产物是生物体在内外调控下基因转录的最终结果,是生物体表型的物质基础。 在系统生物学研究时代,生物过程复杂多变,基因调控网络复杂。针对特定的生理、病理等表型进行研究,利用转录组的数据获得大量差异
【Dify(v1.x) 核心源码深入解析】File 模块
文件模型(File Model)定义了文件的核心属性,如文件类型、传输方法、相关标识符等,是整个文件处理流程的数据基础。文件解析器(UploadFileParser)负责解析上传的文件,根据配置决定以何种方式(URL 或 Base64)提供图像数据。工具文件解析器(ToolFileParser)专注于工具文件的管理,提供工具文件管理器的获取接口。签名验证与生成(helpers.py)包含文件 URL 签名的生成与验证逻辑,确保文件访问的安全性。文件管理器(file_manager.py)
Java使用POI解析Excel文件的工具类【通用】
这个工具类针对 .xls 和 .xlsx 的文件都可以进行解析,并且返回List<List<String>> 类型,外面的List是excel中有多少行,里面的是每一行的每个单元格的数据,都转为了String类型,以“,”号分隔。进行遍历循环时,拿到每个String直接以“,”分割就可以获取到里面的值。 1. 先给出pom 依赖: ...
把 SNC 支持的通信链路一次讲透,SAP GUI、RFC、CPIC、SAProuter 到底谁在保护谁
摘要: SNC(Secure Network Communications)是SAP系统中用于保护特定通信链路的安全机制,主要应用于DIAG、RFC、CPIC等SAP协议,而非HTTP等互联网协议(后者由SSL/TLS处理)。其核心在于保护通信端点之间的逻辑链路,需在发起方和接收方同时配置SNC参数,包括SNC名称、保护等级(QoP)等。实际项目中,SNC的配置涉及多个层面,如SAP GUI到ABAP平台的登录链路、外部程序通过RFC/CPIC连接ABAP的认证、ABAP系统间的跨系统通信等。配置不当可能导
java给excel填充数据_使用poi操作Excel的处理工具类自动解析填充数据
直接传入对应的对象直接生成Excel中的数据集合Excel模板-表头所在行为1(所在行从一开始)image.png首先需要导入的Excel表头行中要添加批注,内容为对应JavaBean的属性值。处理导入数据时是根据批注使用反射来填充bean对应的属性值。1.导入依赖包org.apache.poipoi3.17org.apache.poipoi-ooxml-schemas3.17org.apache...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
java读取excel的工具类-POI解析excel
java读取excel的工具类-POI解析excel 分享一个操作excel的工具类,这个工具分3个部分, ExcelUtil.java //工具类 ExcelSheetPO.java //实体对象 ExcelVersion.java //版本枚举 可以把excel数据读取到内存中,转换为List<List<Object>>,也可以根据List<...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
dom4j解析XML配置,Java反射与POI API实现Excel文件导出导入模板工具类(上)
通过dom4j解析XML配置,Java反射与POI API实现Excel文件导出导入模板工具类(上)前言开发工具及配置1. 使用XML配置1.1 配置元表数据xml文件1.2 自定义SaxDemoHandler并继承SAXParserHandler1.3 XML文件解析器测试类插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
java excel 工具类_java读取excel的工具类-POI解析excel
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.text.DecimalFormat;i...
根据POI解析Excel的工具类
一、根据POI解析Excel的工具类 package 包路径; import java.io.InputStream; import java.io.PushbackInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.p
Excel解析easyexcel工具类
Excel解析easyexcel工具类 easyexcel解决POI解析Excel出现OOM <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba&...
java excel解析 poi_简单好用-JAVA使用POI解析Excel
相信使用POI的目前已经非常多了,我这边提供一个非常简单便利又通用的POI解析工具类,代码最后有示例代码。可以按照本文直接使用。import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.te...
我是怎么封装poi工具类的
今天我封装了一下POI工具类 可以用这个工具类解析xls并生成List 可以通过list和标题来生成xls文件 首先是生成xls文件的部分 public static <T> void generateXls(OutputStream os,String title, Map<Integer,String> titleMap, List<T> ...
开发Poi 多线程解析工具类心得
一、Poi工具类开发心得 1、这几天在做一个excel上传的功能,原有一个jxl,虽然轻便但是只满足了基本功能,只兼容03版本等等,然后这个功能需要对数据进行解析,需要可以配置的那种。大致需求明白了,先实现,然后在想办法优化。 先引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artif
使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法
使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法 PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInputStream; import java.io.File...
excelutil java_JAVA实现Excel的读取--ExcelUtil工具类
dream.jpg首先声明一点,这是自己的写法,并不是标准写法,标准写法可以google一下。主要运用的apache的POI包中的类。1.首先创建一个ExcelUtil的工具类,并且把自己需要的方法写出来。其中我使用的maven的方式,引入了这两个依赖:org.apache.poipoi3.13org.apache.poipoi-ooxml3.13我这里暂时就需要两个方法:第一个方法:读取Exce...
1011



被折叠的 条评论
为什么被折叠?



