2016-08-29 2 views
0

In C# mit Asp/MVC generiert die App eine Excel .xlsx-Datei basierend auf Daten, die in die einzelnen Spalten ausgefüllt ist, funktioniert gut.In ClosedXML, wie ein Arbeitsblatt nach einer Spalte sortiert?

Aber das Ziel ist, zusätzliche Arbeitsblätter zur Verfügung zu stellen, die die gleichen Spalten verwenden, aber Art auf spezifische colums, wie Spalte „J“

var wb = new XLWorkbook(); 
    var ws = wb.Worksheets.Add("Proj Info"); 
    var ws2 = wb.Worksheets.Add("Sort By Dates"); 

Das Arbeitsblatt ws hat Werte von Variablen oder Formeln ausgefüllt, die Daten ist korrekt, kann aber nicht auf einer Spalte sortieren

ws.AutoFilter.Column("J"); //no, nothing changes 
    ws.Column("J").Sort(); -> this shifts all the columns up but does not sort 
    ws.Column("J").Sort(XLSortOrder.Ascending); ->same, doesnt sort only shifts 

Aktualisierung: ws.Sort (9); hat beim Sortieren gearbeitet, aber das Problem ist, dass Spalte 10 eine Formel hat und ich nach dieser Spalte sortieren muss.

ws.Cell("J" + c).FormulaR1C1 = "=C$2-F" + c; 

Mit diesem? Es wird nicht sortieren. Die ws.Sort (10); funktioniert, wenn die Zelle einen endgültigen Wert enthält, aber wenn sie die Formel hat? Gibt es eine Problemumgehung, um die Excel-Seite zu sortieren, nachdem die Formel in jeder Zelle implementiert wurde?

Antwort

1

Sie sortieren die Tabelle nicht, aber die Werte in Spalte J.

diese

Versuchen:

ws.Sort("Column10"); 
+0

Wäre es so schreiben: ws.Sort (10); weil ws.Sort ("Column10"); habe einen Fehler: muss einen gültigen Wert 1 - 65536 eingeben? Aber, wenn ich das auf der anderen Spalte verwende, funktioniert es! ws.Sort (11) sortiert nach dieser Spalte. Funktioniert nur nicht in Spalte 10, nur Unterschied ist Spalte 10 erhält die Werte aus einer Formel. Jede Zelle in Spalte 10 hat "= C $ 4-E6" (oder E7, E8, etc ..) Können Sie nach Spalte sortieren, wenn es eine Formel hat? –

+0

Das Sortieren der Formel würde keinen Sinn ergeben, da die Excel-Formel nicht von ClosedXml ausgeführt würde. Was Sie tun können, ist ... das Ergebnis zu berechnen und es in eine Spalte zu schreiben, danach zu sortieren und dann zu löschen. In diesem Fall können Sie jedoch einfach nach Spalte 5 ('E') desc sortieren. – Xiaoy312

+0

Etwas ist merkwürdig, weil jetzt alle Arbeitsblätter nach Spalte A sortieren, es funktionierte gut, ws2.Sort (3); würde nach Spalte "C" sortieren. Nicht mehr, sie sortieren nach Spalte "A". Aber es hat funktioniert. Hat alle Formeln herausgenommen und den Berechnungsteil in der Steuerung gemacht, nur Variablen eingezogen. Irgendeine Idee, warum das Sortieren funktionieren würde, dann später nicht funktionieren? –

Verwandte Themen