Trebam pomoć za povezati c# i excel

poruka: 8
|
čitano: 3.479
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Trebam pomoć za povezati c# i excel
pitanje

htio bih napraviti direktan upis u excel tablicu izvana i to mi je uspjelo pomoću odbc navodeći naziv kolone  i ID-a

no ja bih htio to postići direktnim navođenjem naziva ćelije npr A1

pozdrav

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Trebam pomoć za povezati c# i excel

Probaj ovdje ako što pomogne...

Private
17 godina
neaktivan
offline
RE: Trebam pomoć za povezati c# i excel

Izdan je OpenXML SDK (za Excel 2007) pa možeš i s tim.

17 godina
odjavljen
offline
RE: Trebam pomoć za povezati c# i excel
naxeem kaže...

Izdan je OpenXML SDK (za Excel 2007) pa možeš i s tim.

 
Da, OpenXML je samo za verziju 2007 i to je uglavnom dobar problem. Mi to rješavamo na način da dodamo potrebne reference za korištenje excela (ne znam koje su točno, moram pogledati u projektu), kreiramo 2 objekta: 1 tipa excel aplikacija i 1 tipa excel dokument. Onda imaš sve opcije na raspolaganju kao da radiš u excelu. Proguglaj malo i naći ćeš trilijun jednostavnih primjera. I između ostalog i trčanje po tablici (sheet-u) i mogućnost pronalaska sasvim konkretne ćelije (cell-a). Ja sam prije nekog vremena morao importirati gomile podataka u bazu (uz određene izmjene podataka "on the fly") i na taj način sam sve riješio.
Freak Show Inc.
Poruka je uređivana zadnji put ned 17.5.2009 11:42 (Friday).
17 godina
neaktivan
offline
RE: Trebam pomoć za povezati c# i excel

Hm, hm kakva je to metoda? Tražeći "Excel application object" dobio sam interop stvari.

17 godina
odjavljen
offline
RE: Trebam pomoć za povezati c# i excel
naxeem kaže...

Hm, hm kakva je to metoda? Tražeći "Excel application object" dobio sam interop stvari.

 
Da, upravo tako. Baš sam sada tražio primjer koda ovdje kod kuće ali nemam. Uglavnom, logika je takva kao što sam gore napisao. Probat ću sutra postati cijelu metodu za jedan edit excel datoteke (uz prethodno traženje pojma i lociranje ćelije).
Freak Show Inc.
17 godina
protjeran
offline
RE: Trebam pomoć za povezati c# i excel
naxeem kaže...

Hm, hm kakva je to metoda? Tražeći "Excel application object" dobio sam interop stvari.

 Praktički isti pristup se koristi i u VCL-u:

Na formu postaviš TExcelApplication, TExcelWorkbook i TExcelWorksheet komponente (ili dinamički ih alociraš). 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:


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.:

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:

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:

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

Poruka je uređivana zadnji put ned 17.5.2009 18:47 (Tracer).
16 godina
neaktivan
offline
Trebam pomoć za povezati c# i excel
autorov komentar

Pozdravljam cjenjene kolege i zahvaljujem na pomoći.

Riješio sam to ovako:

           Excel.Application oXL;
            Excel._Workbook oWB;
            Excel._Worksheet oSheet;
            Excel.Range oRng;
     
            oXL = new Excel.Application();
            oXL.Visible = true;
      
            oWB = (Excel._Workbook)(oXL.Workbooks.Open("imexcelfajla",0,  false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
           true, false, 0, true, false, false));//( Missing.Value ));
       
            oSheet = (Excel._Worksheet)(oWB.Worksheets[1]);
        
            oSheet.Cells[11, 3] = 0;

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice