Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

[BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication

  • 7 odgovora
  • 4.713 pregleda

Najnovija ↓

[BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 14.09.2008. u 20:58 · pre 220 meseci #1
Zanima me da li je itko uspješno uspio instalirati XLSReadWriteII 4 komponente za C++ Builder 2006 tj. Turbo C++ 2006? Ono što uspijem jest dodati glavnu bpl biblioteku, te klikom na gumb components mi prikaže sve tri postojeće komponente, no nikako da ih uspijem postaviti na neku paletu pa da ih mogu koristiti. Pokušao sam indirektno stvarajući novi paket ali tad me traži LIB biblioteku komponente koja ne dolazi u source-u s njom... Naravno, ne postoji niti source paketa ili sl., pa da se može direktno to instalirati...
Re: [BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 20.09.2008. u 17:13 · pre 220 meseci #2
Na sreću, ove komponente mi više ne trebaju. Skužio sam kako se radi sa već ugrađenim TExcelApplication i ostalim Excel komponentama. Ako nekome bude trebalo neka javi. Ovo isto vrijedi i za MS Word komponente.
Re: [BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 21.09.2008. u 19:10 · pre 220 meseci #3
Druze, mene to zanima. Bas sam krenuo da radim neku aplikaciju koja bi ucitavala excel fajl i izvlacila sadrzaj odredjenih kolona, izmedju ostalog. Zastao sam sa radom trazeci na netu neka upustva vezano za TExcelApplication, ali slabo ima sta na engleskom. Nasao sam ovaj forum (http://cpp.developpez.com/faq/bcb/?page=msofficeexcel), cini mi se da je vrlo dobar, ali je na francuskom. Poceo sam da se bakcem sa prevodiocima ne bih li sta skontao, ali bi mi jako koristilo i kada bih imao neka uputstva na nasem jeziku, tako da bih ti bio vrlo zahvalan ukoliko bi mi ukratko objasnio rad sa tim komponentama ili uputio na neki tutorijal ukoliko si bio uspesniji u pretrazi od mene.
Re: [BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 21.09.2008. u 22:00 · pre 220 meseci #4
Na formu postavi

TExcelApplication, TExcelWorkbook i TExcelWorksheet komponente. Redoslijed je takav da ova prva predstavlja aplikaciju i da preko njenih članica pristupaš direktno samo stvarima vezanima za Excel općenito. Druga i treća komponenta su za rad s podacima. Točnije, ova zadnje (ExcelWorksheet) jer se preko nje vrši upis i čitanje iz Excel-a.

Pisanje u Excel:

Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ExcelApplication1->Connect();
    ExcelApplication1->Workbooks->Add(EmptyParam,LOCALE_USER_DEFAULT);
    ExcelWorkbook1->ConnectTo(ExcelApplication1->ActiveWorkbook);
    ExcelWorksheet1->ConnectTo(ExcelApplication1->ActiveSheet);
    ExcelApplication1->set_SheetsInNewWorkbook(LOCALE_USER_DEFAULT, 1);

    ExcelWorksheet1->Cells->set_Item(TVariant(1), TVariant("C"), TVariant(5));  // upis konstante
    ExcelWorksheet1->Cells->set_Item(TVariant(2), TVariant("C"), TVariant(3));  // upis konstante
    ExcelWorksheet1->Cells->get_Range(TVariant("C1"), TVariant("C2"))->Interior->set_Color((TVariant)RGB(192, 192, 192)); //farbanje
    ExcelWorksheet1->Cells->set_Item(TVariant(3), TVariant("C"), TVariant("=SUM(C1:C2)")); // upis formule

    ExcelApplication1->set_Visible(LOCALE_USER_DEFAULT,xlSheetVisible);
}


Znači, prvo pokreneš gornju funkciju koja će pokrenuti Excel. Poželjno je da sve te dijelove koda (pozive funkcija Connect) eventualno staviš u try-catch jer možda korisnik nema uopće instaliran Excel ili se dogodi neka greška pri inicijalizaciji. Nakon toga se stvara prazan dokument i onda u njega se zapišu dva broja. Treća vrijednost je string tj. formula za tu ćeliju. Pokreni pa ćeš vidjeti rezultat.

a nakon toga za čitanje koristiš get metode. Npr.:

Code:
ShowMessage((TVariant)ExcelWorksheet1->Cells->get_Item(TVariant(3), TVariant("C")));


Ima još i brdo drugih funkcija pa možeš direktno mijenjati font i veličinu nad pojedinom ćelijom:

Code:
ExcelWorksheet1->Cells->get_Range(TVariant("A1"), TVariant("A1"))->Font->set_Bold(TVariant(true));  
ExcelWorksheet1->Cells->get_Range(TVariant("A1"), TVariant("A1"))->Font->set_Size(TVariant(20));


ili mijenjati širinu ćelije:

Code:
ExcelWorksheet1->Cells->set_ColumnWidth(TVariant(6));


Sve ovisi što ti treba, ali mislim da će ti ovo biti za sada i više nego dovoljno ;)
Re: [BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 23.09.2008. u 02:29 · pre 220 meseci
izmenjeno 2 puta, poslednji put cdjole 23.09.2008. u 02:43
  1. cdjole23.09.2008. u 02:43zapis iz teksta poruke
  2. cdjole23.09.2008. u 02:42zapis iz teksta poruke
#6
Malo sam se zanimao sa ovim, pa sam naisao na problem. Pokusao sam da napravim malu aplikaciju koja bi ucitala .xls fajl i ispisala u memo sadrzaj prvih nekoliko celija neke kolone (npr. kolone "B").

Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if ( OpenDialog1->Execute() )
    {
        _WorkbookPtr wb;
        _WorksheetPtr ws;

        AnsiString FN = OpenDialog1->FileName;

        ExcelApplication1->Connect();

        wb = ExcelApplication1->Workbooks->Open(WideString(FN));
        ws = ExcelApplication1->ActiveSheet;

        for (int i = 1 ; i <= 5; i++ )
                Memo1->Lines->Strings[i] = (String)((TVariant)ws->Cells->get_Item(TVariant(i),TVariant("B")));
        
        ExcelApplication1->Disconnect();
     }
}


Problem je sto mi ovo nista ne ispisuje u memo (tj. tacnije bi bilo da kazem da ispisuje nista, odnosno posle ovog prvih 6 redova u memo-u bude prazno, kao da udari samo ENTER), ne znam da li sam ovaj TVariant dobro konvertovao u String ili je nesto drugo u pitanju, pa bi mi dobrodosla bilo kakva pomoc ukoliko ima nekih ideja.
Re: [BCB] Instalacija XLSReadWriteII 4 komponenti / TExcelApplication 23.09.2008. u 09:41 · pre 220 meseci #7
Probaj ovako:

Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    _Workbook* WB;

    ExcelApplication1->Connect();
    WB = ExcelApplication1->Workbooks->Open(WideString("c:\\test.xls"),
                                EmptyParam, EmptyParam, EmptyParam,
                                EmptyParam, EmptyParam, EmptyParam,
                                EmptyParam, EmptyParam, EmptyParam,
                                EmptyParam, EmptyParam, EmptyParam, TVariant(0));

    ExcelWorkbook1->ConnectTo(WB);
    ExcelWorksheet1->ConnectTo(ExcelWorkbook1->Worksheets->get_Item(TVariant(1)));

    Memo1->Lines->Clear();
    for(int i = 1; i < 10; i++)
        Memo1->Lines->Add((TVariant)ExcelWorksheet1->Cells->get_Item(TVariant(i), TVariant("A")));

    ExcelApplication1->set_Visible(LOCALE_USER_DEFAULT,xlSheetVisible);
}


Ovaj dio koda čita prvih 10 redova stupca A i ispisuje ih u memo.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme