C# - Microsoft Excel és Word tippek

forráskód letöltése
Cikkünkben egy gyűjteményt adunk közre a Microsoft Excel és Word alkalmazásokhoz kapcsolódó apróságokból. Mutatunk egy példát arra, hogyan változtathatjuk a megnyitott dokumentum nézeteinek típusát egy property beállításával, illetve megismerhetjük, hogyan tudunk a vágólap segítségével egy Excel táblázatot a Word egy új dokumentumába másolni. Az utolsó apróság annak megismerésére irányul, hogy miként lehet a Microsoft Office csomag telepített összetevőit lekérdezni.
A mellékelt példa Form-ján egy három-füles TabControl-t találunk, melynek minden egyes füle alatt kipróbálhatunk egy tippet. Lássuk ezeket sorban.
Excel táblázat másolása
A feladatot három részre bontottuk, ennek megfelelően három metódusban valósítottuk meg a műveleteket. Az első metódus neve CreateExcelData, melyben létrehozunk egy Excel táblázatot.
Első lépésben létrehozunk egy példányt az Excel alkalmazásból, láthatóvá tesszük azt, majd létrehozunk egy WorkBook-ot.
ea = new Excel.Application();    
ea.Visible = true; 
Excel.Workbook ew = ea.Workbooks.Add(m);
Excel.Worksheet ws = (Excel.Worksheet)ea.Worksheets[1];
A következő lépésben a három WorkSheet közül az elsőben létrehozzuk a táblázatot.
for (int y=1;y<11;y++)
{
  for (int x=1;x<11;x++)
  {
    ws.Cells[x,y] = x;
  }
}
A művelet második része, hogy a CopyData metódusban a vágólapra másoljuk a táblázat egészét. Ennek érdekében aktívvá tesszük az első munkalapot, majd az A1 és J10 cellák közzé eső részt kijelöljük, és a Copy metódussal kimásoljuk.
Excel.Worksheet ws = (Excel.Worksheet)ea.Worksheets[1];
ws.Activate();
ws.get_Range("A1","J10").Select();
ws.UsedRange.Copy(m);
A Copy metódust a Missing.Value értékkel hívjuk meg. Az utolsó lépés, hogy a létrehozott új dokumentumba beillesztjük a vágólapon található táblázatot. Ennek művelete az InsertWordData metódusban található.
Az első lépés itt is a kapcsolatteremtés a Word alkalmazással, példányosítás és megjelenítés.
wa = new Word.ApplicationClass();
wa.Visible = true;
A következő lépés egy új dokumentum létrehozása, majd aktiválása.
Word.Document wd = wa.Documents.Add(ref m,ref m,ref m,ref m);
wd.Activate();
A dokumentum első részébe beírunk egy bevezető szöveget, majd beillesztünk két üres paragrafust.
Word.Range wr = wd.Range(ref m,ref m);
wr.Text = "Az alábbi adatok kerültek átmásolásra az Excel dokumentumból:";
wd.Paragraphs.Add(ref m);
wd.Paragraphs.Add(ref m);
A harmadik bekezdést kijelölve meghívjuk az adott Range objektum Paste metódusát, hogy a táblázat beillesztődjön.
wr = wd.Paragraphs.Item(3).Range;
wr.Paste();
Dokumentum nézetek
Ha megnyitunk egy Word dokumentumot, akkor a Nézet menü első négy menüpontjának egyikét kiválasztva különböző formában jeleníthetjük meg azt. Választhatjuk a Normál, vagy akár a webes megjelenítést is.
Örömteli hír lehet, hogy ezek a nézettípusok programból is beállíthatók, vagy adott esetben lekérdezhetők. A mellékelt példa második füle alatt ezeket próbálhatjuk ki. A nyomógomb segítségével megnyithatjuk a mellékelt 1.doc dokumentumot, majd a lista egy-egy elemét kiválasztva módosíthatjuk a nézet típusát.
Ezt a következőképpen tehetjük meg. Amennyiben kapcsolatot teremtettünk a Word alkalmazással, majd létrehoztuk a dokumentum objektumát, akkor a dokumentum adott ablaka rendelkezik egy View property-vel. Ekkor már a nézet különböző tulajdonságait érhetjük el.
A View objektum rendelkezik egy Type tulajdonsággal, melynek értéke hatféle lehet, attól függően, hogy milyen nézetben szeretnénk látni az adott dokumentumot. A Type property értéke a következők egyike lehet:
  • Word.WdViewType.wdMasterView
  • Word.WdViewType.wdNormalView
  • Word.WdViewType.wdOutlineView
  • Word.WdViewType.wdPrintPreview
  • Word.WdViewType.wdPrintView
  • Word.WdViewType.wdWebView
A lista egy elemét kiválasztva a fenti értékek egyikét rendeljük a property-hez.
switch(comboBox1.SelectedIndex)
{
  case 0:
    wd.Windows.Item(ref index).View.Type = Word.WdViewType.wdMasterView;
    break;
    ...
Telepített Office összetevők lekérdezése
A telepítéskor megadhatjuk, hogy mely Office összetevőket szeretnénk telepíteni. A kiválasztott összetevők telepítése után mindegyik összetevővel kapcsolatban egy kulcs jön létre a Rendszerleíró adatbázisban, a HKEY_CLASSES_ROOT főkulcs alatt.
Ezeknek a kulcsoknak a keresése és létezésének ellenőrzése adja meg az eredményt. Amennyiben létezik az összetevő (például Excel.Application) kulcs, akkor az adott összetevő létezik.

Első lépésben egy tömbben eltároltuk az összetevők neveit.
private string[] apps = new string[]{"Word", "Excel", "Access", "PowerPoint", "FrontPage", "Outlook"};
Ezt követően egy ciklusban megvizsgáljuk, hogy az adott kulcsot meg lehet-e nyitni. Amennyiben nem lehet megnyitni, mert nem létezik, akkor az OpenSubKey metódus visszatérési értéke NULL lesz. Ennek megfelelően jelenítjük meg az eredményt a ListBox kontrolban.
for(int i=0;i<6;i++)
{
  try
  {
    RegistryKey key = Registry.ClassesRoot.OpenSubKey(apps[i] + ".Application");
    if (key != null)
    {
      listBox1.Items.Add("Az MS " + apps[i] + " telepítve van a gépre.");
    }
    else
    {
      listBox1.Items.Add("Az MS " + apps[i] + " nincs telepítve a gépre.");
    }
    ...