HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Microsoft Word trükkök


Példaprogram letöltése

19892 bájt

A Microsoft Office alkalmazás-csomag elemei – hála a telepítéskor a rendszerbe épülő komponenseiknek – programjainkból elérhetőek, és vezérelhetőek. Képességeiket a kiterjedt objektummodell elemeinek segítségével érhetjük el, melyek számtalan metódussal rendelkeznek. A metódusok egy része könnyen meghívható, paraméterezésük egyszerű. Vannak azonban olyanok, melyeket összetettebb dolog a kívánt funkció végrehajtása érdekében felhasználni. Cikkünkben néhány nehezebben megvalósítható funkció megoldására mutatunk példát.

A mellékelt példaprogramban 4 funkciót mutatunk be. A négy funkció az alkalmazás űrlapjának négy szegmensében található kontrolok segítségével próbálható ki.
Ugrás egy tetszőleges bekezdésre
A Form első szegmensében arra mutatunk példát, hogy hogyan lehet az aktív dokumentum megadott bekezdésére navigálni a kurzort. Ehhez a nyomógombbal megnyitjuk a több paragrafust tartalmazó sample01.doc dokumentumot.
object file = Application.StartupPath + "\\sample01.doc";
wd = wa.Documents.Open(ref file,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
A következő lépés, hogy a ComboBox kontrolban kiválasztott bekezdésre ugrunk. Ehhez az aktív dokumentum Paragraphs gyűjteményre van szükség. A Paragraphs kollekció Item metódusának kell átadni a célparagrafus számát, mely egy egytől induló sorszám.
wp = wa.ActiveDocument.Paragraphs.Item(comboBox1.SelectedIndex+1);
Az Item metódus visszatérési értéke egy Word.Range objektum, melynek Select metódusával ki is jelölhető az adott bekezdés.
wp.Range.Select();
Navigálás a bekezdés alapegységei között
A bekezdések különböző egységekből állnak. Ezek lehetnek karakterek, szavak, vagy sorok. Minden bekezdésben kijelölhető a tetszőleges alapegység, csupán specifikálni kell azt a megfelelő metódusban.
A Form második szegmensében meg kell nyitnunk a sample02.doc dokumentumot, majd a ComboBox kontrolban ki kell választanunk a megfelelő egységet, és a két másik nyomógombbal haladni a paragrafusban egységenként. Az adott egység ki is jelölődik, hogy látszódjon éppen hol tartunk.
Amikor a ComboBox kontrolban kiválasztottunk egy egységet, akkor azt kijelöljük. Ezt a következőképpen tesszük: elsőként a dokumentum első paragrafusára állunk, majd a Range objektum segítségével megadjuk az első egységet. A Range objektum rendelkezik egy Words, Characters és egy Lines kollekcióval. Az Item metódusokkal a meghatározott egységre lehet ugrani.
wp = wa.ActiveDocument.Paragraphs.Item(1);
switch(comboBox2.SelectedIndex)
{
  case 0: wp.Range.Characters.Item(1).Select();
  break;
  ...
A Word alkalmazás-objektum aktív dokumentuma rendelkezik egy ActiveWindow property-vel, melynek Selection property-je megadja, hogy mi a dokumentum kijelölt szakasza.
Word.Selection s = wa.ActiveDocument.ActiveWindow.Selection;
Ha ez megvan, akkor MakeStep metódusunkkal lépünk egyet a megadott egységenként előre.
MakeStep(s,1);
A léptetés a Word.Selection objektum Next és Previous metódusával történik előre, vagy hátra. A megadott egységet a Word.WdUnits felsorolt típussal jelöljük ki. A számunkra fontos konstansok a következők:
  • wdCharacter: karakterenként
  • wdWord: szavanként
  • wdLine: soronként
A Next, illetve Previous metódusoknak első paraméterként az egységet jelölő objektumot kell megadni, míg második paraméterében kell specifikálni, hogy éppen hány egységet kell lépni. Ez most egy.
switch(comboBox2.SelectedIndex)
{
  case 0: unit = Word.WdUnits.wdCharacter;
  break;
  ...
}
wr = s.Next(ref unit,ref count);
A metódushívások visszatérési értéke is egy Range objektum, melynek segítségével az aktuális egységet kijelölhetjük.
Mentés beágyazott betűtípusokkal
Amikor létrehozunk programból egy Word dokumentumot, és menteni szeretnénk, akkor a SaveAs metódust használhatjuk.
Amennyiben a metódusban csak a létrehozandó állomány nevét adjuk meg, akkor a létrejövő dokumentum nem tartalmazza a TrueType betűtípusokat beágyazva.
Ha az állományt ezek beágyazásával szeretnénk létrehozni, akkor a SaveAs metódust más paraméterlistával kell meghívni. A nyolcadik paramétert kell megváltoztatni a Missing.Value értékről logikai igaz értékre.
object embed = true;
wd.SaveAs(ref file,ref o,ref o,ref o,ref o,ref o,ref o,ref embed,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
A példában létrejövő sample03.doc állomány már tartalmazz ezt a betűtípust beágyazva. Erről meggyőződhetünk, ha az Eszközök menüből kiválasztjuk a Beállítások pontot, és a megjelenő ablakban a Mentés fülre kattintunk.
Üres sorok törlése
A dokumentum paragrafusai közt lehetnek nem kívánatos üres sorok, melyek szükségtelenül foglalják a helyet. Ezeket a paragrafusokat ki lehet törölni akkor is, ha több van belőlük egymás után.
Azonban nem elegendő egy ciklussal végigmenni a dokumentum paragrafusain, és az üres sorokra meghívni a Delete metódust, mert ekkor a paragrafusszám csökken, és a ciklus változója nem a megfelelő értékre fog állni.
Ezt kiküszöbölendő, egy vaskosabb paragrafusszámot alapul vevő ciklust indítunk. A ciklus addig megy, amíg az i ciklusváltozó értéke el nem éri a 10000-et.
while (i < 10000)
{
A ciklus elején az i. paragrafusra ugrunk. Amennyiben a paragrafus nem tartalmaz szöveget és képet sem, akkor töröljük úgy, hogy a ciklusváltozó értékét csökkentjük egyel, így biztosítva, hogy a következő bekezdés is legyen megvizsgálva.
  wp = wd.Paragraphs.Item(i);
  if (wp.Range.Text.Trim() == "" && wp.Range.InlineShapes.Count == 0)
  {          
    wp.Range.Delete(ref o,ref o);                
    i--;
  }
Ha a bekezdés tartalmaz szöveget, vagy képet akkor növelhető a ciklusváltozó.
  else
  {
    i++;
  }
}
A sample04.doc állományból ennek segítségével kitörölhető valamennyi üres sor.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 773. 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 |