C# - Műveletek Excel-állományokkal

Windows Script Host lehetőségei 10. rész

forráskód letöltése
A sorozat ezt megelőző számaiban mutattunk példát olyan esetekre, amikor a Microsoft Office programcsomag Word alkalmazását értük el parancsállományunkból. Cikksorozatunk mostani számában megismerkedhetünk azzal, hogy miként érhetjük el a programcsomag Excel alkalmazását. A cikkben létrehozunk egy állományt, és annak első munkalapján egy formázott táblázatot.
A példaprogramban a Form-ra feltettünk egy DataGrid kontrolt, szemléltetendő, hogy milyen adatok jelennek meg a létrehozandó Excel munkalapon. A program indulásakor a rács tartalmát az alkalmazás mappájában található products.xml állományból töltjük be. Az egyszerűség kedvéért az Excel táblázatot nem ebből hozzuk létre, ez csupán a minta.
A műveletet a Wsh10.wsf állományban található kód végzi el, melyet a LÉTREHOZÁS gomb megnyomásakor futtatunk le a Process osztály Start metódusának segítségével.
A Wsh10.wsf állomány futáskor két paramétert kap. Az első paraméter egy elérési útvonal – annak a mappának az elérési útvonala, melyben az állományt létrehozzuk (például C:\test) -, a második paraméter pedig egy szám, amely meghatározza, hogy az állomány XLS, vagy HTML kiterjesztést kapjon. Az űrlapra helyezett jelölőnégyzettel lehet jelezni, hogy a mentés HTML formátumban történjen.
Az állományok mindegyike a megadott rendszermeghajtó gyökerében létrehozott /test mappába kerül.
Lássuk tehát, hogyan lehet egy formázott táblázatban elhelyezni az adatokat. Első lépés, hogy létrehozunk egy példányt az Excel.Application objektumból.
var excelApp = WScript.CreateObject("Excel.Application");
Létrehozunk egy új munkafüzetet.
var newWB = excelApp.Workbooks.Add();
Ennek első, Munka1 nevű lapjára hivatkozunk.
var sheet1 = newWB.Worksheets("Munka1");
A létrehozandó táblázat egy 6x3-as mátrix lesz, mely egy tömbként is kezelhető. Ekkor minden utasítás a tömb egészére vonatkozik. Ehhez használjuk a Range objektumot. A tömb egészét megformázzuk az AutoFormat metódussal, amelyben az első paraméter vonatkozik a formázó stílusra.
sheet1.Range("B1:D6").AutoFormat(8,true,true,true);
A táblázat fejléce lesz az „ID”, „Name”, és a „Price” felirat. Ekkor már a cellákra, mint önálló egységekre hivatkozunk.
sheet1.Cells(1,2).Value = "ID";
sheet1.Cells(1,3).Value = "Name";
sheet1.Cells(1,4).Value = "Price";
A táblázat értékeit ezzel analóg módon írjuk az állományba.
Utolsó lépésként megvizsgáljuk, hogy a második parancssori argumentum milyen értékű. Amennyiben 0, vagyis a jelölőnégyzet nem volt jelölt, akkor a létrehozandó állomány xls kiterjesztésű, egyébként html.
if (saveType == 0)
{
  newWB.SaveAs(newFile + "\\sample.xls");
}
else
{
  newWB.SaveAs(newFile + "\\sample.html",44);
}
Az utóbbi esetben az xlFileFormat konstans értékét kell helyesen megadni, mely jelen esetben az xlHtml értéknek megfelelő szám, vagyis 44.

Windows Script Host lehetőségei cikksorozat