J'ai trouvé un code pour insérer une feuille de calcul de type de graphique (graphiques non intégrées) dans Excel en utilisant Qt Activex comme ci-dessous:graphiques incorporés par qt activex
Le code fonctionne très bien. Je me demande où peut si trouver les normes API/quelques exemples pour traiter les graphiques spécialement avec des graphiques intégrés. Où puis-je trouver des exemples ou des API pour traiter les graphiques incorporés dans Excel via qt Activex.
Je serai très apprécié si quelqu'un peut me guider à travers la création des graphiques Excel embarqués avec QActivex
QAxObject *excel = new QAxObject("Excel.Application", 0);
QAxObject *workbook = excel->querySubObject("Workbooks")->querySubObject("Add");
QAxObject *worksheet = workbook->querySubObject("Worksheets(1)");
worksheet->setProperty("Name", "Dati applicazione");
worksheet->querySubObject("Cells(1,1)")->dynamicCall("SetValue", "Serie");
worksheet->querySubObject("Cells(1,2)")->dynamicCall("SetValue", "Dati");
QAxObject *cell;
double dval;
for (int i = 2; i < 10; ++i) {
dval = qrand();
cell = worksheet->querySubObject("Cells(int,int)", i, 1);
cell->dynamicCall("SetValue(int)", i-1);
cell = worksheet->querySubObject("Cells(int,int)", i, 2);
cell->dynamicCall("SetValue(double)", dval);
cell = worksheet->querySubObject("Cells(int,int)",i,3);
cell->dynamicCall("SetValue(double)", dval/2.0);
cell = worksheet->querySubObject("Cells(int,int)", i, 4);
cell->dynamicCall("SetValue(double)", dval/3.0);
}
QAxObject *range = worksheet->querySubObject("Range(A2:C9)");
range->dynamicCall("Select(void)");
QAxObject *chart = workbook->querySubObject("Charts")->querySubObject("Add");
chart->setProperty("Name", "Report Grafico dei dati");
chart->setProperty("Chart Type", 73);
QAxObject *series = chart->querySubObject("SeriesCollection");
QAxObject *serie = series->querySubObject("Item (int)", 1);
QAxObject *xvalues = worksheet->querySubObject("Range(A2:A9)");
QAxObject *yvalues = worksheet->querySubObject("Range(B2:B9)");
serie->setProperty("XValues", xvalues->asVariant());
serie->setProperty("Values", yvalues->asVariant());
serie = series->querySubObject("Item (int)", 2);
yvalues = worksheet->querySubObject("Range(C2:C9)");
serie->setProperty("XValues", xvalues->asVariant());
serie->setProperty("Values", yvalues->asVariant());
serie = series->querySubObject("Item (int)",3);
yvalues = worksheet->querySubObject("Range(D2:D9)");
serie->setProperty("XValues", xvalues->asVariant());
serie->setProperty("Values", yvalues->asVariant());
workbook->dynamicCall("SaveAs(const QString&)", "E:\\test\\test.xls");
workbook->dynamicCall("Close (Bollean)", false);
excel->dynamicCall("Quit (void)");
Il se peut que vous n'ayez pas de feuille active. Cela peut arriver lorsque l'application n'est pas visible. Essayez d'obtenir classeur-> querySubObject ("Worksheets (1)") comme dans l'exemple précédent. Les feuilles de calcul prennent en charge ChartObjects. –
@ CarlosE.Ferro Cela ne fait aucune différence. J'ai déjà essayé cela – Mosi
Hmm. Peut être le type. ChartObjects est une collection que vous essayez d'affecter à un pointeur d'objet. Dans l'exemple, ils ne traitent pas les collections mais affectent l'ajout directement, avec QAxObject * chart = classeur-> querySubObject ("Charts") -> querySubObject ("Add") –