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 ;)