Excel-Datei in exe-Datei integrieren



  • Hallo

    Ich habe ein C++ Programm, welches per OLE in eine vorgefertigte Excel-Datei hineinschreibt. Mein Ziel ist es, diese Datei in die exe-Datei zu integrieren und sie an einer bestimmten Stelle im Programm daraus wieder zu "entpacken".

    Ich habe schon einiges über Resourcen-Dateien gelesen, damit wird es wohl auch gehen. Aber ich weiß nicht, wie ich beim C++Builder aus der Excel-Datei eine Resource mache.
    Und so richtig weiß ich auch nicht, wie ich sie dann da wieder herausbekomme.

    Kann mir jemand helfen?

    Danke im Voraus: Tobias Neubert



  • hi,

    also in die XLSDatei.rc (Beispielname) sollte folgendes:

    XLSFile RCData "Dateiname.xls"
    

    so das machste zur Res-Datei. (brc32 XLSDatei.rc)

    Nun bindest du die RES-Datei in die Unit wo du die Excel-Datei brauchst:

    #pragma resource "XLSDatei.res"
    

    achte drauf ob der Pfad korrekt ist.

    Um die Excel-Datei nun zu Speichern hier nochn bissl Code:

    SaveXLS()
    {
      HRSRC rsrc = FindResource(HInstance, "XLSFile", RT_RCDATA);
      if (!rsrc) return "";
    
      DWORD Size = SizeofResource(HInstance , rsrc);
      HGLOBAL MemoryHandle = LoadResource(HInstance,rsrc);
      if (MemoryHandle == NULL) return "";
    
      BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle);
    
      TMemoryStream *MyStream =  new TMemoryStream;
       MyStream->Write(MemPtr, Size);
       MyStream->Position = 0;
    
      //Um in den Temp Ornder zu Schreiben:
       //MyStream->SaveToFile(AnsiString(getenv("temp"))+"\\Test.xls");
    
      //Um im Programmordner zu Schreiben:   
       MyStream->SaveToFile(ExtractFilePath(ParamStr(0))+"Test.xls");
      delete MyStream;
    }
    

    Denk dran die Excel-Datei nach gebrauch zu löschen oder vorher zu testen ob diese schon Existiert da beim nächsten Extrahieren sonst ein Fehler auftritt.

    Müsste eigentlich alles so klappen 🙂



  • Vielen Dank!
    Ich probier's gleich morgen früh aus!
    😃

    Tschüß: Tobias



  • Juhuu, es funktioniert.
    Nochmals vielen Dank für die Mühe!

    Tobias



  • Hallo Tobias,

    ich interessiere mich auch dafür eine Excel-Datei zu öffnen und dann in die Datei zu schreiben. Leider habe ich noch keine Erfahrungen damit.
    Vielleicht bist Du ja so nett und schickst mir mal ein paar Code-Zeilen aus deinem Programm wie ich damit umgehe.
    Auserdem finde ich das was Du hier gefragt hast sehr interesant. Das so etwas geht wusste ich noch gar nicht! Wie erzeugt man *.rc Datei?

    Also ich Programmiere schon sehr lange mit Boland C++ aber wie Du siehst tappe ich hier total im dunkeln.

    Wäre schön wenn Du mir weiter hilfst! Du kannst mir auch auf wobbler@gmx.de mailen!

    Vielen Dank



  • @Nontschew
    Die *.rc Datei kannste selbst erstellen.

    Dann kannst du in dem Ordner wo du die *.rc hast ne Batch-Datei erstellen und diese einfach ausführen.

    mkres.bat

    brc32 dateiname.rc
    


  • Kannst sie auch einfach dem Projekt hinzufügen, dann sparst du dir das mit der Batch.

    Wegen dem Ausführen der Excel-Datei solltest du vielleicht nen neuen Thread aufmachen...


Anmelden zum Antworten