2012-01-11 23 views
6


Devo nascondere completamente una colonna excel. Ho usato il codice qui sotto, ma non ha funzionato:
Come nascondere una colonna excel?

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

Che cosa mi manca?

risposta

2

Il frammento di cui sopra funziona .. scusate ragazzi! Il problema era che il mio collega collegava automaticamente tutte le colonne, proprio prima di salvare il file, che sovrascriveva le mie impostazioni sopra. Sì, una funzione chiamata CloseFile() che fa due lavori, formatta e quindi salva .. molte responsabilità, eh?

+1

Perché l'autofit e il nascosto si scontrano? Devo fare entrambe le cose: nascondere determinate righe (non le colonne), ma usare anche l'autofit. –

2

Si scopre che nascondere una serie di righe e colonne specificate non potrebbe essere molto più semplice. Ecco come lo si fa, in due semplici passaggi:

1) Nome del foglio di lavoro:

private Worksheet _xlSheet; 

2) Ora, il nome di una gamma, tra cui la prima riga e la colonna da nascondere e quindi l'ultima riga e colonna da nascondere, in questo modo:

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

questo presuppone la prima riga che si desidera nascondere è 42, ecc Ovviamente si vorrà modificare questi valori hardcoded.

A titolo di esempio, ecco qualche codice vero e proprio, con costanti e variabili, invece di vals hardcoded, che risponde a un valore booleano il cui valore indica se il campo deve essere nascosto 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; 
} 

Nota che è necessario fare riferimento all'assembly Microsoft.Office.Interop.Excel.

Problemi correlati