ich versuche mit Hilfe des QAxWidget die Applikation MS Excel 2010 einzubinden.
Allerdings mit mäßigem Erfolg und unterschiedliche Verhaltensweisen.
Ich nutze die Qt Version 4.8.0.
1) Variante 1:
Code: Alles auswählen
QAxWidget* excel = new QAxWidget( "Excel.Application", parent );
excel->dynamicCall( "SetVisible(bool)", true );Meine Erwartung wäre gewesen, dass das QAxWidget an dieser Stelle die Excel-Applikation kapselt.
2) Variante 2:
Code: Alles auswählen
QAxWidget* excel = new QAxWidget( "Test.xlsx", parent );allerdings stimmt das Rendering nicht. Die Scrollbars/Ränder der eingebetten Excel-Applikation sind nur teilweise sichtbar.
Dies ist dann auch noch abhängig davon, wie ich das QAxWidget skaliere ...
3) Variante 3:
Code: Alles auswählen
QAxWidget* excel = new QAxWidget( "Excel.Sheet", parent );Nur ein Haken gibt es hierbei, als COM Objekt habe ich dann das Sheet und auf das Sheet kann ich kein laden einer Datei anstoßen.
Dafür bräuchte ich, soweit wie ich das sehe, die Workbooks.
--
Ich möchte die Excel Applikation einbetten und eine bestehende Datei laden können und eben darin darstellen.
Folgender Code macht dies auch schon, allerdings eben in der Excel-Instanz die ausserhalb meiner Applikation gestartet wird:
Code: Alles auswählen
QAxWidget* excel = new QAxWidget( "Excel.Application", parent );
layout->addWidget( excel );
excel->dynamicCall( "SetVisible(bool)", true );
QAxObject* workbooks = excel->querySubObject( "Workbooks()" );
QAxObject* workbook = workbooks->querySubObject( "Open( QString )", "Test.xlsx" );Habt ihr zufällig eine Idee?
Ich habe über google nichts passendes gefunden.
EDIT:
Ich habe gerade festgestellt, dass bei einer integrierten Variante, Excel nicht mehr parallel gestartet werden kann (um es "normal" zu verwenden).
Irgendwie ist das Ganze nicht wirklich glücklich ...
EDIT2:
Wird der Code von http://excelviewer.codeplex.com/SourceC ... lViewer.cs nach C++ gewandelt funktioniert es. Das Rendering stimmt nicht 100%ig, allerdings ist MS Excel innerhalb des QWidgets. Hier wird, soweit ich das sehe, Qt komplett ausgehebelt und das hart in das OS-Windows Objekt (was ein QWidget ja hat) reingeschrieben. Es ist eine Lösung, aber nicht die Lösung die ich mir mit der Benutzung des Qt-Frameworks erhofft habe.
Vielen herzlichen Dank.
Viele Grüße