#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");
}
}
}
}
}