C#读取excel的有效行数或者最大有效列数

2023-05-16

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using NPOI.SS.UserModel;

using NPOI.HSSF.UserModel;

using System.IO;


namespace www.xinduofen.cn

{

    class NpoiOperateExcel

    {

        

/// <summary>

        /// 读取某一个excel文件的某一个工作表的有效行数或者最大有效列数

        /// </summary>

        /// <param name="save_address">代表excel表格保存的地址,包括"文件名.xls"</param>

        /// <param name="sheet_number">代表将要读取的sheet表的索引位置</param>

        /// <param name="readFlag">为true代表读取的为:有效行数,为:false代表读取的为:最大有效列数</param>

        /// <returns>返回值 “不为-1” 代表读取成功,否则为读取失败</returns>

        public static int rowORcolAllCount(string save_address, int sheet_number, Boolean readFlag)//读取excel表格相应工作表的所有数据

        {

            int rowORcolCnt = -1;//初始化为-1

            FileStream readfile = null;


            try

            {

                //如果传入参数合法

                if (!string.IsNullOrEmpty(save_address) && sheet_number > 0)

                {

                    readfile = new FileStream(save_address, FileMode.Open, FileAccess.Read);

                    HSSFWorkbook hssfworkbook = new HSSFWorkbook(readfile);

                    ISheet sheet = hssfworkbook.GetSheetAt(sheet_number - 1);

                    if (sheet != null)

                    {

                        if (readFlag)//如果需要读取‘有效行数’

                        {

                            rowORcolCnt = sheet.LastRowNum+1;//有效行数(NPOI读取的有效行数不包括列头,所以需要加1)

                        }

                        else

                        { //如果需要读取‘最大有效列数’

                            for (int rowCnt = sheet.FirstRowNum; rowCnt <= sheet.LastRowNum; rowCnt++)//迭代所有行

                            {

                                IRow row = sheet.GetRow(rowCnt);

                                if (row != null && row.LastCellNum > rowORcolCnt)

                                {

                                    rowORcolCnt = row.LastCellNum;

                                }

                            } 

                        }

                    }

                }

            }

            catch (Exception)

            {

                Console.WriteLine("NpoiOperateExcel.rowOrColumnAllCount方法产生了异常!");

            }

            finally

            {

                if (readfile != null) { readfile.Close(); }

            }



            return rowORcolCnt;

        }

    }

}

内容所有权属于:北京继豪电子(专业研究体质测试仪器)

转载于:https://blog.51cto.com/xinduofen/1950009

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#读取excel的有效行数或者最大有效列数 的相关文章

  • 将所有工作簿工作表复制到新工作簿 VBA

    我正在使用此代码将工作簿中的每张工作表复制到新工作簿中 它工作正常 但它颠倒了工作表的顺序 是否有办法阻止它这样做 Sub copy copies all the sheets of the open workbook to a new o
  • 如何计算 COUNTIF 但仅计算唯一值?

    我有一个数据集 其中有一列包含参考文献 参考文献始终遵循相同的格式 1 XXX YYY XXX 始终为 3 个字母 YYY 始终是一个数字 每个XXX都会有YYY 001 如果同一个XXX有多个类型 就会有YYY 002 以此类推 我想知道
  • 通过 PHP 检测 excel .xlsx 文件 mimetype

    我无法通过 PHP 检测 xlsx Excel 文件的 mimetype 因为它是 zip 存档 文件实用程序 file file xlsx file xlsx Zip archive data at least v2 0 to extra
  • 如何使用 Excel.UriLink.16 更改 Excel URL 的文件关联?

    我正在尝试更改文件关联 以便在另一个浏览器中打开 Excel 单元格中的 URL 根据使用 CMD ftype命令与Excel UriLink 16 我应该能够使用以下命令从 powershell 通过 cmd 执行此操作 To chang
  • MS Access 中的舍入

    VBA Access 中舍入的最佳方法是什么 我目前的方法是利用Excel方法 Excel WorksheetFunction Round 但我正在寻找一种不依赖Excel的方法 请注意 VBA Round 函数使用 Banker 舍入 将
  • 将包含换行符的文本文件导入到 Excel 中

    我有一个纯文本文件 如下所示 some text containing line breaks 我正在尝试说话excel 2004 Mac v 11 5 正确打开此文件 我希望只看到一个单元格 A1 包含上述所有内容 不带引号 但可惜的是
  • 如何禁用 openpyxl 表中的自动过滤器?

    当我使用 openpyxl 创建表时 它默认在所有列上添加自动过滤器 使用中提供的示例可以重现该行为文档 https openpyxl readthedocs io en stable worksheet tables html 我想显示没
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • 无法将 Excel 值的类型“double”转换为“string”

    我正在加载 Excel 文件 如网络上许多地方所示 OpenFileDialog chooseFile new OpenFileDialog chooseFile Filter Excel files xls xlsl xls xlsx i
  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • 如何使用VBA根据条件删除Excel中的行?

    我目前正在构建一个宏来格式化数据表并删除不适用的数据行 具体来说 我希望删除列 L ABC 的行以及删除列 AA DEF 的行 到目前为止 我已经实现了第一个目标 但还没有实现第二个目标 现有代码是 Dim LastRow As Integ
  • 在组合框中显示可见工作表

    您好 我有以下代码来在组合框中显示工作表 创建工作表后 工作表会自动添加到列表中 我不希望隐藏的工作表在保管箱中可见 我怎么做 Option Explicit Private Sub ComboBox1 Change If ComboBox
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小
  • 如果总和为 0,则查找并删除带标题的最后一列

    我想创建一个宏 查找带有标题的最后一列 并仅当该列的总和等于零时才将其删除 到目前为止 这是我尝试过的 Dim LastCol As Long Dim i As Long With ThisWorkbook Sheets Sheet1 Fo

