ConditionalTableStyles.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.Drawing;using System.Collections.Generic;using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos{ // This sample demonstrates various conditional table formatting options. public class ConditionalTableStyles { public GcWordDocument CreateDocx() { GcWordDocument doc = new GcWordDocument();
// Table dimensions: var rows = 20; var cols = 7;
doc.Body.Paragraphs.Add( $"A {cols} columns by {rows} rows table, with conditional styles applied to most elements:");
// Add an empty table: var t = doc.Body.Tables.Add(0, 0);
// Add some rows and cells to it: var cells = new List<string>(cols); for (int col = 0; col < cols; ++col) cells.Add(string.Empty); for (int row = 0; row < rows; ++row) { for (int col = 0; col < cols; ++col) cells[col] = $"Row {row + 1}, col {col + 1}"; t.Rows.Add(cells.ToArray()); }
// Create a table style on which we will define conditional formatting: var ts1 = doc.Styles.Add("Table Style 1", StyleType.Table); // And assign the style to the table: t.Style = ts1;
// Set up simple borders: foreach (var border in ts1.Table.Borders) { border.LineStyle = LineStyle.Single; border.LineWidth = 0.5f; border.Color.RGB = Color.DarkGray; } // Add some padding: ts1.Table.Padding.All = 2;
// To use conditional styles, we need to set corresponding flags on the table's style options. // In this case, we set all of them: t.Format.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.LastRow | TableStyleOptions.FirstColumn | TableStyleOptions.LastColumn | TableStyleOptions.RowBands | TableStyleOptions.ColumnBands;
// Set up the table for row and column bands: ts1.Table.RowStripe = 1; ts1.Table.ColumnStripe = 1;
// Shortcut to access table's conditionals: var conds = ts1.Table.Conditionals;
// Odd rows' style: conds[TableStyleOverride.Band1Horizontal].Font.Bold = true; // Band*Vertical styles override Band*Horizontal styles if there is a conflict. // Here, becase we set vertical band backgrounds, horizontal ones // will not be seen in the document: conds[TableStyleOverride.Band1Horizontal].Shading.Texture = TexturePattern.Clear; // overridden conds[TableStyleOverride.Band1Horizontal].Shading.BackgroundPatternColor.RGB = Color.Magenta; // overridden // Even rows' style: conds[TableStyleOverride.Band2Horizontal].Font.Italic = true; // Won't be seen in the document (see comment above): conds[TableStyleOverride.Band2Horizontal].Shading.Texture = TexturePattern.Clear; // overridden conds[TableStyleOverride.Band2Horizontal].Shading.BackgroundPatternColor.RGB = Color.Brown; // overridden
// Odd columns' style: conds[TableStyleOverride.Band1Vertical].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.Band1Vertical].Shading.BackgroundPatternColor.RGB = Color.FromArgb(0xe6, 0xff, 0xe6); // Even columns' style: conds[TableStyleOverride.Band2Vertical].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.Band2Vertical].Shading.BackgroundPatternColor.RGB = Color.FromArgb(0xff, 0xff, 0xe6);
// First/last/corner styles will override horizontal and vertical bands if there is a conflict: conds[TableStyleOverride.FirstColumn].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.FirstColumn].Shading.BackgroundPatternColor.RGB = Color.CadetBlue;
conds[TableStyleOverride.FirstRow].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.FirstRow].Shading.BackgroundPatternColor.RGB = Color.PaleVioletRed;
conds[TableStyleOverride.LastColumn].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.LastColumn].Shading.BackgroundPatternColor.RGB = Color.PapayaWhip;
conds[TableStyleOverride.LastRow].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.LastRow].Shading.BackgroundPatternColor.RGB = Color.PaleGoldenrod;
conds[TableStyleOverride.NorthWestCell].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.NorthWestCell].Shading.BackgroundPatternColor.RGB = Color.Red;
conds[TableStyleOverride.NorthEastCell].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.NorthEastCell].Shading.BackgroundPatternColor.RGB = Color.Green;
conds[TableStyleOverride.SouthWestCell].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.SouthWestCell].Shading.BackgroundPatternColor.RGB = Color.Blue;
conds[TableStyleOverride.SouthEastCell].Shading.Texture = TexturePattern.Clear; conds[TableStyleOverride.SouthEastCell].Shading.BackgroundPatternColor.RGB = Color.Purple;
// Done: return doc; } }}