C# Excel: Zugriff auf merged Cells mit epplus

Raknar

Ensign
Registriert
Apr. 2006
Beiträge
174
Guten Abend,

ich versuche gerade in einem Exceldokument Zeichenketten gegen andere zu ersetzen. Dazu verwende ich die Bibliothek epplus (basiert auf openXML).

Das klappt für einzelne Zellen auch ganz gut.
Einfaches Beispiel:
Code:
ExcelRange range = worksheet.Cells[1, 1, 4, 6];

             for (int rowIndex = range.Start.Row; rowIndex < range.End.Row; rowIndex++)
             {
                 for (int columnIndex = range.Start.Column; columnIndex < range.End.Column; columnIndex++)
                 {
                     if (String.IsNullOrEmpty(range[rowIndex,columnIndex].Value.ToString()) == true)
                     {
                         continue;
                     }

                     if (range[rowIndex, columnIndex].Value.ToString() == "blub")
                     {
                         range[rowIndex, columnIndex].Value = "blub blub" ;
                     }

                       //usw.
                 }
             }
Allerdings klappt es nicht bei verbundenen Zellen. Ich würde gerne deren kompletten Text abrufen und ändern können.

Vielen Dank schon mal im voraus.
 
Danke für den Hinweis!

Ich bin dann beim Lesen auf das gestoßen, was in meinem Fall das Richtige ist:
Code:
 ExcelRange range = worksheet.Cells[1, 1, 4, 6];
             int startRow = range.Start.Row;
             int endRow = range.End.Row;
             int startColumn = range.Start.Column;
             int endColumn = range.End.Row;

             for (int rowIndex = startRow; rowIndex <= endRow; rowIndex++)
             {
                 for (int columnIndex = startColumn; columnIndex <= endColumn; columnIndex++)
                 {

                     worksheet.Select(range[rowIndex, columnIndex]);

                     if (range[rowIndex, columnIndex].Value == null)
                     {
                         continue;
                     }

                   
                     if (worksheet.SelectedRange.Value.ToString() == wsUser)
                     {
                         worksheet.SelectedRange.Value = "Benutzer: " + model.CreatedBy.Username; continue;
                     }
                 //usw.
                     
                 }
             }
Die Lösung für mein Problem steht in Zeile 20-23.
Die Notwendigkeit für die Zeilen 2-5 habe ich beim Debuggen festgestellt. Beim Schleifendurchlauf ändern sich die Ranges und somit die Ausmaße bzw. z.B. die letzte Zeile.
 
Zurück
Oben