随机推荐

  • java 图形界面---字体的设置

    Java绘图中 xff0c 显示文字的方法主要有三种 xff1a xff08 1 xff09 drawString String str int x int y xff1a 在指定的位置显示字符串 xff08 2 xff09 drawCha
  • "不能为虚拟电脑 ubuntu 打开一个新任务"的解决办法

    使用virtualbox报错 xff1a 不能为虚拟电脑 ubuntu3 打开一个新任务 The virtual machine 39 ubuntu3 39 has terminated unexpectedly during startu
  • 获取当前程序所在路径/目录

    char path buffer MAX PATH char drive MAX DRIVE char dir MAX DIR char fname MAX FNAME char ext MAX EXT GetModuleFileName
  • 理解Windows内核模式与用户模式

    内核层次架构 windows程序运行分为内核模式和用户模式 xff0c 内核模式可以访问所有的内存地址空间 xff0c 并且可以访问所有的CPU指令 一般程序运行在用户模式 xff0c 通过系统调用切换到内核模式执行系统功能 xff0c W
  • 自定义加数字

    每一位同时加 lt html gt lt head gt lt meta name 61 34 generator 34 content 61 34 HTML Tidy for HTML5 experimental for Windows
  • 使用C++ REST SDK开发简单的Web(HTTP)服务

    C 43 43 REST SDK是微软开源的一套客户端 服务器通信库 xff0c 提供了URI构造 解析 xff0c JSON编解码 xff0c HTTP客户端 HTTP服务端 xff0c WebSocket客户端 xff0c 流式传输 x
  • 头文件 INTRINS.H 的用法

    KEIL中头文件INTRINS H的作用 在C51单片机编程中 xff0c 头文件INTRINS H的函数使用起来 xff0c 就会让你像在用汇编时一样简便 内部函数 描述 crol 字符循环左移 cror 字符循环右移 irol 整数循环
  • 数模转换模块PCF8591

    介绍 有些传感器的输出值有模拟值 xff0c 这样的数值是不可读的 xff0c 如果想要把这些模拟值变为可读的 xff0c 就必须要用到数模转化模块 PCF8591是一个单片集成 单独供电 低功耗 8 bit CMOS数据获取器件 PCF8
  • 香橙派Orangepi Zero2控制舵机转动

    通过香橙派输出PWM波控制舵机 xff0c 首先需要了解Linux的定时器功能 xff0c 通过配置定时器产生PWM波 xff1a 218条消息 Linux时间函数与定时器简介 xff2c xff2a xff38 的博客 CSDN博客 1
  • UDP Linux编程(客户端&服务器端)

    服务器端 服务器不用绑定地址 xff0c 他只需要进行绑定相应的监听端口即可 include lt sys types h gt include lt sys socket h gt include lt pthread h gt incl
  • Visual Studio 与 Visual C++ 关系

    Visual Studio netVisual C 43 43 netVisual C 43 43 MSC VER备注Visual Studio net 2002Visual C 43 43 net 2002Visual C 43 43 7
  • C语言之基本算法08—去掉最高分去掉最低分求平均值

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • MySQL -- Fast Index Creation

    1 fast index creation简介 MySQL5 5之后 xff0c 对innodb表创建或删除辅助索引的效率提升了很多 xff0c 即增加了新的功能fast index creation 因为MySQL5 5之后 xff0c
  • .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试

    所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder xff0c 该组件引用了一个第三方实现的System Drawing类库 xff0c 和支付宝官网类似 当面付SDK为Alipay AopSdk F2FP
  • 让自己的网站实现在线编辑office文档

    我们可以通过Office Web Apps xff08 OWA xff09 来实现在线编辑word xff0c excel xff0c power point xff0c one note xff0c 并集成到自己的网站里去 1 准备工作
  • 设置openjdk docker容器的时区

    openjdk 8 jre镜像是基于debian系统的 默认时区是UTC 下面两个方法都可以把时区改为Asia Shanghai 启动java应用时设置jvm参数 jvm参数 Duser timezone 61 Asia ShangHai
  • MYSQL的longtext字段能放多少数据?

    生产上遇到问题 xff0c 同事说MYSQL里的字段放不下5m大小的数据 于是 xff0c 将django model里textfield里的max length变长了 依然无效 xff0c 于是 xff0c 更改mysql的设置 xff1
  • 排查CentOS 7中chronyc sources 时间无法同步问题

    chronyc sources结果显示 controller 这表示时间同步服务器不可到达 经以下步骤成功排除错误 xff0c 供参考 在控制节点 1 检查controller节点服务器的时间同步服务是否开启成功 systemctl sta
  • SIM900A

    介绍 本文介绍SIM900A模块 xff0c 并给出一个使用教程 玉照 caption id 61 34 attachment 2625 34 align 61 34 alignnone 34 width 61 34 350 34 SIM9
  • C#读取excel的有效行数或者最大有效列数

    using System using System Collections Generic using System Linq using System Text using NPOI SS UserModel using NPOI HSS