Ich habe buchstäblich Stunden damit verbracht, das jetzt herauszufinden. Copilot hat einen Unterschied in der Struktur des Arbeitsblatts vorgeschlagen, es gibt jedoch keine benannten Bereiche, Tabellen, zusammengeführten Zellen oder formatierten Zellen, die den gelöschten Bereich beeinträchtigen Zeilen.
Es gibt auch keine Fehlermeldungen, und ich habe einen Try-Catch ausprobiert, um explizit jede Ausnahmemeldung zu schreiben, aber auch dort keine Ergebnisse.
Ich habe auch versucht, „Phantomformeln“ aus der Excel-Tabelle zu entfernen.
Ich habe auch versucht, Zeilen auf eine andere Art und Weise zu entfernen, indem ich die Zeilennummer in einer Liste gespeichert habe und dann die Zeilen außerhalb der Schleife entfernt habe – immer noch kein Erfolg.
Laut den Recherchen, die ich durchgeführt habe Bisher glaube ich, dass dies etwas mit EPPlus zu tun hat und nicht mit dem Code selbst.
Ich verwende EPPlus 8.4.1
BEARBEITEN: Zusätzliche Informationen: Die Zeilen wurden erfolgreich aus der Tabelle gelöscht, es scheint also, dass es funktioniert, aber das Programm wird immer noch vorzeitig beendet.
Code: Select all
public static void FilterErrorData()
{
// ascertain target Excel.
var files = Directory.GetFiles(FileManager.errorOutputPath);
var file = files[0];
using (ExcelPackage package = new ExcelPackage(new FileInfo(file)))
{
ExcelWorksheet ws = package.Workbook.Worksheets["Sheet1"];
// starting at the end of the worksheet, iterate through until row 13 (first data row).
for (int row = ws.Dimension.End.Row; row >= 13; row--)
{
string a = ws.Cells[row, 2].Value?.ToString().Trim() ?? "";
string b = ws.Cells[row, 9].Value?.ToString().Trim() ?? "";
ab currentab = new ab(a, b);
if (!Errors.ContainsKey(ab))
{
ws.DeleteRow(row);
}
else
{
// Retreieve error message from dictionary.
string DataIssue = Errors[ab];
ws.Cells[row, 26].Value = DataIssue;
}
}
Console.WriteLine("About to save");
package.Save();
Console.WriteLine("Saved");
}
}
Code: Select all
public static void FilterDataBelowThreshold()
{
// ascertain target Excel.
var files = Directory.GetFiles(FileManager.unprocessedOutputPath);
var file = files[0];
Dictionary ToKeep = new Dictionary();
foreach (var pair in FileManager.abLimits)
{
if (pair.Value < FileManager.threshold)
{
ToKeep.Add(pair.Key, pair.Value);
}
}
using (ExcelPackage package = new ExcelPackage(new FileInfo(file)))
{
ExcelWorksheet ws = package.Workbook.Worksheets["Sheet1"];
// starting at the end of the worksheet, iterate through until row 13 (first data row).
for (int row = ws.Dimension.End.Row; row >= 13; row--)
{
string a = ws.Cells[row, 2].Value?.ToString().Trim() ?? "";
string b = ws.Cells[row, 9].Value?.ToString().Trim() ?? "";
ab currentab = new ab(a, b);
if (!ToKeep.ContainsKey(currentab))
{
ws.DeleteRow(row);
}
}
package.Save();
}
}
Mobile version