Estoy buscando mediante programación extraer datos de una hoja de cálculo de Excel y la inserta en una tabla de base de datos.

¿Cómo puedo determinar el número de filas y columnas en una hoja de cálculo o de lo contrario recorrer las filas?

He

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

Traté de worksheet.Range.Rows.Count

que la tira hasta

Propiedad indexado ‘de Microsoft.De la oficina.De interoperabilidad.Excel._Worksheet.La gama’ ha
no argumentos opcionales que deben de ser proporcionados

Lo que se necesita hacer?

  • ¿Qué versión de excel está usted trabajando?

3 Comentarios

  1. 18

    Supongo que usted está realmente en busca de la última fila. En ese caso, usted necesita para escribir algo como esto:

    Range UsedRange = worksheet.UsedRange;
    int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
    • Esto es mejor que lo que yo tenía en mente.
  2. 34
    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] = row.Cells[1, i + 1].Value2.ToString();
        }
    }

    Esto compila y se ejecuta sólo para mí! Lo estoy usando para extraer filas con los campos que faltan a un error de registro.

    • Debe ser String[] rowData = new String[fila.Columnas.Cuenta];
    • En caso de que foreach línea se foreach(Excel.Rango de fila en usedRange.Filas) ?
    • De hecho, se debe!
    • Tenga en cuenta que este método puede ser demasiado lento para un montón de usos, la conversión de todo el rango de una matriz de objetos antes de la iteración de acelerar las cosas.
  3. 2

    Tener una mirada en el UsedRange propiedad en Excel.

    • En la Ventana Inmediato, este devuelve Exception from HRESULT: 0x800401A8. código de error -2147221080. InnerException = null
    • Por la razón que sea, no puede utilizar visual studio ventana Inmediato. Funciona bien en el código. No es gran cosa, no importa inmediata.

Dejar respuesta

Please enter your comment!
Please enter your name here