使用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 工作表中实际使用的最大行和最大列。

相关推荐
customer0810 分钟前
【开源免费】基于SpringBoot+Vue.JS医疗报销系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
barcke19 分钟前
【深度解析】Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战) —— SpringBoot整合、API安全封装、性能优化全攻略
java·spring boot
zl97989931 分钟前
MybatisPlus-注解
java·spring·maven
thinkMoreAndDoMore39 分钟前
深度学习(3)-TensorFlow入门(常数张量和变量)
开发语言·人工智能·python
杰九41 分钟前
【环境配置】maven,mysql,node.js,vue的快速配置与上手
java·vue.js·spring boot·mysql·node.js·maven
wapicn991 小时前
‌挖数据平台对接DeepSeek推出一键云端部署功能:API接口驱动金融、汽车等行业智能化升级
java·人工智能·python·金融·汽车·php
蓝桉8021 小时前
图片爬取案例
开发语言·数据库·python
逸狼1 小时前
【JavaEE进阶】Spring DI
java·开发语言
yonuyeung1 小时前
代码随想录算法【Day54】
java·数据结构·算法
敲上瘾2 小时前
基础dp——动态规划
java·数据结构·c++·python·算法·线性回归·动态规划