Seite 1 von 1

Diagramm in Excel einfügen via QT

Verfasst: 15. Mai 2010 12:02
von mc.george
Hallo,

ich bin gerade dabei, meine ersten Erfahrungen bezüglich der Generierung von Exceldokumenten via QT zu machen.
Das funktioniert soweit schon ganz gut. Ich hänge jetzt aber an dem automatisierten Einfügen von Diagrammen.
Die Erzeugung des Diagramms, hinzufügen der SeriesCollection und platzieren des Diagramms funktioniert ohne Probleme.
Wo ich derzeit nicht weiter komme, ist dass zuordnen der Datenrange für die Achsen. Nachfolgend mal mein derzeitiger Code:

Code: Alles auswählen

// get chart collection
	_QAXOCharts = this->m_QAXOExcelWorkbook->querySubObject("Charts");
	(... check object ...)
	// add chart
	_QAXOCharts->dynamicCall("Add()");
	// get active chart
	_QAXOActiveChart = this->m_QAXOExcelWorkbook->querySubObject("ActiveChart");
	(... check object ...)
	// set diagram type
	_QAXOActiveChart->setProperty("Name", strChartName);
	_QAXOActiveChart->setProperty("ChartType", EXCEL_XL_XY_SCATTER);
	// add series
	_QAXOSeriesCollection = _QAXOActiveChart->querySubObject("SeriesCollection");
	(... check object ...)
	_QAXOSeriesCollection->dynamicCall("NewSeries()");
	_QAXOSeriesCollection = _QAXOActiveChart->querySubObject("SeriesCollection(int)", (_QAXOSeriesCollection->property("Count")).toInt());
	(... check object ...)
	_QAXOSeriesCollection->setProperty("XValues", "A1:A20");
	_QAXOSeriesCollection->setProperty("Values",  "B1:B20");
Mein Problem ist das Setzen der XValues und der Values:

Code: Alles auswählen

_QAXOSeriesCollection->setProperty("XValues", "A1:A20");
_QAXOSeriesCollection->setProperty("Values",  "B1:B20");
Das scheint so definitiv falsch zu sein. Im mit Excel aufgezeichneten Makro sehe ich, dass dieses dem Property eine Range übergibt. Mir ist aber derzeit total unklar, wie ich dies via QT realisieren muss. Ich möchte auch gerne den Verweis auf die Range (dort liegen die Daten) ermöglichen.

Hat jemand von euch dies bezüglich schon Erfahrungen gesammelt und kann mir sagen, wie ich dies realisieren muss?
Vielen Dank.

Gruss george

Verfasst: 17. Mai 2010 16:10
von bst
Hi,

Code: Alles auswählen

QAxObject * xvalues  = worksheet->querySubObject("Range(A1:A5)");
serie->setProperty("XValues", xvalues->asVariant());
HTH, Bernd