Excel ansprechen ohne MFC



  • Hallo Forum...
    nu steh ich wieder da mit meinem kurzen Hemd 😞

    Ich hab ja mit Eurer Hilfe mein CLI-Projekt ans Laufen gebracht.
    Jetzt steht die nächste Aufgabe an:
    Verbindung zu einer Excel-Arbeitsmappe aufnehmen und Daten sowohl lesen als auch schreiben.

    Alles was ich gefunden habe bezieht sich auf die MFC und die hab ich ja nunmal nicht in meinem Projekt.
    Wie kann ich da anfangen?
    Hat vielleicht jemand nen Link zu einem Tutorial?

    Danke im Voraus
    Gruss Carsten



  • Google mal nach "Office Primary Interop Assemblies".
    Gruss Simon



  • Ok, da hab ich was gefunden...

    Jetzt hänge ich aber wieder, weil es natürlich nix in C++ gibt.

    Folgender Mustercode:

    //Start Excel and get Application object.
    		oXL = new Excel.Application();
    		oXL.Visible = true;
    
    		//Get a new workbook.
    		oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
    		oSheet = (Excel._Worksheet)oWB.ActiveSheet;
    

    Mein Code, bis jetzt:

    [cpp]
    	//Excel-Variablen
    	private: Microsoft::Office::Interop::Excel::Application ^ oXL;
    	private: Microsoft::Office::Interop::Excel::Workbook ^ xlWorkbook;
    	private: Microsoft::Office::Interop::Excel::Worksheet ^ xlWorksheetSetup;
    	private: Microsoft::Office::Interop::Excel::Worksheet ^ xlWorksheetGenerate;
    
    ....
    
    		//Anwendung starten
    		oXL = gcnew Microsoft::Office::Interop::Excel::Application();
    		oXL->Visible=true;
    		//Workbook öffnen
    		xlWorkbook = oXL->WorkbookOpen(strTablename);
    
    [/cpp]
    

    Die Zeile nach //Workbook öffnen funktioniert natürlich nicht.
    Jetzt müsste aber doch xlWorkbook ein Object von oXL sein oder?
    Kann mir mal jemand auf die Sprünge helfen, wie sich das verhält?

    Dankee



  • Jetzt hänge ich aber wieder, weil es natürlich nix in C++ gibt.

    Was nicht verwunderlich ist, denn es ist ja eine .NET Geschichte.
    Wenn schon C++/CLI.



  • http://msdn2.microsoft.com/en-us/library/aa168292(office.11).aspx
    Würde sagen das hier ist die ganz grosse Fundgrube.





  • 🙄

    Ich raff das nicht, was nu .NET, was C++, was MFC und was auch immer jetzt hier Ambach ist...

    Ich hab eine Windows 32 Anwendung erstellt.
    Wonach soll ich denn suchen, wenn ich Lösungen brauche ?
    Immer wieder stolpere ich über den falschen, nennen wir es mal, Dialekt.
    Weil C++ scheint es ja grundsätzlich alles zu sein.

    Das Beispiel war ursprünglich übrigens C#. Das hab ich erkannt 🕶



  • Danke für den Link,
    irgendwo aus der Ecke kam auch mein Beispiel.
    Aber wie öffne ich denn jetzt das Workbook mit C-wasauchimmer ?



  • War das jetzt richtig?

    xlWorkbook = oXL->Workbooks->Open(txtGenTable->Text,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing,Type::Missing);

    Die Arbeitsmappe geht zumindest auf 😃



  • 🙄
    boah, ich geh am Stock....

    Wie bekomme ich denn den Namen der Sheets raus?



  • Ausprobieren, Experimentieren, Nachlesen...
    Ich denke es bringt nichts wenn Du hier im Forum "Live- Entwickelst".
    Simon



  • *lach*
    na herzlichen Dank...

    Ich bin M.E. nicht auf den Kopf gefallen aber ich komme nun mal nicht weiter.

    Meiner Meinung nach muss ich mit einer Schleife durch alle Sheets blättern und schauen, wie jedes heisst.
    Nur weiss ich nicht, wie ich auf den Index der Sheet-Sammlung zugreife.

    Vielleicht kann sich ja mal jemand Anderes dazu herab lassen einem Anfänger einen Tipp zu geben. 😞

    Und by the way... experimentiere ich bereits seit über zwei Wochen, da wird ja wohl die Hoffnung auf etwas Unterstützung erlaubt sein!



  • Sodele, an alle, die auch wie die Bekloppten suchen und probieren...

    Es geht auch so:

    for each(Excel::Worksheet ^ WS in xlWorkbook->Worksheets)
    {
    MessageBox::Show(WS->Name);
    }
    

    Aber damit weiß ich immer noch nicht, ob es möglich ist, direkt über den Index ein Worksheet zu erreichen.

    Wenn ich eine for-Schleife in dieser Form habe:

    [cpp]
    for(int i=0;i<=xlWorkbook->Worksheets->Count -1;i++)
    [/cpp]
    

    Müsste ich doch mit dem Index "i" rigendwie auch an die sheets kommen.


Anmelden zum Antworten