【问题标题】:Spreadsheetgear .find methodSpreadsheetgear .find 方法
【发布时间】:2012-11-15 09:41:08
【问题描述】:

工具:asp.net VB、SpreadsheetGear 2010

我需要从外部用户那里读取 Excel 文件,并且我不控制格式。有3个数据部分。我可以在标题中阅读。挑战在于正文细节可以包含无限数量的行,有时这些行是空白的。我可以确定页脚行,因为有一段文字是独一无二的。因此我可以执行以下操作:

Dim dFoot As SpreadsheetGear.IRange = worksheet.Cells("20:21").Rows

Dim rngDet As SpreadsheetGear.IRange  

rngDet = dFoot.Find(what:="UNIQUE TEXT HERE", 
                    lookIn:=SpreadsheetGear.FindLookIn.Values, 
                    lookAt:=SpreadsheetGear.LookAt.Whole, 
                    searchOrder:=SpreadsheetGear.SearchOrder.ByColumns, 
                    searchDirection:=SpreadsheetGear.SearchDirection.Next, 
                    matchCase:=False, 
                    after:=dFoot)

不幸的是,我现在被困在这里。我无法确定单元格的位置(即 V79)或如何将 7 列上移和 3 列下移以获得第一个插入值。我尝试过使用偏移量和不同的方法来阅读rngDet,但没有运气。我也尝试过rngDet.Activate() 读取活动单元格,但它的工作方式与 Microsoft 不同。

感谢您提供的任何帮助。

【问题讨论】:

  • 我不太明白你到底想做什么。例如,您要查找与您的 3 个数据部分相关的哪个单元格?此时您是否尝试插入其他单元格或行?上移 7 列,下移 3 列有什么意义?随意详细说明您的要求。

标签: asp.net excel-2007 spreadsheetgear


【解决方案1】:

蒂姆,感谢您的提问。第一次问所以可能不是很清楚。我今天确实为自己找到了答案。我有一组需要上传的单元格。问题是他们将根据在上面部分中输入的行数上下移动页面。我意识到我确实知道它将在哪个列中,所以我执行了以下操作:

Dim x As Integer
    Dim xFooter As Integer
    Dim columnnumber As Integer = 21 'Column V

    txtTest.Text = worksheet.Cells.RowCount
    For x = 500 To 1 Step -1

        If worksheet.Cells(x, columnnumber).Value = "TOTAL PRODUCT COST CALCULATION" Then
            txtTest.Text = x
            xFooter = x
            Exit For
        End If
    Next x

我现在可以使用我的 x 值作为我的一组单元格的左角。我知道这些值从这里开始超过 7 列,向下 20 行,这给了我我的值。

我想分享一下,以防万一有人遇到同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2020-12-18
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多