Diagramm in Excel einfügen via QT

Alles rund um die Programmierung mit Qt
Antworten
mc.george
Beiträge: 10
Registriert: 15. Mai 2010 11:16

Diagramm in Excel einfügen via QT

Beitrag 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
bst
Beiträge: 56
Registriert: 7. November 2006 13:16
Wohnort: Ilsfeld

Beitrag von bst »

Hi,

Code: Alles auswählen

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