2016-04-11 11 views
0

Das folgende Bild zeigt, was ich genau machen möchte.Wie wird die Pivot-Tabelle in Aspose nach Zeilen- und Spaltenfeldwerten sortiert?

Pivot Table Use-Case Demo

Ich habe versucht, so in dem unten stehenden Code zu tun, aber es funktioniert nicht richtig/lesbar Excel-Datei zu erzeugen. Wenn ich den kommentierten Code verwende, erzeugt er alternativ die korrekte Excel-Datei, sortiert aber nicht korrekt wie erwartet.

Können Sie mir bitte helfen, das im obigen Bild genannte Objektiv zu erreichen.

String sortByColName = "OrderDate"; 
    String sortByRowName = "CategoryName"; 

    PivotFieldCollection colFields = pivotTable.getColumnFields(); 
    PivotFieldCollection rowFields = pivotTable.getRowFields(); 

    PivotField sortByColField = colFields.get(sortByColName); 

    sortByColField.setAutoSort(true); 
    sortByColField.setAscendSort(true); 
    sortByColField.setAutoSortField(2); /* sortByColField.setAutoSortField(-1); */ 
    sortByColField.setAutoShow(true); 
    sortByColField.setAscendShow(true); 
    sortByColField.setAutoShowField(0); 

    PivotField sortByRowField = rowFields.get(sortByRowName); 
    sortByRowField.setAutoSort(true); 
    sortByRowField.setAscendSort(true); 
    sortByRowField.setAutoSortField(2); /* sortByRowField.setAutoSortField(-1); */ 
    sortByRowField.setAutoShow(true); 
    sortByRowField.setAscendShow(true); 
    sortByRowField.setAutoShowField(0) 

Antwort

2

Da Ihre Anforderung basierend auf einigen spezifischen Werte/Bereich in der Pivot-Tabellenbericht Sortierung anpassen, so dass Sie kann es nicht direkt über Pivot-Tabelle Optionen erreichen, können Sie diese in MS Excel manuell bestätigen. Ich fürchte, Sie müssen zuerst Ihre PivotTable über Aspose.Cells-APIs erstellen, dann müssen Sie PivotTable mit seinen Daten aktualisieren (dh PivoTable.refreshData() und PivotTable.calculateData() usw.), also Aspose.Cells sollte den PivotTable-Bericht in die Arbeitsblattzellen einfügen/rendern. Verwenden Sie nun die allgemeine Datensortierungsfunktion (siehe Dokument als Referenz: http://www.aspose.com/docs/display/cellsjava/Data+Sorting), um den gewünschten Bereich (über die Optionen "Von oben nach unten" oder "Von links nach rechts") über die Aspose.Cells-APIs zu sortieren. Es ist nicht so einfach, weil Sie zuerst herausfinden müssen, welcher Bereich oder Teilbereich (Zeile oder Spalte) aussortiert werden soll. Hier können Sie Such-/Suchoptionen verwenden, die von der Aspose.Cells-API bereitgestellt werden.

Wenn Sie noch denken, solch eine benutzerdefinierte Sortierung über Pivot-Tabelle Optionen in MS Excel direkt durchgeführt werden kann, die gewünschte Pivot-Tabelle kindly manuell in MS Excel, speichern Sie die Excel-Datei erstelle und uns in Ihrem thread, werden wir überprüfen und helfen Du bist bald da.

Ich arbeite als Supportentwickler/Evangelist bei Aspose.

+0

Dank @Amjad für die richtige Richtung! Ich habe relevante Änderungen vorgenommen, wie Sie vorgeschlagen haben, aber es produziert immer noch nicht das erwartete Excel. Tatsächlich speichere ich meine aktuelle Arbeitsmappe in ByteArrayOutputStream-Objekt statt Datei (ich kann die API des Codes nicht ändern). Darüber hinaus sortiere ich dieselbe Arbeitsmappe zweimal (vertikal und horizontal). Da dies der Teil derselben Anfrage ist, bin ich mir nicht sicher, ob ich in Einzelanfrage/Thread das erreichen kann, was ich wollte. Bitte führe mich weiter! –

+0

Nun, speichern Arbeitsmappe in Streams oder Dateipfad sollte keinen Unterschied machen. Wir empfehlen Ihnen, Ihren Thread (http://www.aspose.com/community/forums/thread/712040/how-to-sort-pivot-table-in-aspose-by-row-and-column-) zu verfolgen. field-values.aspx) für Ihre Referenz. –