2016-10-28 6 views
0

В настоящее время у меня есть этот код C#, который имеет доступ к таблице1. У меня проблема, но с Var listRowsValue и var lr. Как я могу напечатать эти данные и вычесть 1 из списка ListRowsValue и не просматривать «System._ComObject» в качестве вывода? Как изменить размер ListObject, чтобы не проверять еще одну строку в конце подсчета?Печать и использование Var внутри объекта ListObject forloop

var listRowsValue = xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].ListRows; 

for (int CurrentRow = 0; CurrentRow < listRowsValue.Count; CurrentRow++) 
{ 
    if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[CurrentRow, 2].value == -1) 
    { 
     xlSheet.Cells[5, 5] = "YES!"; 
     //lr.Range.Clear(); 
     var lr = listRowsValue[CurrentRow]; 
     Console.WriteLine("CURRENT ROW: " + lr);//Why does this not work?  

     //MoveEmUpOne(); 
     //How do I resize the total listRowsValue count here so it doesn't check another row at the end? 
     //EXAMPLE: ListRowsValue = ListRowsValue - 1; 
     //CurrentRow = CurrentRow - 1; 
    } 
    else 
    { 
     xlSheet.Cells[5, 5] = "NO!"; 
    } 
} 

Старый VBA кода я конвертирование из:

For CurrentRow = 1 To Tablesize 
    If Lo.ListColumns("Column2").DataBodyRange(CurrentRow) = -1 Then 
     Ros(CurrentRow).Range.Clear 
     MoveEmUpOne Lo, CurrentRow, Tablesize 
     Tablesize = Tablesize - 1 'table didn't really get smaller, but number of "real"rows decreased by 1 
     CurrentRow = CurrentRow - 1 ' check this row again -- stuff from below might need cleard 
    End If 

ответ

1

Использование VSTO довольно сильно отличается от LIBS регулярных C#, потому что это зависит от COM интенсивно.

lr - ListRow объект.

Используйте lr.Range.Text, чтобы получить текст в нем.

Console.WriteLine("CURRENT ROW: " + lr.Range.Text); 

См. Range.Text.