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