2013-08-12 74 views
27

Ho lavorato molto con EPPlus per generare file Excel per il numero di esportazioni che il mio progetto mi richiede di eseguire. La maggior parte delle esportazioni che vogliono tendono a combaciare perfettamente con le esportazioni che hanno già nel suo sistema legacy. Uno di loro, tuttavia, vuole diverso. Vogliono che appaia esattamente come una delle esportazioni dal sistema legacy dopo aver apportato alcune modifiche tipiche e specifiche.Blocco delle colonne in EPPlus (una funzione di divisione Excel)

Alcune delle modifiche apportate, tuttavia, rendono ogni riga molto più lunga di quanto vogliono, quindi vogliono mantenere alcune delle informazioni della colonna bloccate sullo schermo mentre il resto delle colonne può scorrere normalmente (ovvero la funzione di divisione di Excel). Ho provato a bloccare le colonne con ws.Column(6).Style.Locked = true, ma non sembra funzionare. Ho anche provato a impostare la proprietà Locked di un intervallo di celle su true ma non ha funzionato.

Come posso bloccare le colonne in posizione?

risposta

50

Si scopre che EPPlus ha una funzione integrata per farlo sull'oggetto Worksheet stesso chiamato FreezePanes. Questa funzione ha 2 parametri, entrambi sono int: Riga e Colonna. In questo modo si congelano le righe o le colonne che si desidera bloccare in posizione durante la visualizzazione del foglio di lavoro.

Uno degli esempi sul sito Web di EPPlus lo utilizza, sebbene non sia l'obiettivo principale dell'esempio/L'esempio può essere found here.

C'è una Gotcha con questa funzione che si dovrebbe conoscere, però: il numero che si utilizza per la riga o colonna del parametro è in realtà la prima colonna che è NON congelato in luogo. In altre parole, se si desidera che le prime 5 colonne da congelare si dovrebbe fare la seguente chiamata:

ws.View.FreezePanes(1,6) (dove 6 è la prima colonna che non è congelato)

+0

IronMan84: voglio congelare prime 5 colonne in mio header Excel e scrivo il codice qui sotto: xlWorkSheet.View.FreezePanes (1, 6); Invece di congelare 5 colonne solo per la prima riga, si congelano 5 colonne per tutte le righe. Qualche idea su come posso ottenere il mio risultato desiderato ?? –

+0

IronMan84: Esiste un modo per specificare l'intervallo per il blocco di righe e colonne invece di dare solo gli indici iniziali? –

+0

Excel non consente di bloccare intervalli di celle, solo colonne o righe lungo i lati superiore e sinistro del foglio di calcolo. Tuttavia, è possibile utilizzare la funzione Dividi per dividere il foglio di lavoro in sezioni che possono essere spostate utilizzando le barre di scorrimento. Vedi http://classroom.synonym.com/freeze-selection-excel-11819.html per maggiori dettagli. –

1

mi sono reso conto che quando si utilizza @ Il suggerimento di IronMan84, se ti interessa solo la riga ma non la colonna. È possibile utilizzare

ws.View.FreezePanes(3, 1); // (Freeze Row 2 and no column) 
+0

Questo è corretto. Se si tenta di impostarlo su zero, Excel segnala un errore in caso di rottura del documento. Aggiungi 2 a tutte le righe e/o colonne che desideri bloccare. – jocull

+0

Siamo spiacenti, è sbagliato - aggiungi ** 1 ** al numero di righe/colonne! – jocull

Problemi correlati