EPPlus: das traversieren durch jeden content-block (Zelle fusioniert oder Bereich) von einem Arbeitsblatt?

Ich versuche, die traverse durch die Zellen zusammengeführte Zellen in einem Arbeitsblatt, und ersetzen einige der Vorlagen-Texte mit dynamischen Werten. Allerdings habe ich nicht verwalten, um eine Schleife durch alle nicht-leeren Zellen, bis jetzt. Derzeit ich versuchte diesen code, aber es warf NullReferenceException, wenn es versucht, Zugriff auf die Text-Eigenschaft einer Zelle, die verschmolzen sind.

Habe ich mit Hilfe einer Vorlage-Datei, kopieren die Vorlage-Arbeitsblatt von dort in meine gebaut Arbeitsmappe. Ich versuchte es mit einer einzigen Arbeitsmappe, ohne Sie zu kopieren, es gab das gleiche Ergebnis.

Ich auch versuchte, um die Wo(Zelle => !Zelle.Merge) Schließung in der ersten foreach-Schleife, aber mit dem gleichen Ergebnis.

    using (var p = new ExcelPackage(new FileInfo(templateFile)))
    {
        var ws = _excel.Workbook.Worksheets.Add("Report", p.Workbook.Worksheets[sablonMunkafuzet]);
        foreach (ExcelRangeBase cell in ws.Cells)
        {
            if (string.IsNullOrEmpty(cell.Text)) continue;
            var s = cell.Text;
            if (s.StartsWith("^^"))
                 ProcessCell(cell, s.Substring(2));
        }
        foreach (string mc in ws.MergedCells)
        {
            var s = ws.Cells[mc].Text;
            if (s.StartsWith("^^"))
                 ProcessCell(ws.Cells[mc], s.Substring(2));
            }
        }
    }

EDIT: ich möchte erreichen, dass das, was ich tun würde, manuell, wenn ich öffnen Sie die Vorlage in Excel. Jeden "block" (ich meine einzelne Zellen oder verbundene Zellen-Bereiche), wo eine specifix-text-Muster erscheint, dann verarbeiten Sie es, und ändern Sie den Wert "block" zu dem, was ich berechnen.

  • Sie wissen, dass ein Cell ist ein Angebot und kann sich über mehrere Spalten erstrecken oder in Zeilen? Also nur weil der start in die Zelle leer ist, bedeutet nicht, dass am Ende leer ist.
  • Ich weiß, dass. Ich möchte erreichen, dass das, was ich tun würde, manuell, wenn ich öffnen Sie die Vorlage in Excel. Jeden "block" (ich meine einzelne Zellen oder verbundene Zellen-Bereiche), wo eine specifix-text-Muster erscheint, dann verarbeiten Sie es, und ändern Sie den Wert "block" zu dem, was ich berechnen.
  • Welche Linie wirft die Ausnahme?
  • Die Zeile, wo ich versuche zu bekommen-Zelle.Text. Ich bin über dieses problem zu lösen, bald werde ich die Lösung posten hier, wenn ich um es zu bekommen.
Schreibe einen Kommentar