C# - Táblázat készítése, formázása Word-ben

Word programozása 6. rész

forráskód letöltése
Word dokumentumok programból történő generálásakor épp úgy gyakori feladat táblázat létrehozása, mint a manuálisan készített dokumentumok esetén. A mostani részben annak járunk utána, hogy miként tudunk programból táblázatot beszúrni egy Word dokumentumba, illetve hogyan tudunk a táblázat egyes celláiba adatot írni, formázni, összevonni a cellákat.
Táblázatok kezelésére a Document osztály Tables property-je szolgál. Ennek Add függvényével hozhatunk létre új táblázatot:
Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior);
  • Range: a kijelölés, illetve a táblázat helye.
  • NumRows: a táblázat sorainak száma.
  • NumColumns: a táblázat oszlopainak száma.
  • DefaultTableBehavior: értékei a következők lehetnek: wdWord8TableBehavior (AutoFit kikapcsolva) vagy wdWord9TableBehavior (AutoFit bekapcsolva). Az alapértelmezett érték: wdWord8TableBehavior.
  • AutoFitBehavior: WdAutoFitBehavior típusú paraméter, melynek a következő értékei lehetnek: wdAutoFitContent, wdAutoFitFixed, vagy wdAutoFitWindow. Ha a DefaultTableBehavior értéke wdWord8TableBehavior, akkor ez a paraméter figyelmen kívül marad!
      Object dtb = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
      Object afb = Word.WdAutoFitBehavior.wdAutoFitContent;      
      Word.Table wt = wd.Tables.Add(wa.Selection.Range, 10, 3, ref dtb, ref afb);
Ha már megvan a táblázatunk, akkor töltsük fel azt adatokkal, és formázzuk is meg egy kicsit. A cellákat nagyon egyszerűen elérhetjük, a Table osztály Cell függvényével, amely egy Cell osztályt ad vissza. Ebben a cella formázásához szükséges property-k és függvények találhatók. A következő módon adhatjuk meg a cella szövegét:
      for (int i=1; i<=3; i++)
      {
        wt.Cell(2, i).Range.Text = i.ToString()+". oszlop";
      }
A Range osztályon keresztül minden formázási lehetőséget megkapunk. Formázhatunk bekezdést (Range.Paragraphs), betűtípust (Range.Font), és még sok más tulajdonságot lekérdezhetünk és beállíthatunk.
      wt.Cell(1, 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
      wt.Cell(1, 1).Range.Font.Bold = Convert.ToInt32(true);      
Egy táblázatban sokszor előfordul, hogy cellákat kell összevonni. Ezt a következőképpen tehetjük meg:
      wt.Rows.Item(1).Cells.Merge();
Ezzel a sorral az első sor celláit egyesítettük.
Gyakori formázás a táblázatoknál a keretezés. Az alábbi kóddal a táblázat külső keretét rajzoljuk meg, általunk megadott stílusban, színben és vastagságban:
      wt.Borders.OutsideLineStyle= Word.WdLineStyle.wdLineStyleSingle;
      wt.Borders.OutsideColor = Word.WdColor.wdColorBlueGray;
      wt.Borders.OutsideLineWidth = Word.WdLineWidth.wdLineWidth300pt;      
Ehhez hasonlóan megy a táblázat belső vonalainak megadása is csak ott az Inside-al kezdődő property-ket kell használnunk.
      wt.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleDouble;
      wt.Borders.InsideColor = Word.WdColor.wdColorBlue; 
Megint másként kell eljárnunk, ha a cella, vagy cellák valamelyik oldalán lévő keretet szeretnénk csak megváltoztatni. Az alábbi példa a második sor celláit dupla vonallal húzza alá:
wt.Rows.Item(2).Borders.Item(wdBorderBottom).LineStyle = Word.WdLineStyle.wdLineStyleDouble;

Word programozása cikksorozat