Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Exception
SAException
SAException

SetRepeatBlock will throw this exception if the bookmark has been set to be removed.

Limitations

Not all Word features can be included in a repeat block:

Supported in Repeat Blocks

Not Supported in Repeat Blocks

  • Character Formatting (everywhere)
  • Paragraph Formatting (Alignment, Outlines, Indent, Spacing, Page Break before, Keep Together)
  • Multiple Columns (2, 3, Column Breaks)
  • Borders and Shading
  • Tabs
  • Bullets
  • Numbering (numbering not reset, it is continued from one repeat block to another)
  • Page Breaks
  • Section Breaks
  • Auto Text Field
  • Hyperlink
  • Pictures
  • Table Row Repeat (entire row only)
  • Fields (with some restrictions)
  • Nested repeat blocks (Only one data source may be assigned to a single repeat block.)
  • Overlapping bookmarks
  • Comments
  • Drawing Objects
  • Text Boxes
  • Footnote and endnote references
  • Table and picture indexes
  • Single cell in a table
  • Smart tags (smart tags will be removed from the document)
  • Repeat blocks in headers, footers, footnotes, comments, text boxes, etc.

{remarks}
A repeat block is a fragment in the template document that will be repeated for each row in a data source. In the template document, repeat blocks are defined by Word bookmarks that contain merge fields.

You can call SetRepeatBlock several times for a single instance of WordTemplate. The repeat block specified by the parameter bookmark must exist in the template.

If you pass an empty DataReader to SetRepeatBlock - by either setting maxRows to 0 or passing an empty DataReader - WordWriter will not include the specified repeat block in the generated Word file.

Remarks

Example
Code Block
csharp
csharp
titleC#

          //--- Get a DataReader
          //--- WordWriter accepts OleDbDataReader, SqlDataReader, and AdomdDataReader
          OleDbDataReader dr = GetOleDbDataReader();
          WordTempalte oWW = new WordTemplate();
          oWW.Open(Page.MapPath("./template.doc"));

          //--- Set a data source for the repeat block
          //--- defined by the bookmark "Page"
          //--- "dr" is the DataReader containing information to be
          //--- imported and repeated in the repeat block
          //--- Set MaxRows to 10.  Only 10 rows from the DataReader
          //--- will be imported
          oWW.SetRepeatBlock(dr, "Page", 10);
          oWW.Process();
          oWW.Save(Page.Response, "EmployeeOutput.doc", false);

          //--- Close the DataReader in a finally block
          dr.Close();

           private OleDbDataReader GetOleDbDataReader()
          {
               OleDbConnection Conn = new OleDbConnection(connString);

               //--- SQL Query for categories.
               string CategorySQL = "SELECT CategoryID, CategoryName," +
                    "Description FROM Categories";
               Conn.Open();
               return new OleDbCommand(CategorySQL, Conn).ExecuteReader(
                    CommandBehavior.CloseConnection);
          }
        
Code Block
vb.net
vb.net
titlevb.net

          '--- Get a DataReader
          '--- WordWriter accepts OleDbDataReader, SqlDataReader, and AdomdDataReader
          Dim dr As OleDbDataReader = GetOleDbDataReader()
          Dim oWW As New WordTemplate()
          oWW.Open(Page.MapPath("./template.doc"))

          '--- Set a data source for the repeat block
          '--- defined by the bookmark "Page"
          '--- "dr" is the DataReader containing information to be
          '--- imported and repeated in the repeat block
          '--- Set MaxRows to 10.  Only 10 rows from the DataReader
          '--- will be imported
          oWW.SetRepeatBlock(dr, "Page", 10)
          oWW.Process()
          oWW.Save(Page.Response, "EmployeeOutput.doc", False)

          '--- Close the DataReader in a finally block
          dr.Close()

          Private Function GetOleDbDataReader() As OleDbDataReader
               Dim Conn As New OleDbConnection(connString)

               '--- SQL Query for categories.
               Dim CategorySQL As String = "SELECT CategoryID, CategoryName," & _
                    "Description FROM Categories"
               Conn.Open()
               Return New OleDbCommand(CategorySQL, Conn).ExecuteReader( _
                    CommandBehavior.CloseConnection)
          End Function