HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Excel függvények futtatása, telepített Excel nyelve


Excel programozása 3. rész

Példaprogram letöltése

8077 bájt

Sorozatunk mostani részében azt vizsgáljuk, hogy miként tudunk az egyes cellákba nem csak konstans értékeket írni, hanem tetszőleges Excel függvényeket is elhelyezni, valamint a függvény által számított értéket programból kiolvasni.
Vizsgálódásunk további tárgya az Excel nyelvének lekérdezése. Erre azért is szükségünk lesz, mert például a SUM függvényt a magyar nyelvű Excel-be már SZUM függvényként kell írni. Így a nyelv ismerete fontos, ha fel akarjuk készíteni alkalmazásunkat többféle Excel verzió kezelésére.

Létrehozunk egy új Excel munkalapot a már szokásos módon és egyik oszlopába számokat írunk.
    private void button1_Click(object sender, System.EventArgs e)
    {
      for (int i=1; i<10; i++)
      {
        ws.Cells[i, 1] = i*12.34;
      }    
A feladatunk az lesz, hogy ezen oszlop számait összegezzük az Excel SUM függvényével és az összeget jelenítsük meg saját alkalmazásunkban is. Ehhez szükségünk lesz a Range objektumra, mely most azt a cellát fogja leírni, ahová az Excel függvényt szúrjuk be.
      Excel.Range er = (Excel.Range)ws.Cells[10, 1];      
Mielőtt elvégeznénk a függvény beszúrását egy cellába, el kell döntenünk programból, hogy milyen nyelvű Office lett telepítve. Ettől függ majd hogy SUM, vagy SZUM nevű függvényt kell-e alkalmaznunk. (Alkalmazásunkban most csak az angol, illetve a magyar nyelvű Office verziókkal foglalkozunk.)
Az Office nyelv azonosítóját lekérdezhetjük az Excel alkalmazás objektumának LanguageSettings property-jén keresztül elérhető get_LanguageID függvénnyel.
      label3.Text = ea.LanguageSettings.get_LanguageID(Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDInstall).ToString();
Magyar nyelvű Office esetén 1038 lesz a visszaadott szám. A get_LanguageID függvény vár egy paramétert is, mely az alábbiak egyike lehet:
Konstans Leírás
msoLanguageIDHelp Az Office súgójának nyelve.
msoLanguageIDInstall A telepített Office nyelve.
msoLanguageIDUI Az Office felhasználói felületének nyelve.
Az Office nyelvét tehát vizsgálhatnánk a get_LanguageID függvény által visszaadott szám alapján is, de van erre egy még egyszerűbb módszer. Ez pedig a get_LanguagePreferredForEditing függvény. Ennek paraméterként meg kell adnunk egy nyelvet, majd a függvény igaz értékkel tér vissza, ha az Office által az adott nyelv támogatott.
A nyelv ismeretében már tudjuk, hogy a SZUM, vagy a SUM függvényt kell-e használnunk, mely funkciójában nyilván azonos, csupán a leírása más. A függvényt a már létrehozott Range objektum FormulaArray property-n keresztül helyezhetjük el sztringként. Ezt a sztring pont olyan lesz, mint amikor manuálisan írunk be egy cellába egy Excel függvényt.
      if (ea.LanguageSettings.get_LanguagePreferredForEditing(Microsoft.Office.Core.MsoLanguageID.msoLanguageIDHungarian))
      {
        er.FormulaArray = "=Szum(A1:A9)";
      }
      else
      {
        er.FormulaArray = "=Sum(A1:A9)";
      }
A cella eredményét most a NumberFormat property-n keresztül egyedi formájúvá alakítjuk.
      er.NumberFormat = "# ##0,00 Ft";
      er.Font.Italic = Convert.ToInt32(true);     
Végül már csak az eredményt kell kiolvasnunk és megjelenítenünk az alkalmazásunkban. Erre két mód is létezik: az egyik a Range objektum Text property-je, a másik a Value2 property. Mindkét esetben megkapjuk az eredményt, de Text property-n keresztül a formázott értéket kapjuk vissza szövegként, míg a Value2 property-n keresztül csak az értéket számként.
      label1.Text = er.Text.ToString();
      label2.Text = er.Value2.ToString();
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 301. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |