public static void AddRow(this Table table, string[] cells, string[] styles = null, bool singleSpace = true) { TableRow tr = new TableRow(); for (int i = 0; i < cells.Length; i++) { TableCell tc = new TableCell(); if(cells[i].Contains("|")) { Paragraph para = tc.AppendChild(new Paragraph(new ParagraphProperties())); Run run = para.AppendChild(new Run(new RunProperties())); string[] values = cells[i].Split('|'); for(int j = 0, jj = values.Length; j < jj; j++) { if(j != 0) run.AppendChild(new Break()); run.AppendChild(new Text(values[j])); } } else tc.AppendChild(new Paragraph(new ParagraphProperties(), new Run(new RunProperties(), new Text(cells[i])))); tr.Append(tc); foreach (OpenXmlElement els in tc.Elements()) { if (els.GetType() == typeof(Paragraph)) { Paragraph para = (Paragraph)els; if(singleSpace) para.ParagraphProperties.AppendChild(new SpacingBetweenLines() { Line = "240", LineRule = LineSpacingRuleValues.Auto, Before = "0", After = "0" }); else para.ParagraphProperties.AppendChild(new SpacingBetweenLines() { Line = "240", LineRule = LineSpacingRuleValues.Auto, Before = "240", After = "0" }); } } if (styles != null && styles.Length > i && !string.IsNullOrEmpty(styles[i])) { TableCellProperties props = new TableCellProperties(); tc.Append(props); if (styles[i].Contains("LeftIndent")) { string value = styles[i].Substring(styles[i].IndexOf("LeftIndent:") + 11); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.LeftIndent(value); } if (styles[i].Contains("RightIndent")) { string value = styles[i].Substring(styles[i].IndexOf("RightIndent:") + 12); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.RightIndent(value); } if (styles[i].Contains("TopIndent")) { string value = styles[i].Substring(styles[i].IndexOf("TopIndent:") + 10); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.TopIndent(value); } if (styles[i].Contains("Background")) { string value = styles[i].Substring(styles[i].IndexOf("Background:") + 11); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.BackgroundColor(value); } if (styles[i].Contains("Bold")) tc.Bold(); if (styles[i].Contains("JustifyRight")) tc.Right(); if (styles[i].Contains("JustifyCenter")) tc.Center(); if(styles[i].Contains("FontSize")) { string value = styles[i].Substring(styles[i].IndexOf("FontSize:") + 9); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); tc.FontSize(value); } if (styles[i].Contains("FontColor")) { string value = styles[i].Substring(styles[i].IndexOf("FontColor:") + 10); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); tc.FontColor(value); } if (styles[i].Contains("VerticalText")) { string value = styles[i].Substring(styles[i].IndexOf("VerticalText:") + 13); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.VerticalText(value); } if (styles[i].Contains("Borders")) { string value = styles[i].Substring(styles[i].IndexOf("Borders:") + 8); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.Borders(value); } if (styles[i].Contains("VerticalMerge")) { string value = styles[i].Substring(styles[i].IndexOf("VerticalMerge:") + 14); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.VertMerge(value); } if (styles[i].Contains("HorizontalMerge")) { string value = styles[i].Substring(styles[i].IndexOf("HorizontalMerge:") + 16); if (value.Contains("|")) value = value.Substring(0, value.IndexOf("|")); props.HorizMerge(value); } } } table.AppendChild(tr); }