@RoboDan, I’ll go ahead and post a snippet, but it’s a giant block of code, since there are so many features you can have for a table. It will be difficult to understand maybe but might strike some ideas, that is if you want to create something yourself.

If(out_BodyInHTML.Trim<>"",out_BodyInHTML.Trim+System.Environment.NewLine,"") _
+String.Format(htmlTable, String.Format(htmlTableCell, item("Hdr Border Horizontal Width").ToString.Trim, item("Hdr Border Horizontal Style").ToString.Trim, item("Hdr Border Horizontal Color").ToString.Trim, item("Hdr Border Vertical Width").ToString.Trim, item("Hdr Border Vertical Style").ToString.Trim, item("Hdr Border Vertical Color").ToString.Trim) + _
String.Join(System.Environment.NewLine(0),item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Take(1).Select(Function(x) x.Remove(x.LastIndexOf("|"),1).Insert(x.LastIndexOf("|"), _
"</td>"+String.Format(htmlTableCellLastCol, item("Hdr Border Horizontal Width").ToString.Trim, item("Hdr Border Horizontal Style").ToString.Trim, item("Hdr Border Horizontal Color").ToString.Trim) ) )).Trim.Replace("|", _
"</td>"+String.Format(htmlTableCell, item("Hdr Border Horizontal Width").ToString.Trim, item("Hdr Border Horizontal Style").ToString.Trim, item("Hdr Border Horizontal Color").ToString.Trim, item("Hdr Border Vertical Width").ToString.Trim, item("Hdr Border Vertical Style").ToString.Trim, item("Hdr Border Vertical Color").ToString.Trim) ).Replace(System.Environment.NewLine, _
"</td></tr>") + "</td></tr>", If( item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Count>2, String.Format(htmlTableRow, item("BG Color").ToString.Trim) + String.Format(htmlTableCell, item("Border Horizontal Width").ToString.Trim, item("Border Horizontal Style").ToString.Trim, item("Border Horizontal Color").ToString.Trim, item("Border Vertical Width").ToString.Trim, item("Border Vertical Style").ToString.Trim, item("Border Vertical Color").ToString.Trim) + _
String.Join(System.Environment.NewLine(0), item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Skip(1).Take(item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Count-2).Select(Function(x) x.Remove(x.LastIndexOf("|"),1).Insert(x.LastIndexOf("|"), _
"</td>"+String.Format(htmlTableCellLastCol, item("Border Horizontal Width").ToString.Trim, item("Border Horizontal Style").ToString.Trim, item("Border Horizontal Color").ToString.Trim) ) )).Trim.Replace("|", _
"</td>"+String.Format(htmlTableCell, item("Border Horizontal Width").ToString.Trim, item("Border Horizontal Style").ToString.Trim, item("Border Horizontal Color").ToString.Trim, item("Border Vertical Width").ToString.Trim, item("Border Vertical Style").ToString.Trim, item("Border Vertical Color").ToString.Trim) ).Replace(System.Environment.NewLine, _
"</td></tr>"+String.Format(htmlTableRow, item("BG Color").ToString.Trim) + String.Format(htmlTableCell, item("Border Horizontal Width").ToString.Trim, item("Border Horizontal Style").ToString.Trim, item("Border Horizontal Color").ToString.Trim, item("Border Vertical Width").ToString.Trim, item("Border Vertical Style").ToString.Trim, item("Border Vertical Color").ToString.Trim) ), ""), _
"</td></tr><tr style=""background-color:#FFFFFF;text-align:; "">"+String.Format(htmlTableCellLastRow, item("Border Vertical Width").ToString.Trim, item("Border Vertical Style").ToString.Trim, item("Border Vertical Color").ToString.Trim)+item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Last.Remove(item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Last.LastIndexOf("|"),1).Insert(item("Value").ToString.Trim.Split(System.Environment.NewLine(0)).Last.LastIndexOf("|"),"</td><td style="""">").Trim.Replace("|", _
"</td>"+String.Format(htmlTableCellLastRow, item("Border Vertical Width").ToString.Trim, item("Border Vertical Style").ToString.Trim, item("Border Vertical Color").ToString.Trim) )+"</td></tr>", _
item("Table Width").ToString.Trim, item("Font Color").ToString.Trim, item("BG Color").ToString.Trim, item("Text Align").ToString.Trim, item("Font Size").ToString.Trim, item("Font Name").ToString.Trim, _
If(item("Bold").ToString.Trim.ToUpper="TRUE", "bold","normal"), If(item("Italic").ToString.Trim.ToUpper="TRUE", "italic","normal"), If(item("Underline").ToString.Trim.ToUpper="TRUE", "underline","normal"), _
item("Top Border Width").ToString.Trim, item("Top Border Style").ToString.Trim, item("Top Border Color").ToString.Trim, item("Bottom Border Width").ToString.Trim, item("Bottom Border Style").ToString.Trim, item("Bottom Border Color").ToString.Trim, _
item("Left Border Width").ToString.Trim, item("Left Border Style").ToString.Trim, item("Left Border Color").ToString.Trim, item("Right Border Width").ToString.Trim, item("Right Border Style").ToString.Trim, item("Right Border Color").ToString.Trim, _
item("Hdr Font Color").ToString.Trim, item("Hdr BG Color").ToString.Trim, item("Hdr Text Align").ToString.Trim, item("Hdr Font Size").ToString.Trim, item("Hdr Font Name").ToString.Trim, _
If(item("Hdr Bold").ToString.Trim.ToUpper="TRUE", "bold","normal"), If(item("Hdr Italic").ToString.Trim.ToUpper="TRUE", "italic","normal"), If(item("Hdr Underline").ToString.Trim.ToUpper="TRUE", "underline","normal") )
All the features are stored in a datatable at the beginning so I can loop through them. The formatting settings come in as Arrays in Arguments, that way I can set multiple tables so each one has its own features.
(those are not all the arguments, by the way)
Here is part of the beginning that adds all the settings to the datatable before it generates the html:
Regards.