简体   繁体   English

从范围中获取Excel中的单元格值

[英]Get Cell Value in Excel from Range

How can I extract the value of a cell from a range object? 如何从范围对象中提取单元格的值? It seems like it should be simple. 看起来应该很简单。 This Stackoverflow question and answers did not really help. 这个Stackoverflow问题和答案并没有真正的帮助。 Here is what I want to do but it fails every time with an exception on row.columns(0,0). 这是我想做的,但是每次都失败,但row.columns(0,0)上出现异常。

Dim rdr = oFindings.Range
For Each row As Excel.Range In rdr.Rows
   Dim Account = row.Columns(0,0).value2.tostring
   ' Do other stuff
Next

To make it work I had to implement this code: 为了使其工作,我必须实现以下代码:

For Each row As Excel.Range In rdr.Rows
    ndx = 0
    For Each cell As Excel.Range In row.Columns
        If ndx = 0 Then Account = NS(cell.Value2)
        ' Do other stuff
        ndx += 1
    next
Next

That seems like such a kludge. 这似乎太过分了。 What is the secret? 有什么秘诀?

Most of the problems have already been alluded to, but here is the answer with code. 已经提到了大多数问题,但这是代码的答案。

    Dim rdr As Excel.Range = oFindings.Range
    For Each row As Excel.Range In rdr.Rows

        'explicitly get the first cell as a range 
        Dim aCell As Excel.Range = row.Cells(1, 1)

        'explicity convert the value to String but don't use .String
        Dim Account as string = CStr(aCell.Value2)

        If Not String.IsNullOrEmpty(Account) Then

            ' Do other stuff

        End If

    Next

Using aCell.Value2.toString will fail if the cell is empty because Value2 will be Nothing . 如果单元格为空, Value2使用aCell.Value2.toString将失败,因为Value2将为Nothing Instead use CStr(aCell.Value2) which won't fail. 而是使用不会失败的CStr(aCell.Value2) But then you need to test if the string is null or empty before using the value. 但是随后您需要在使用值之前测试字符串是否为null或为空。

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

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