C # / Excel: Um die maximale Seriengröße im Diagramm herum arbeiten

8

Ich brauche Hilfe, um mehr Punkte programmatisch darzustellen, als in eine einzelne Excel-Reihe passen können.

Laut Ссылка beträgt die maximale Anzahl an Punkten, die in einem Excel 2007-Diagramm angezeigt werden können, 256000. Angesichts der Tatsache, dass jede Serie bei 32.000 Punkten endet, sind 8 Reihen erforderlich, um die vollen 256.000 Punkte zu zeichnen. Mein Kunde benötigt aufgrund der großen Datenmengen, mit denen wir arbeiten, die maximale Anzahl an Punkten pro Diagramm.

Ich habe mäßige Erfahrung mit C # / Excel-Interop, also dachte ich, es wäre einfach, ein Arbeitsblatt programmatisch zu erstellen und dann jeden Satz von 32000 Punkten durchzugehen und sie dem Graphen als eine Reihe hinzuzufügen, wenn die Daten vollständig geplottet wurden oder 8 Reihen wurden aufgetragen. Wenn sie richtig gefärbt wären, wäre die 8-Serie visuell nicht von einer einzelnen Serie zu unterscheiden.

Leider bin ich hier. Das Hauptproblem, auf das ich stoße, ist:

(volle Größe) Die maximale Anzahl an Datenpunkten, die Sie in einer Datenreihe für ein 2-D-Diagramm verwenden können, beträgt 32.000 ... http: / /img14.imageshack.us/img14/9630/errormessagen.png

Dieses Popup erscheint seltsamerweise, wenn ich die Zeile ausfühle:

chart.ChartType = Diagrammtyp (chartType ist xlXYScatterLines) http://img2.imageshack.us/img2/ 2413 / linean.png

und wird begleitet von:

Ausnahme von HRESULT: 0x800AC472 http://img21.imageshack.us/img21/5153/exceptionb.png

Ich verstehe nicht, wie ich eine solche Popup / Warnung / Ausnahme generieren könnte, bevor ich die zu zeichnenden Daten spezifiziert habe. Versucht Excel, hier clever zu sein?

Als vorübergehende Lösung habe ich die Anweisung chart.ChartType = chartType in einen try-catch-Block gesetzt, damit ich weitermachen kann.

Wie der folgende Code zeigt, funktioniert mein "Chunking" -Code wie vorgesehen, aber ich habe immer noch das gleiche Problem, wenn ich versuche, dem Graphen Daten hinzuzufügen. Excel sagt, dass ich versuche, zu viele Punkte zu zeichnen, wenn klar ich nicht bin.

( Bild in voller Größe ) Codeblock mit Überwachungsfenster http://img12.imageshack.us/img12/5360/snippet.png

Ich verstehe, dass ich die X-Werte vielleicht noch nicht richtig mit jeder Serie verbunden habe, aber ich versuche, das zu erreichen, bevor ich weiter gehe.

Jede Hilfe würde sehr geschätzt werden.

Hier ist der vollständige Code:

%Vor%     
Vincent 14.09.2009, 17:02
quelle

3 Antworten

2

Wenn sich die aktive Zelle in einem Datenblock befindet, kann Excel annehmen, dass Sie den Bereich grafisch darstellen möchten.

Wählen Sie eine leere Zelle, die sich nicht neben den Daten befindet, und fügen Sie das Diagramm ein. Es wird leer sein, anstatt vorher ausgefüllt.

    
Jon Peltier 15.09.2009, 10:57
quelle
2

Muss Ihr Graph tatsächlich in Excel sein? Mit so vielen Datenpunkten wäre die Performance schrecklich.

Ein Vorschlag könnte sein, eine Drittanbieterkomponente zu verwenden, um das Diagramm zu erzeugen. Die spezielle Technik dafür hängt davon ab, ob Sie in der Lage sein müssen, die Daten in Excel anzuzeigen oder ob das Ausgabediagramm einfach an anderer Stelle verfügbar sein muss.

Wenn das Diagramm nicht in Excel sichtbar sein muss, übergeben Sie einfach die Datenpunkte und zeigen Sie das Bild in der Grafikanwendung oder in einem Webbrowser an.

Wenn Sie das Diagramm mit Excel anzeigen möchten, können Sie die externe Grafikanwendung aufrufen und eine Sammlung von Datenpunkten übergeben. Wenn es das Bild zurückgibt, fügen Sie es einfach in Excel mit VBA ein.

Ich kann Ihnen mehr Informationen über beide Ansätze geben, wenn Sie brauchen.

Außerdem können andere Überlegungen beinhalten, ob Sie eine Drilldown-Funktion für das Diagramm benötigen. Mit so vielen Datenpunkten kann ich mir das nicht vorstellen.

Wenn Sie die folgenden Fragen beantworten können, könnte es den Leuten helfen, bessere Antworten zu formulieren.

  1. Welche Art von Benutzeroberfläche wird die Ausgabe dieser Elemente präsentieren? (z. B. Excel, ASP.NET-Webanwendung, Windows Forms, WPF, Silverlight, andere.)

  2. Sollen diese Graphen auf Wunsch eines Benutzers in Echtzeit generiert oder generiert und gespeichert werden? Wenn sie bei Bedarf generiert werden, wie lange sollten Ihre Benutzer maximal warten?

  3. Wie wichtig ist es, dass Sie tatsächlich Excel verwenden? Verwenden Sie es, weil es eine Voraussetzung für die Anzeige ist, oder ist das gerade nützlich?

  4. Wie wichtig ist der "Wow-Faktor" für die Darstellung der Graphen? Haben einfach die Graphen, oder müssen sie extrem schön sein?

  5. Benötigen Benutzer die Möglichkeit, einen Drilldown in den Graphen durchzuführen oder können sie das Bild einfach ausreichend anzeigen?

Anthony Gatlin 15.09.2009 00:51
quelle
1

Um jedem zu helfen, der in der Zukunft darauf stößt, ist hier die komplette Funktion mit Jons Behebung:

%Vor%     
Vincent 15.09.2009 15:41
quelle

Tags und Links