Excel Zellen formatieren

Alles rund um die Programmierung mit Qt
Antworten
oldmanII
Beiträge: 9
Registriert: 11. Juni 2010 15:57

Excel Zellen formatieren

Beitrag von oldmanII »

Hallo,
ich komme leider nicht weiter.
Ich muss von Qt aus eine Excel-Datei erzeugen und muss auch die Zellen formatieren. Bekomme dies allerdings nicht hin.
Etwas Hilfe wäre nett.


An code habe ich bisher folgendes:

Code: Alles auswählen

    QAxObject * range;
    QAxWidget excel("Excel.Application");
    excel.setProperty("Visible", true);

    QAxObject * workbooks = excel.querySubObject("WorkBooks");
    // Anlegen eines Workbook
    workbooks->dynamicCall("Add ()");
    QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
    // Auswahl des ersten Tabellenblattes
    QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);

    worksheet->setProperty("Name", "Logger Data");

    range = worksheet->querySubObject("Cells(1,1)");
    range->setProperty("Value", "TAG");

    // An dieser Stelle würde ich gerne die Zelle formatieren!
    // Text zentriert, Text bold, Zellenbreite ändern, Kategorie definieren

    workbook->dynamicCall("Close (Boolean)", false);
    excel.dynamicCall("Quit (void)");

besten Dank im voraus
oldman
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

Hallo,
hier mal ein paar nützliche Links zum Thema Excel.
Leider findet sich zum Thema Zellen formatieren nur der Hinweis, das sei doch recht schwierig.
Ich werde demnächst die Idee testen, einer bereits formatierten Zelle neue Daten unterzujubeln. Das wichtigste, die Daten selbst, geht zum Glück.
tschüß
Troll.Soft

http://www.qtforum.org/article/22557/ac ... excel.html
http://www.winfaq.de/faq_html/Content/t ... ip0566.htm
http://www.codeproject.com/KB/office/BasicExcel.aspx
bst
Beiträge: 56
Registriert: 7. November 2006 13:16
Wohnort: Ilsfeld

Beitrag von bst »

Auch Hallo,

Code: Alles auswählen

   range->setProperty("HorizontalAlignment", -4108); // Zentrieren
   range->querySubObject("Font")->setProperty("Bold", true); // Fett
   worksheet->querySubObject("Columns(1)")->setProperty("ColumnWidth", 20); // Spaltenbreite setzen
   workbook->dynamicCall("SaveAs (const QString&)", QString("e:/test/qttest2.xls")); // speichern
Was meinst Du mit "Kategorie definieren" ?

cu, Bernd
oldmanII
Beiträge: 9
Registriert: 11. Juni 2010 15:57

Beitrag von oldmanII »

Vielen Dank an euch beide.
Ich hatte mich am Freitag noch einmal rangesetzt, da noch keine Resonanz da war und war sogar erfolgreich. Ich hatte leider nicht mehr daran gedacht, dies hier auch kund zu tun.

Als generellen Hinweis kann ich noch folgendes geben:
Mit folgendem Code kann man sich die Interface der einzelnen Klassen ausgeben lassen. Als ich diese hatte war es kein weiter Weg mehr zur Lösung.

Code: Alles auswählen

    QAxObject* excel = new QAxObject( "Excel.Application", 0 );
    QFile file1("c://exelHlp.html");
    file1.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream out(&file1);
    out << excel->generateDocumentation();
    file1.close();

oldman
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Re: Excel Zellen formatieren

Beitrag von Marcus Breuer »

Hallo oldman,

ich versuche mich im Moment auch an der ganzen Geschichte und habe einige Fragen dazu. Hoffe, dass es nicht zu lange her ist.

Ich habe Deine/Eure Quelltexte mal ausprobiert und mir auch die HTML Datei erzeugt. Ich würde nur gerne wissen, wie kommt Ihr bspw.
in

Code: Alles auswählen

workbooks->dynamicCall("Add ()");
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
an das "Worksheets(int)", oder das "Add()"? Ich habe in der HMTL-Doku nichts derartiges gefunden oder bin schlicht zu blöd dafür. Aber wenn Du/Ihr mir
kurz sagen könntet, wo Ihr das herholt, dann wäre ich sehr dankbar.

Beste Grüße,
Marcus
bst
Beiträge: 56
Registriert: 7. November 2006 13:16
Wohnort: Ilsfeld

Re: Excel Zellen formatieren

Beitrag von bst »

Hi Marcus,

Du kannst Dir die Sourcen der Schnittstelle auch mit dem QT-Tool dumpcpp erstellen. Rufe mal "dumpcpp -h" auf.

Die benötigten Aufrufparameter findest Du dann (nicht ganz einfach) in der Header-Datei.

Oder aber Du schaust in der Excel-VBA-Hilfe nach welche Parameter die Funktion erwartet.

Worksheets ist eine Collection von Objekten vom Typ Worksheet. Für alle Collections gibt es denn immer zwei Zugriffsmöglichkeiten, über den Index oder über den Namen.

HTH, Bernd
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Re: Excel Zellen formatieren

Beitrag von Marcus Breuer »

Hallo Bernd,

vielen Dank für deine schnelle Antwort. Damit sollte ich etwas weiterkommen. Ansonsten schreibe ich einfach nochmal.

Beste Grüße,
Marcus
SvenP.
Beiträge: 1
Registriert: 30. April 2013 15:00

Re: Excel Zellen formatieren

Beitrag von SvenP. »

Hallo!
Zu Excel habe ich auch hier http://www.excel-helfer.de/excel-beding ... erten.html eine ganz hilfreiche Seite gefunden!
Lg Sven
Antworten