Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Auf Exel Tabelle zugreifen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.03.2004, 12:41 Uhr
~Oberlix
Gast


Ich habe Borland 5 und möchte auf eine Exel Tabelle zugreifen !
Lesen und schreiben auf Zellen.

Wie mache ich das ?

Ich währe froh für ein Beispiel danke.


Gruss Oberlix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.03.2004, 10:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hi,
ich glaub du hast 2 möglichkeiten
1.) Du kannst excel über nen ODBC ansprechen. Ein Beispiel dafür findest du unter den downloads dieses Forum. Ist aber "Datenbanklike", das heisst du kannst immer nur einen kompletten record auf ne zeile ballern und nicht sagen schreibe in zelle xy eine 5 oder sowas.
vorteil hierbei ist das das relativ einfach ist.

2) Damit hab ich mal ne weile rumgespielt.
das überstieg einfach meinen horizont. Habs nicht wirklich verstanden war mehr ein gebastel und puzzel und ewiges google suchen bis ich das hinbekommen habe was ich wollte.
Ich poste dir mal ein bisschen Quellcode damit du nen grundgerüst hast auf dem du aufbauen kannst... aber wie gesagt da kann ich ausnahmsweise mal nur empfehlen sich ein buch dafür zu kaufen anstatt sich ewig damit rumzuschlagen ohne ein plan davon zu haben...



C++:
//die dinger hier muss du importieren. bei dem beispiel ist das für office 2000
wenn du eine andere version benutzt heissen die bibliotheken entsprechend anders (also bei office 97 oder so glaub ich z.b. mso8.dll usw...)
#import <mso9.dll> no_namespace rename("DocumentProperties", "DocumentPropertiesXL")  
#import "C:\Programme\Gemeinsame Dateien\Microsoft Shared\VBA\VBA6\vbe6ext.olb" no_namespace  
#import <excel9.olb> rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

void dump_com_error(_com_error &e)
{
    _tprintf(_T("Oops - hit an error!\n"));
    _tprintf(_T("\a\tCode = %08lx\n"), e.Error());
    _tprintf(_T("\a\tCode meaning = %s\n"), e.ErrorMessage());
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());
    _tprintf(_T("\a\tSource = %s\n"), (LPCTSTR) bstrSource);
    _tprintf(_T("\a\tDescription = %s\n"), (LPCTSTR) bstrDescription);
}


struct StartOle {
    StartOle() { CoInitialize(NULL); }
    ~StartOle() { CoUninitialize(); }
} _inst_StartOle;

using namespace Excel;
_ApplicationPtr pXL;
try {
        if (pXL.GetInterfacePtr() == NULL) pXL.CreateInstance(L"Excel.Application.9"); //check ob es schon laeuft


    pXL->Visible = VARIANT_FALSE; // oder VARIANT_TRUE wenn man sehen will was der macht
        WorkbooksPtr pBooks;
        _WorkbookPtr pBook;    
        WorksheetsPtr pSheets;
        _WorksheetPtr pSheet1,pSheet2,pSheet3;

        
        pBooks= pXL->Workbooks;
        pBook = pBooks->Add((long)Excel::xlWorksheet);

        pSheets = pBook->GetWorksheets();
        pSheet3=pBook->ActiveSheet;
        pSheet3->Name= "Blattname3";
    }

                    pXL->Range["Blattname3!B5]->Value= 4711;
                //usw. was auch immer du noch alles so machen willst...

        pBook->SaveCopyAs(dir);
        pBook->Saved=true;
        pBook->Close(true);    //damit der die aktuelle nicht speichert
        pXL->Quit();

//        CoUninitialize();
    
    } catch(_com_error &e){dump_com_error(e);}




so wie gesagt das ganze ist ziemlich heikel und übersteigt bei weiten meinen horizont als das ich dir dazu viel erklären könnte....viel spass beim puzzeln.
ach so wenn du mal befehle brauchst am besten in excel als macro aufzeichen und sich dann angucken wie der den spass nennt. Dann kannst du "so du glück hast" das fast 1:1 in c übernehmen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: