Excel Automation



  • hallo

    erst will ich mal klarstellen, das ich noch ein ziemlicher anfänger bin, was Visual C++ betrifft...

    ich habe hier im forum schon nach meinem problem gesucht mit der suchfunktion und in den FAQ, jedoch nichts gefunden, das mir wirklich hilft...

    mein ziel ist lediglich eine variable z.b. vom typ CString in eine bestimmte Zelle eines Excel-Sheet (welches neu erstellt werden soll) zu schreiben. bisher habe ich folgenden code geschrieben, jedoch ich weiss nicht mal ob ich überhaupt auf dem richtigen weg bin:

    // OLE Variant for Optional.
        COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
        _Application app;  // app is the Excel _Application object
    	_Worksheet sheet;  // sheet is the Active Worksheet 
    	_Workbook book;	   // wbk is the Active Workbook
    	Worksheets sheets;
    	Workbooks books;
    
        // Start Excel and get Application object...
        if(!app.CreateDispatch("Excel.Application"))
        {
            AfxMessageBox("Couldn't start Excel.");
        }
        else
        {
            // Make Excel Visible
            app.SetVisible(TRUE);
    
    		// Variablen initialisieren
    		books = app.GetWorkbooks();
    		book = books.Add(VOptional);
    
    		sheets = book.GetWorksheets();
    		sheet = sheets.GetItem(COleVariant((short)1));
    
    		AfxMessageBox ("Excel is Running!");
        }
    

    ich wäre extrem dankbar wenn mir einer sagen könnte ob das bisher richtig ist und wie ich nun etwas in eine zelle des Arbeitsblattes schreiben kann.

    schon mal danke im voraus 🙂





  • Yeah, vielen Dank olsen, mit der Klasse komme ich bestimmt weiter 🙂

    👍



  • ich hätte da noch eine frage...

    die excel-datei, welche erstellt wird, hat die endung ".csv"...

    weisst du per zufall, ob es irgendwie ne möglichkeit, dass das file das erstellt wird dann auch mit ".xls" endet, also genau so wie man den dateinamen dem konstruktor übergibt ?

    was ist überhaupt eine *.csv-Datei ??



  • moin,

    kommentiere mal 'tabelle.convert(";")' aus, dann sollte da ´ne xls-datei draus werden. ich hatte damals glaube ich probleme als ich strings in eine xls-datei eintragen wollte. 'csv' steht für "comma-separated-values", wobei du der convert-funktion das trennzeichen übergibst. csv-dateien lassen sich mit excel problemlos öffnen.



  • vielen dank olsen, was würde ich nur ohne dich tun... 🙂

    ich weiss, du hast die klasse ja nicht geschrieben, aber weisst du zufällig, ob es eine möglichkeit gibt eine zeile fett zu machen ? d.h. die titelzeile mit den spaltentiteln drin würde ich gerne fett machen, jedoch habe ich leider keine methode dafür gefunden...



  • Erst holst Du Dir den Bereich (eine oder mehrere Zellen), dann setzt Du die Schrift-Eigenschaft Fett auf Wahr:

    Range rn = m_wsWorksheet.GetRange( COleVariant( "1"), COleVariant( "1" ));
    Font fn = rn.GetFont();
    
    fn.SetItalic( covTrue );
    fn.ReleaseDispatch();
    

    Hab den Code leicht umgeändert, als mein Original, aber ich denke es sollte so auch funktionieren.
    GetRange( 1, 1 ) sollte die erste Zeile markieren. Ansonsten könnte man z.B. mit GetRange( "A1", "A5" ) 5 Zellen Waagerecht auswählen...


Anmelden zum Antworten