loader
Foto

Excel használata Interop-ok segítségével

Megnézünk most egy office alkalmazást, egy Excel file-t fogunk olvasni és írni. A programot C# nyelven készítjük el és az Interop szerelvényt fogjuk alkalmazni, amely akár NuGet segítségével is telepíthető, ha nem lenne a Visual Studio-nkban megtalálható.

Indítsuk el a Visual Studio-t és hozzunk létre egy Console projektet, amelyenek a neve legyen ConsoleExcel1 (1. ábra). 

kep
1. ábra   A Console projekt létrehozása
 

A projektünkhöz hozzá kell adni a Microsoft.Office.Interop.Excel szerelvényt. Ezt a Solution Explorer Reference könyvtáránál tudjuk megtenni (2. ábra). Természetesen telepíthető ez a szerelvény a NuGet-ként is.

kep
2. ábra   A Microsoft.Office.Interop.Excel szerelvény hozzáadása a projektünkhöz
 

Készítsünk most egy excel file-t (3. ábra), amelynek a tartalmát kiolvassuk, illetve módosítani is fogjuk. 

kep
3. ábra   A felhasznált excel file
 

Az első programunk segítségével a cellák értékeit tudjuk kiolvasni. Először beolvassuk az excel file-t, majd létrehozzuk az ExcelApp nevű példányt az Application osztályból. Ez az osztály több névtérben, szerelvényben is megtalálható, ezért írtuk ki ennek az osztálynak a teljes elérési útvonalát.

Ezt követően megnyitjuk a file-unkat, és megadjuk azt is, hogy melyik lapból ("Munka1") akarunk adatokat kiolvasni.

Az "ieR" változóban tároljuk el a felhasznált sorok számát, majd az első oszlop celláit kiolvassuk és megjelenítjük a for ciklus segítségével.

class Program
    {
        static void Main(string[] args)
        {
            string fileNev = "d:\\WebElektronika\\pelda.xlsx";
            Microsoft.Office.Interop.Excel.Application ExcelApp = 
                new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Range ieR;

            Microsoft.Office.Interop.Excel.Workbook wb = ExcelApp.Workbooks.Open(fileNev);

            Microsoft.Office.Interop.Excel.Worksheet sh = wb.Sheets["Munka1"];
            Microsoft.Office.Interop.Excel.Range excelRange = sh.UsedRange;
            ieR = sh.UsedRange;
            
            for (int i = 2; i < ieR.Rows.Count + 1; i++)
            {
                Console.WriteLine(sh.Cells[i, 1].Value.ToString());
            }
            Console.ReadLine();
        }
    }

 

A Console ablakon megjelenítjük a hét napjait, tehát kiíratjuk az első oszlop tartalmát (4. ábra).

kep
4.   Az excel file első oszlopában lévő cellák tartalmának megjelenítése
 

Érdekességképpen megjegyezzük, hogy a .NET4-től megjelent a "dynamic" (5. ábra), amelyre a közeljövőben visszatérünk még. Annyit érdemes most tudnunk róla, hogy a dynamic-okat hiába keressük az Intellisense-ben....

kep
5. ábra   A dynamic típus
 

Módosítsuk most az előző programot, hiszen most nem kiolvasni szeretnénk, hanem az excel file-unkba fogunk írni. Ehhez a következő módosítások szükségesek :

class Program
    {
        static void Main(string[] args)
        {
            string fileNev = "d:\\WebElektronika\\pelda.xlsx";
            Microsoft.Office.Interop.Excel.Application ExcelApp = 
                new Microsoft.Office.Interop.Excel.Application();

            Microsoft.Office.Interop.Excel.Workbook wb = ExcelApp.Workbooks.Open(fileNev);

            Microsoft.Office.Interop.Excel.Worksheet sh = wb.Sheets["Munka1"];

            sh.Cells[3, 3].Value2 = "WebElektronika";
            sh.Cells[5, "C"].Value2 = "http://webelektronika.com";

            ExcelApp.SaveWorkspace();
            Console.WriteLine("OK");
            Console.ReadLine();
        }
    }

 

A programunk első része lényegében változatlan, sh.Cells-nél adjuk meg az adott cella koordinátáját. Fontos, hogy nem 0-tól, hanem 1-től indul az indexelés, illetve láthatjuk azt is, hogy az adott cellát meghivatkozhatjuk számmal, de az oszlopokat akár karakterrel is.

A programunk futtatásakor megjelenik a "Mentés" ablak, ahol az "új" excel file-unknak adhatunk másik nevet a mentéskor (6. ábra).

kep
6. ábra   A "Mentés" ablak segítségével el tudjuk menteni a módosított excel file-t
 

Indítsuk el most az Excel-t és nyissuk meg a módosított excel file-unkat! Láthatjuk, hogy a két sor beírása sikeres volt (7. ábra).

kep
7. ábra   Az új excel file tartalma
 

 



Egyéb cikkek

Mappa

További cikkeink ebben a témakörben

Régebbi cikkeink

Ebben a cikkben megismerjük a C# nyelv által használt változók nagy részét. Nézünk egy példát a típuskonverzióra.. . . .

Ebben a cikkben bemutatjuk a metódusok alapjait. Nem érintjük viszont például a túlterhelést, ezt egy következő részben tekintjük át.. . . .

Ebben a cikkben nem csak a metódusok túlterhelését nézzük meg egy konkrét példa segítségével, hanem szóba kerülnek a generikusok is, szintén egy kisebb projekt keretén belül.. . . .