在VSTO C#中获取Excel范围内最后一个非空单元格,可以通过以下几种方法实现

1、使用End方法‌(类似Excel快捷键Ctrl+方向键):

Excel.Range lastCell = worksheet.Range["A1"].End(Excel.XlDirection.xlDown);

2、遍历单元格方法‌(适用于不连续数据):

Excel.Range lastCell = null; foreach (Excel.Range cell in worksheet.Range["A1:A100"]) { if (!string.IsNullOrEmpty(cell.Text.ToString())) { lastCell = cell; } }

‌3、使用SpecialCells方法‌(性能较好):

Excel.Range lastCell = worksheet.Range["A:A"].SpecialCells( Excel.XlCellType.xlCellTypeConstants, Excel.XlSpecialCellsValue.xlTextValues).Areas.Last();

4、Find方法‌(最可靠的方式):

Excel.Range lastCell = worksheet.Range["A:A"].Find( "*", Type.Missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlPrevious, false, Type.Missing, Type.Missing);

5、数组公式法‌(通过C#执行Excel公式):

string formula = "=LOOKUP(2,1/(A:A<>\"\"),A:A)"; Excel.Range lastCell = worksheet.Evaluate(formula) as Excel.Range;

注意事项:

  • 方法4(Find方法)是最可靠的解决方案68
  • 对于整列范围建议使用"A:A"格式5
  • 处理前应检查Worksheet是否为空5
  • 性能考虑:大数据量时Find方法最优
相关推荐
雨中散步撒哈拉几秒前
3、做中学 | 二年级上期 Golang数据类型和常量/变量声明使用
开发语言·后端·golang
YuTaoShao5 分钟前
Java八股文——Redis「淘汰删除篇」
java·开发语言·redis
意疏8 分钟前
全面掌握 C++ 基础:关键特性与进化
开发语言·c++
love530love41 分钟前
【笔记】解决部署国产AI Agent 开源项目 MiniMax-M1时 Hugging Face 模型下载缓存占满 C 盘问题:更改缓存位置全流程
开发语言·人工智能·windows·笔记·python·缓存·uv
狐凄42 分钟前
Python实例题:基于 Apache Kafka 的实时数据流处理平台
开发语言·python
好奇的菜鸟2 小时前
Rust 中的宏与函数
开发语言·后端·rust
好奇的菜鸟2 小时前
Rust 项目文档生成之旅:cargo doc
开发语言·后端·rust
范纹杉想快点毕业2 小时前
Qt实现文本编辑器光标高亮技术
java·开发语言·c++·算法·系统架构
LBJ辉2 小时前
9. CSS 引入方式
开发语言·前端·css
C语言小火车3 小时前
C语言酒店管理系统:完整源码与深度解析
c语言·开发语言