java 利用POI 读取Execel数据的真实行数

如何利用Apache POI创建Excel 开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中 Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能 Apache POI常用的类 HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案 阅读详情


     java 利用poi 读execel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行没有任何数据,通过Row row = sheet.getRow(i) 返回的row值为null),计算出来的值也不正确。

     本人自己写了一个方法来对execel表进行过滤,将那些没有意义的行删掉,之后再调用sheet.getLastRowNum() 得到的值就是正确的了。

    说明一下,本程序是结合自己项目的需求编写的,对于那些空白行有意义的execel文件来说,本文不存在参考价值。

package test;

import java.io.FileInputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
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;

public class test2{
	public static void main(String[] args) {
		Workbook wb = null;
		try {
			wb = new HSSFWorkbook(new FileInputStream("E:\\Workspaces\\testdata\\仓库数据.xls"));
		} catch (Exception e) {
		      //
		}
		Sheet sheet = wb.getSheetAt(0);
		CellReference cellReference = new CellReference("A4");
		boolean flag = false;
		System.out.println("总行数:"+(sheet.getLastRowNum()+1));
		for (int i = cellReference.getRow(); i <= sheet.getLastRowNum();) {
			Row r = sheet.getRow(i);
			if(r == null){
				// 如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
				sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
				continue;
			}
			flag = false;
			for(Cell c:r){
				if(c.getCellType() != Cell.CELL_TYPE_BLANK){
					flag = true;
					break;
				}
			}
			if(flag){
				i++;
				continue;
			}
			else{//如果是空白行(即可能没有数据,但是有一定格式)
				if(i == sheet.getLastRowNum())//如果到了最后一行,直接将那一行remove掉
					sheet.removeRow(r);
				else//如果还没到最后一行,则数据往上移一行
				    sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
			}
		}
		System.out.println("总行数:"+(sheet.getLastRowNum()+1));
	}
	
}



POI导入Excel用String读取数字类型精度丢失问题解决 业务点: 批量导入订单,订单中包含价格,为4.5,6.7这种格式的。 问题: poi中需要按照字符串形式拿出来数据,映射成具体的实体类。 在cell.setCellType(Cell.CELL_TYPE_STRING) 即设置按照字符串读取时发生精度异常 例:8.2取出后就是8.19999993,而7.2则正常 因为是接盘的别人的项目,先贴出原代码: private ... 阅读详情

相关推荐

掌握Apache POI:在Java中导出Excel和Word

Apache POI是一个广泛使用的Java库,用于处理Microsoft Office文档。它的名字来自于“Poor Obfuscation Implementation”,意为“穷人的混淆实现”,是对早期版本的自嘲。如今,POI是处理Word文档(.doc和.docx)、Excel电子表格(.xls和.xlsx)和其他Microsoft Office格式文件的强大工具。在深入代码之前,理解Word文档的基本构成是十分重要的。

weixin_42588555的博客 1187

poi中getPhysicalNumberOfRows()和getLastRowNum()区别

在此不对poi做介绍。 getPhysicalNumberOfRows()获取的是物理行数,也就是不包括那些kong

放佚风流 3万+

Apache POI生成Excel表格实战指南

本文还有配套的精品资源,点击获取 简介:Apache POI是处理Microsoft Office文件格式的Java库,尤其用于Excel文件操作。本教程基于Apache POI 3.5版本,介绍如何在Java项目中实现Excel文件的创建,包括单元格样式设置、数据写入、以及文件读取和修改。我们将通过实例代码演示如何生成包含基本数据的Excel表格,并提供单元格样式的定制和...

weixin_31139479的博客 1171

sheet.getLastRowNum() 不准确的问题

