Диапазон.Найти вернуть значение null и метод подсчета не распознан

#c# #excel-interop

Вопрос:

Я уже проверил связанные с этим вопросы и не получил никакой дополнительной информации. Я также новичок в C#. Не могли бы вы, пожалуйста, помочь мне — я ожидал, что это будет простая операция поиска значения на одном листе на другом, а затем извлечения строки этого значения/строки.

У меня есть следующий код, который всегда возвращает «null» для Rowx. И отдельно отметим, что количество/длина не распознаются сборками, которые у меня есть. Система.Ядро не может быть добавлено, говорят, что оно уже является частью сборки. Я использую vs 2019, .Net 4.5.

     [STAThread]
    public static void Main(string[] args)
    {  
        Excel.Application excel = new Excel.Application();  // Opening and labelling source workbook
        Excel.Workbook Copt = excel.Workbooks.Open(Reportpath);
        Worksheet x = Copt.Worksheets["PD"];  //labeling worksheets
        Worksheet y = Copt.Worksheets["Data"];
        
        // recreating and naming the source two sheets which we will manipulate later
        var index = x.Index;
        x.Copy(Before: x);
        Worksheet WPDss = (Worksheet)excel.Worksheets[index];
        WPDss.Name = "WPs";

        var index1 = y.Index;
        y.Copy(Before: y);
        Worksheet Datass = (Worksheet)excel.Worksheets[index1];
        Datass.Name = "WPData";

        Range Rangex = WPDss.Range["G3:G30"];   // Creating ranges using "WPs" and "WPData"
        Range Rangey = Datass.UsedRange;

        Range Rowx;
        //initiating total rows and columns for "WPData"
        int totcoly = Rangey.Column.Count; //Count not recognized
        int totrowy = Rangey.Row.Length; // Length not recognized

        int iterx = 50;  // initiating number of iterations 
       
        object[,] Objx = Rangex.Value;  // creating objects for the ranges
        object[,] Objy = Rangey.Value;

        for (int i = 1; i < iterx;i  )
        {
            try
            { // trying to find the Row in "Rangex" corresponding to the value in "Objy[i,50]"
                 Rowx = Rangex.Find(Rangey[i, 50].Value).Row; //ALWAYS RETURNING NULL

              // If Rowx is null then throw an exception, otherwe implemement the following operation
                if (Rowx != null amp;amp; Rangey[i, 50].ToString() == Rangex[Rowx, 7].ToString())
                {
                    WPDss.Cells[i, 9] = (dynamic)Rangey[Rowx, 1];
                }
            }
            catch (Exception)
            {
                // MessageBox.Show("Ayikho lento ndoda");
            }
         }
     }
  }
 

}