Ответ 1
Я предполагаю, что вы действительно ищете последнюю использованную строку. В этом случае вам нужно написать его следующим образом:
Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
Я хочу программно извлекать данные из листа Excel и вставлять их в таблицу базы данных.
Как определить количество столбцов и строк на листе или иначе перебрать строки?
У меня
Excel._Worksheet worksheet = (Excel._Worksheet)workbook.ActiveSheet;
Я пробовал worksheet.Range.Rows.Count
который выдает
Индексированное свойство "Microsoft.Office.Interop.Excel._Worksheet.Range" имеет необязательные аргументы, которые должны быть предоставлены
Что нужно сделать?
Я предполагаю, что вы действительно ищете последнюю использованную строку. В этом случае вам нужно написать его следующим образом:
Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
public void IterateRows(Excel.worksheet worksheet)
{
//Get the used Range
Excel.Range usedRange = worksheet.UsedRange;
//Iterate the rows in the used range
foreach(Excel.Range row in usedRange.Rows)
{
//Do something with the row.
//Ex. Iterate through the row data and put in a string array
String[] rowData = new String[row.Columns.Count];
for(int i = 0; i < row.Columns.Count; i++)
rowData[i] = row.Cells[1, i + 1].Value2.ToString();
}
}
Это компилируется и работает просто отлично для меня! Я использую его для извлечения строк с отсутствующими полями в журнал ошибок.
Посмотрите на свойство UsedRange в Excel.