繁体   English   中英

C#VSTO-使用String.Empty检查单元格是否为空

[英]C# VSTO - Checking if a cell is empty using String.Empty

我继承了一个基于C#的VSTO项目,该项目从电子表格中读取大量数据,然后进行处理。 我在代码中的很多地方看到以下内容:

(((Excel.Range)sheet.Cells[rowIndex, columnIndex]).Value2 != null 
    && ((Excel.Range)sheet.Cells[rowIndex, columnIndex]).Value2.ToString().Length > 0)

此代码段在复制出可以的值之前检查单元格是否包含值。 但是不会检查String.Empty在一行而不是在两行中执行相同操作,还是在某些情况下即使单元格中有值也会失败吗?

没关系,我知道了。 检查:

(((Excel.Range)sheet.Cells[rowIndex, columnIndex]).Value2.ToString() != String.Empty

如果我正在执行.ToString()的单元.ToString()好为空,则失败。 如果Excel认为该单元格的格式不是字符串,则检查.value2 != String.Empty也会失败。

我建议从中断属性和方法调用链开始,并在单独的代码行中声明它们中的每一个。 因此,您将能够确定问题的原因(如果有)。 另外,您将能够立即释放基础COM对象。 使用完后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject释放Outlook对象。 在Visual Basic中将变量设置为Nothing(在C#中为null)以释放对该对象的引用。 您可以在MSDN中的“ 系统释放对象”文章中了解有关此内容的更多信息。 它与Outlook相关,但是相同的规则可以应用于任何Office应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM