web-dev-qa-db-fra.com

C # - Comment puis-je répéter toutes les lignes dans Excel._Worksheet?

Je cherche à extraire par programme des données d'une feuille de calcul Excel et à les insérer dans une table de base de données.

Comment puis-je déterminer le nombre de colonnes et de lignes dans une feuille de calcul ou autrement itérer les lignes?

J'ai

Excel._Worksheet worksheet = (Excel._Worksheet)workbook.ActiveSheet;

J'ai essayé worksheet.Range.Rows.Count

qui jette

La propriété indexée 'Microsoft.Office.Interop.Excel._Worksheet.Range' a des arguments non facultatifs qui doivent être fournis

Ce qui doit être fait?

21
P.Brian.Mackey
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's 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] =Convert.ToString(row.Cells[1, i + 1].Value2);
    }
}

Cela compile et fonctionne très bien pour moi! Je l'utilise pour extraire des lignes avec des champs manquants dans un journal d'erreurs.

37
nicholeous

Je suppose que vous recherchez en fait la dernière ligne utilisée. Dans ce cas, vous devez l'écrire comme ceci:

Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
18
David Heffernan

Jetez un œil à la propriété sedRange dans Excel.

2
Tim Lentine