原因:存在样式的空行。会被统计进来。所以主要的问题是要判断是否是空行。 断空行的方法 public static boolean isRowEmpty(Row row){ for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) { Cell cell = row.getCell(i); if (cell != null &&

zyc050707的博客 1万+

数据采集卡架构与PCIe优化设计详解

数据采集卡(DAQ)作为工业自动化中的关键设备,其核心在于模数转换(ADC)和数字信号处理技术。现代系统普遍采用PCIe总线架构,通过DMA传输和时钟同步技术实现高速数据采集。在信号调理环节,可编程增益放大器(PGA)和抗混叠滤波器确保信号质量;而Σ-Δ型ADC则提供高达24位的分辨率。实际应用中,从电力监测到机床振动分析,数据采集卡需要结合具体场景优化配置。通过合理的PCB布局和EMI防护设计,可以有效提升系统在工业环境中的可靠性。

weixin_29168675的博客 912

使用MeshLab高效对齐3D模型:从OBJ导入到坐标修正全流程

本文详细介绍了使用MeshLab高效对齐3D模型的全流程,涵盖从OBJ导入、坐标修正到最终导出的核心步骤。通过将模型中心归位至坐标原点,并利用主轴对齐功能快速摆正模型,为后续的3D打印、体素化等处理奠定精确的几何基础。

weixin_29313423的博客 94

Java如何读取Excel行列(getLastRowNum、getLastRowNum)

Excel 数据如下 E9 ([8:4]) =1; E12([11:4]) =4 H12([11:7]) = 43 System.out.println("getFirstRowNum: "+ sheet.getFirstRowNum()); System.out.println("getLastRowNum: "+ sheet.getLastRowNum()); in

心之所向,一往而深 2万+

ARM CoreSight架构

CoreSight架构是现代复杂SoC的“飞行数据记录仪”(黑匣子)和“精密诊断仪”的结合体。它彻底改变了嵌入式系统的调试方式,从传统的“盲人摸象”变成了拥有“上帝视角”,是ARM生态系统能够支撑起从微控制器到高性能服务器芯片如此广泛产品线的重要基石技术之一。

guigenyi的专栏 1423

POI通过getLaseRowNum()获取行数不准确问题

java 利用poi 读execel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行没有任何数据,通过Row row = sheet.getRow(i) 返回的row值为null),计...

weixin_44393167的博客 3209

Oracle19c SYSAUX表空间爆满?手把手教你清理SM/ADVISOR和AUDSYS占用(附完整SQL)

本文详细解析了Oracle19c中SYSAUX表空间爆满的常见原因及解决方案,重点针对SM/ADVISOR和AUDSYS组件的空间占用问题提供了完整的SQL清理脚本。通过诊断查询、空间清理和预防性维护策略,帮助DBA有效管理SYSAUX表空间,确保数据库稳定运行。

weixin_28338005的博客 242

[企业AI落地] RAG 知识库系统在多租户环境下的细粒度权限隔离设计

多租户 RAG 系统真正的风险不只是搜不到,而是把不该看到的内容查出来、说出来、写回去。本文结合多客户售后知识助手场景,用元数据结构、向量检索过滤、回答策略和审计回写示例拆解租户、资源、检索、生成、审计五层权限边界。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 221

Java-POI读取excel(null的cell也读取输出)

/** * * 读写excel * */ public class RWExcel { private String filePath; private int sheetNum = 0; /** * 构造方法 * */ public RWExcel(String filePath,int sheetNum){ this.filePath = f...

hujyhfwfh2的博客 8756

基于 Simulink 的 PV 光伏阵列功率发电系统仿真 Matlab

其中直流侧电压需要与光伏电池组件匹配,交流侧电压则需要与配电系统匹配,开关频率一般在几千赫兹左右,需要保证在一定范围内。根据实际需求,我们还可以通过增加负载,以及调节光照强度等方式,模拟不同的情况下系统的响应和性能表现。经过设置参数和各部分之间的传递和控制后,我们可以开始进行模型仿真。在仿真前,我们需要确定仿真时间和步长,并对整体模型进行编译。在建立完毕整体模型框架后,我们需要为每个组件设置参数,并进行传递和控制。首先,我们需要建立一个整体的模型框架,包括各个组件之间的关系和控制器的作用。

学习使你进步。 1129

java获取excel行数_java 利用POI 读取Execel数据的真实行数

package test;import java.io.FileInputStream;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.CellReference;import org.apache.poi.ss.usermodel.Cell;import org.apache.po...

weixin_35906864的博客 1398

下载igv报错:Error loading genome hg38raw.githubusercontent.com...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 993

TPAMI 2024 | 重新思考多焦点图像融合中客观评价指标的有效性:一种基于统计的方法

作为一种延长光学镜头景深(DOF)的有效技术,多焦点图像融合最近成为图像处理社区的一个活跃话题。然而,该领域仍然存在一个未解决的主要问题,即缺乏选择客观评价指标的通用标准。因此,不同研究中使用的指标往往差异显著,导致难以实现公正的评估。为了解决这个问题,本文提出了一种基于统计的方法来验证多焦点图像融合中客观指标的有效性。核心思想是采用统计相关性度量来评估某个融合指标与一些流行的全参考图像质量评估模型之间的性能一致性。

小白学视觉 329

Java用Intellij Idea读取Execel文件,计算后写入新的文件

Java用Intellij Idea读取Execel文件,计算后写入新的文件 1、新建Maven工程成功后,pom.xml文件中配置poi(读写excel的框架) <dependencies> ... <!--poi--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi

SmallWalnutBG的博客 4253

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java之poi操作execel表

首先引入pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> ...

大橙子_Change的博客 252

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

execel java

转自:http://dev.yesky.com/36/2478036.shtml发现天极的教程还不错。 引言   报表输出是开发数据库应用程序经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑。Excel是Windos平台上优秀的电子表格软件,如果把报表输出成Excel格式,用户就可以利用Excel的强大功能对报表进行再编辑,以满足自己的特殊需要。但是,长期以来,Java

regon的专栏 1528

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java 读取execel文件时出现 Unable to read entire header; ……的解决方法

java 读取execel文件时出现 Unable to read entire header; ……     我在做java操作excel项目时(用的是POI),遇到一个问题: Unable to read entire header; 0 bytes read; expected 512 bytes.               上网查了很多资料,都是关于将inputstrem流用

4059

Execel文档批量替换标签实现方案

摘要:针对批量导出Excel文件时标题错误的问题,提出两种解决方案:重新导出(耗时10小时)或使用Java代码替换标签(仅需10分钟)。采用Apache POI库实现,通过读取模板样式、删除旧标签行并插入新模板行的方式快速修正。代码支持处理合并单元格和样式复制,对于仅含标签的空文件会提示手动处理。经测试成功处理上千个文件,将总耗时从10小时大幅缩短至10分钟,显著提升工作效率。

Ostkakah的博客 479

java 利用POI读取execel文件时出现 Unable to read entire header; 0 bytes read; expected 512 bytes 的解决方法

公司原来在导入execel文件时,是一个一个导入的;也即,每一个导入文件都要有对应的java代码实现,所以在读取execel文件的时候没出现什么问题,这两天,准备把以前的做法废掉,统一封装一下,以达到只要根据配置文件就能解析所有的execel文件并将结果返回。      在实现过程中,刚开始时用demo写的,所以execel文件是全路径的(类似于c://test/XXX.xls),解析的时候

jackshen310的专栏 3万+
下一篇: java 利用POI读取execel文件时出现 Unable to read entire header; 0 bytes read; expected 512 bytes 的解决方法
jackshen310
博客等级 码龄15年 1粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值