2012-01-11 134 views
6


Necesito ocultar una columna de Excel por completo. He utilizado el código de abajo, pero no funcionó:
¿Cómo ocultar una columna de Excel?

public void Hide (params string[] columns) 
{ 
    foreach(var column in columns) 
    { 
     Range range = (Range) oSheet.Columns[column, Type.Missing]; 
     range.EntireColumn.Hidden = true; 
    } 
} 

¿Qué me falta?

Respuesta

2

El fragmento de arriba está funcionando ... lo siento muchachos! El problema era que mi compañero de trabajo solía ajustar automáticamente todas las columnas, justo antes de guardar el archivo, lo que anulará mi configuración anterior. Sí, una función llamada CloseFile() que hace dos trabajos, formatea y luego guarda ... muchas responsabilidades, ¿eh?

+1

¿Por qué colisionarían automáticamente y ocultos? Necesito hacer ambas cosas: ocultar ciertas filas (no columnas), pero también usar la función de autoajuste. –

2

Resulta que ocultar un lapso de filas y columnas que especifique no podría ser mucho más fácil. He aquí cómo lo haces, en dos sencillos pasos:

1) el nombre la hoja de cálculo:

private Worksheet _xlSheet; 

2) Ahora, el nombre de un rango, incluyendo la primera fila y la columna de ocultar y luego la última fila y para ocultar la columna, así:

var hiddenRange = yourWorksheet.Range[_xlSheet.Cells[42, 1], _xlSheet.Cells[999, 13]]; 
hiddenRange.EntireRow.Hidden = true; 

Esto supone la primera fila que desea ocultar es 42, etc. es obvio que va a querer cambiar estos valores codificados.

A modo de ejemplo, aquí hay un código real, utilizando las constantes y variables en lugar de Vals codificados, que responde a un booleano cuyo valor indica si el rango debe estar oculto o no:

private bool _hide; 
private int _curTopRow; 
private static readonly int ITEMDESC_COL = 1; 
private static readonly int TOTALS_COL = 16; 
. . . 
if (_hide) 
{ 
    var hiddenRange = _xlSheet.Range[_xlSheet.Cells[_curTopRow, ITEMDESC_COL], _xlSheet.Cells[_curTopRow+3, TOTALS_COL]]; 
    hiddenRange.EntireRow.Hidden = true; 
} 

en cuenta que necesita para hacer referencia al ensamblado Microsoft.Office.Interop.Excel.

Cuestiones relacionadas