首页 > 其他分享 >getPhysicalNumberOfCells读取excel表格数据,清除空行后代码仍然识别空行,(已解决)

getPhysicalNumberOfCells读取excel表格数据,清除空行后代码仍然识别空行,(已解决)

时间:2023-05-11 20:35:00浏览次数:48  
标签:空行 读取 表格 代码 excel getPhysicalNumberOfCells 行数

 

表格只有几十行数据,但是getPhysicalNumberOfCells读取时还有800多行,

原因在于之前把表格数据拓展到了800行,清除数据时,表格的样式为更改,可以尝试使用格式刷复制空行格式刷到错误空行上

但是我试了没有用,反而还多了几十行,然后尝试用代码判断空行,只有格式没有数据的空行全部删除,才终于得到了原本的行数

可以使用以下代码删除空行,得到excel原本的行数

public static void checkRow(File file){
        try {
            InputStream inputStream = new FileInputStream(file);
            Workbook workbook = WorkbookFactory.create(inputStream);
            Sheet sheet = workbook.getSheetAt(0);
            //获取sheet的行数
            int rows = sheet.getLastRowNum() + 1;
            System.out.println("使用poi自带的getLastRowNum方法获取的行数为:" + rows);
            CellReference cellReference = new CellReference("A4");
            boolean flag = false;
            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() == STRING ||
                            c.getCellType() == NUMERIC ||
                            c.getCellType() == BOOLEAN ||
                            c.getCellType() == FORMULA ||
                            c.getCellType() == ERROR) {
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    i++;
                    continue;
                } else {//如果是空白行(即可能没有数据,但是有一定格式)
                    if (i == sheet.getLastRowNum()) {//如果到了最后一行,直接将那一行remove掉
                        sheet.removeRow(r);
                    } else {//如果还没到最后一行,则数据往上移一行
                        sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
                    }
                    //写入excel
                    FileOutputStream os = new FileOutputStream(file);
                    workbook.write(os);
                }
            }
            System.out.println("校验空值后得到的行数为:" + (sheet.getLastRowNum() + 1));
        } catch (Exception e) {
            System.out.println("获取异常信息:"+e.getMessage());
        }
    }




以上代码参考于java 利用POI 读取Excel数据的真实有效行数

 

标签:空行,读取,表格,代码,excel,getPhysicalNumberOfCells,行数
From: https://www.cnblogs.com/neo-y/p/17392162.html

相关文章

  • Delphi中使用ADO连接Excel
    第一部分: 1.设置ADOConnection的ConnectionString属性的OLEDB的提供者要选择MicrosoftJet4.0OLEDBProvider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件),按"下一步"按钮2.选择数据库名称。注意:Excel的扩展名是*.xls,而默认文件类型是MicrosoftAcce......
  • EasyExcel-导入文件
    controller类@PostMapping("/importData")publicResultimportData(MultipartFilefile){dictService.importDictData(file);returnResult.ok();}servicepackagecom.atguigu.yygh.cmn.service;importcom.atguigu.yygh.model......
  • Excel导入数据时出错
    一:c#后台使用"Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+filePath+";"+";ExtendedProperties=\"Excel8.0;HDR=YES;IMEX=1\""导入数据时出现:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。导入时的文件后缀为".xls&qu......
  • Android string.xml与Excel的互相转换
    Notice使用以下脚本需要安装openpyxl和lxml两个库。string.xml转成Excel文件"""将Androidstring.xml文件中的文本转换成Excel表格并保存到文件。使用方法:pythonandroid_string_to_excel.py-fstrings.xml[-ooutfile_name]-f:要处理的Androidstring.xml文件......
  • Excel 导出
    1.pom相关<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.1.0</version></dependency>......
  • 20230509001 - DataTable 导出成Excel
               DataTabledt_e=DataSet0.Tables[0];           SaveFileDialogsaveFileDialog=newSaveFileDialog();           saveFileDialog.Filter="Execlfiles(*.xls)|*.xls";           saveFileDialog.FilterIndex......
  • #PowerBi 一分钟学会,在excel中,调用powerbi数据模型(Analyze in Excel插件)
    在工作中,我们常常使用excel来进行临时的数据处理服务,如果我们在powerbi中,已经有了完整的数据模型。那么我们都可以通过直接调用powerbi数据模型,来进行快速的数据分析,完成任务。今天我们就介绍一下,如何在excel中调用powerbi数据模型。第一步:下载插件输入以下网址,进入sqlbi的官......
  • bartender导入EXCEL批量打印
    第一次使用BarTender软件,感觉很NICE,记录一下;1、安装最好选择全部安装,我第一次是最小安装,结果连EXCEL文件时提示要下载“AccessDatabaseEngine"安装后才行,估计与最小安装有关系。2、自定义要打印的纸张大小;3、在EXCEL文件中加入要打印的数据,我只测试了一列,(要有列标题)4、启......
  • jsp 导出excel
    1.情景展示如上图所示,该页面上的表格统计内容,需要增加一个导出功能,即:将表格内容导出Excel当中。如何实现?2.具体分析2.1传统解决方案针对excel导出,有两种解决方式。思路一:前端导出如果仅仅是导出当前页数据的话,我们完全可以不与后台进行交互。因为现有数据已经拿到了,只......
  • TEXT_CONVERT_XLS_TO_SAP-上传EXCEL文件
    *&---------------------------------------------------------------------**&ReportZ018*&*&---------------------------------------------------------------------**&*&上传Excel文件*&--------------------------------------------......