2015-01-21 8 views
16

Ich möchte die ersten 5 Spalten und drei Zeilen in Excel einfrieren. Ich habe den folgenden Code für die Freeze-Bereiche in Excel mit C# und EPPlus

Worksheets.View.FreezePanes(5, 5); 

geschrieben, aber es friert Spalten in ersten 4 Reihen auch. Ich möchte die ersten 4 Spalten in Excel außer in den ersten 4 Zeilen einfrieren. Ist es möglich zu tun?

+0

nicht sicher sein. Willst du sagen, dass du aus der fünften Reihe und von unten einfrieren willst? Wenn Sie also blättern, sind die Zellen A1 bis D4 nicht eingefroren? Können Sie das sogar in Excel? – Ernie

Antwort

23

Der erste Wert gibt an, wie viele Zeilen eingefroren werden sollen, und der zweite Wert gibt an, wie viele Spalten eingefroren werden sollen. Daher müssten die ersten 3 Zeilen und 5 Spalten einzufrieren Sie es wie die folgenden nennen:

Worksheets.View.FreezePanes(3, 5); 

Sie auch einen Blick auf this SO question für weitere Informationen über FreezePanes nehmen.

+1

In der aktuellen Zeit würde das Einfrieren der oberen Zeile die horizontale Bildlaufleiste irgendwie deaktivieren. – Rozen

-3

Sie können sheet.FreezePanes (int rowIndex, int column) Methode aufrufen Bereich einzustellen Einfrieren.

Codebeispiel:

using System; 
using Spire.Xls; 
using System.Drawing; 

namespace FreezePane 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Load File 
      Workbook workbook = new Workbook(); 
      workbook.LoadFromFile 
       (@"E:\Work\Documents\ExcelFiles\UserInfo.xlsx"); 
      Worksheet sheet = workbook.Worksheets[0]; 

      //Freeze Top Row 
      sheet.FreezePanes(2, 1); 

      //Save and Launch 
      workbook.SaveToFile("FreezePane.xlsx", ExcelVersion.Version2010); 
      System.Diagnostics.Process.Start(workbook.FileName); 
     } 
    } 
} 
+1

Ich denke OP fragte speziell nach 'EPPlus', nicht nach' Spire.Xls'. –

11

Für mich die erste Reihe einzufrieren gearbeitet folgenden Code ein. Ich bin mir nicht sicher, was Logik dort ist.

worksheet.View.FreezePanes(2,1); 
+1

JA. 'sheet.View.FreezePanes (6, 1);' fror die ersten 5 Zeilen für mich ein. –

+0

Ich gehe davon aus, dass Sie eins zur Anzahl der eingefrorenen Zeilen/Spalten hinzufügen müssen, da Excel auf die gleiche Weise funktioniert.Um die erste Zeile in Excel einzufrieren, müssen Sie die ersten * zwei * Zeilen auswählen (Fragen Sie mich nicht, warum) –

+2

@AustinAdams: weil (in Excel sowie in epplus) müssen Sie die Zelle angeben, die den oberen darstellt - linke Ecke des nicht gefrorenen Bereichs. Im Grunde sagst du: "Ok, das ist die erste obere linke Zelle des scrollbaren Bereichs; alle obigen Zellen werden als Spaltenüberschriften betrachtet, und alle Zellen auf der linken Seite werden als Zeilenüberschriften betrachtet." – digEmAll

3

Vom ExcelWorksheet Objekt, rufen Sie die Ansicht Eigenschaft.

Auf dem ExcelWorksheetView Objekt zurückgegeben, rufen die FreezePanes (Zeile, Spalte) Verfahren, die Zeile und Spalte der ersten Zelle der NOT Passieren gefroren ist.

Zum Beispiel der ersten vollständigen zwei Scheiben von Excel-Arbeitsblatt einzuzufrieren, müßten Sie in der Spalte (3,1) zur Reihe Parameter zu übergeben:

worksheetObject.View.FreezePanes(3, 1); 

So zu Nur die erste Zeile vollständig einfrieren Sie können jetzt nur worksheetObject.View.FreezePanes(2,1); anrufen!

Dies ist also mentioned im offiziellen Beispiel EPPlus.

daher von @ user2148124 die Antwort angehoben ursprüngliche Frage zu beantworten, sollte ich voll und ganz verstehen, was Sie versuchen zu tun

worksheetObject.View.FreezePanes(3, 5); 
Verwandte Themen