使用vsto获取Excel 工作表中实际使用的最大行和最大列

在使用 C# 和 VSTO (Visual Studio Tools for Office) 处理 Excel 工作表时,usedRange.Address 有时确实不会总是从 A1 开始。然而,通过 usedRange 的 Rows 和 Columns 属性,可以准确地获取工作表中实际使用的最大行和最大列。以下是一个示例代码,演示如何使用这些属性来获取工作表中实际使用的最大行和最大列:

csharp

using Excel = Microsoft.Office.Interop.Excel;

class ExcelUtils

{

public static (int maxRow, int maxColumn) GetMaxRowAndColumn(Excel.Worksheet worksheet)

{

// 获取使用的范围

Excel.Range usedRange = worksheet.UsedRange;

// 获取使用范围的行数和列数

int maxRow = usedRange.Rows.Count;

int maxColumn = usedRange.Columns.Count;

// 返回实际使用的最大行和最大列

return (maxRow, maxColumn);

}

}

在这个示例中:

  1. 使用 worksheet.UsedRange 获取工作表中实际使用的范围。

  2. 通过 usedRange.Rows.Count 获取使用范围的行数。

  3. 通过 usedRange.Columns.Count 获取使用范围的列数。

  4. 返回的元组包含最大行数 (`maxRow`) 和最大列数 (`maxColumn`)。

请注意,UsedRange 的 Rows 和 Columns 属性返回的是相对的行数和列数,意味着它们基于使用范围的起始单元格。如果需要绝对的最大行和最大列,需要考虑 UsedRange 的起始行和起始列。

下面是修改后的代码,考虑了 UsedRange 的起始行和起始列:csharp

cs 复制代码
using Excel = Microsoft.Office.Interop.Excel;

class ExcelUtils
{
    public static (int maxRow, int maxColumn) GetMaxRowAndColumn(Excel.Worksheet worksheet)
    {
        // 获取使用的范围
        Excel.Range usedRange = worksheet.UsedRange;
        
        // 获取使用范围的起始行和起始列
        int startRow = usedRange.Row;
        int startColumn = usedRange.Column;
        
        // 计算实际使用的最大行和最大列
        int maxRow = startRow + usedRange.Rows.Count - 1;
        int maxColumn = startColumn + usedRange.Columns.Count - 1;
        
        // 返回实际使用的最大行和最大列
        return (maxRow, maxColumn);
    }
}

在这个版本中,我们首先获取 UsedRange 的起始行和起始列,然后加上相对的行数和列数,减去 1 得到绝对的最大行和最大列。

这样,可以准确地获取 Excel 工作表中实际使用的最大行和最大列。

相关推荐
艾莉丝努力练剑15 分钟前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
武子康1 小时前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
_殊途2 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
椰椰椰耶3 小时前
【Spring】拦截器详解
java·后端·spring
没有bug.的程序员4 小时前
JAVA面试宝典 - 《MyBatis 进阶:插件开发与二级缓存》
java·面试·mybatis
倔强青铜34 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
u_topian5 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
没有羊的王K5 小时前
SSM框架学习——day1
java·学习
珊瑚里的鱼5 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
又菜又爱coding5 小时前
安装Keycloak并启动服务(macOS)
java·keycloak