Saltar al contenido

Necesita encontrar los puntos de inicio y finalización de un rango de Excel en C#

Buscamos por todo el mundo online y así mostrarte la solución para tu problema, si tienes dificultades deja tu duda y te responderemos con gusto, porque estamos para servirte.

Solución:

No estoy seguro de lo que estás tratando de hacer. Pero aquí hay algunos ejemplos.

Supongamos que tengo el siguiente rango:

Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", "B5") as Excel.Range;

Para mover su rango hacia abajo n-número de fila:

int n = 1;
int rows = range.Rows.Count;
int cols = range.Columns.Count;

Excel.Range newRange = range.get_Offset(n, 0).get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row lower

Para mover la fila inferior hacia arriba

Excel.Range newRange = range.get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row higher

Supongo que puedes averiguar cómo moverlo de lado a lado.

get_Offset() moverá todo el rango y luego deberá cambiar el tamaño del rango.

EDITAR: Ahora que sé lo que quieres.

Para seleccionar la última celda:

Excel.Range lastCell = range.Cells[rows, cols] as Excel.Range;
lastCell.Select();

Ahora puede usar su propio punto de partida así:

Excel.Range newRange = sheet.get_Range("B1", lastCell);
newRange.Select();

Ok, encontré una respuesta (después de casi 3 horas de búsqueda total, pregunté aquí 2 horas después), así que publicaré aquí para otros.

Excel.Range urange = (Excel.Range)xlWorkSheet.UsedRange; // gives us the actual range
string used = urange.get_Address(false, false, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);

Desde MSDN:

public string get_Address (
    [OptionalAttribute] Object RowAbsolute,
    [OptionalAttribute] Object ColumnAbsolute,
    [OptionalAttribute] XlReferenceStyle ReferenceStyle,
    [OptionalAttribute] Object External,
    [OptionalAttribute] Object RelativeTo)

que al parecer los dos primeros son true/false banderas, la siguiente se define como una Microsoft.Office.Interop.Excel.XlReferenceStyle object, y supongo que External es una referencia a un archivo externo o una bandera de algún tipo. RelativeTo, solo puedo suponer que se refiere a una posición arbitraria definida, tal vez un objeto de rango, tal vez un string. Desafortunadamente, el MSDN es extremadamente escaso en este tema, así que solo estoy adivinando aquí y publicando mis conjeturas. Sin embargo, usando este código como lo publiqué, puedo recuperar el total usado como “A1: B245”, lo que me da exactamente lo que quiero, y luego puedo crear un nuevo rango extrayendo la segunda parte y luego puedo continúa en.

valoraciones y comentarios

Agradecemos que desees añadir valor a nuestra información asistiendo con tu experiencia en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *