private void WriteReport(Action <string> descriptionText, List <string> metaDataSelectedItems, List <string> bodySelectedItems, bool includeAttachments, WorkItem onDateItem, int hierarchyLevel = -1) { WdBuiltinStyle style = hierarchyLevel != -1 ? ParseEnum <WdBuiltinStyle>(string.Format("wdStyleHeading{0}", hierarchyLevel)) : WdBuiltinStyle.wdStyleHeading1; OfficeHelper.SetText(ref document, string.Format("{0} ", onDateItem.Title), style); WriteReportMetadata(metaDataSelectedItems, onDateItem.Fields); WriteReportBodyData(bodySelectedItems, onDateItem.Fields, descriptionText); if (includeAttachments) { InsertAttachment(onDateItem.Attachments); } }
private WdBuiltinStyle GetNextHeadingStyle(WdBuiltinStyle currentStyle) { if (currentStyle == WdBuiltinStyle.wdStyleHeading1) { return(WdBuiltinStyle.wdStyleHeading2); } if (currentStyle == WdBuiltinStyle.wdStyleHeading2) { return(WdBuiltinStyle.wdStyleHeading3); } if (currentStyle == WdBuiltinStyle.wdStyleHeading3) { return(WdBuiltinStyle.wdStyleHeading4); } if (currentStyle == WdBuiltinStyle.wdStyleHeading4) { return(WdBuiltinStyle.wdStyleHeading5); } if (currentStyle == WdBuiltinStyle.wdStyleHeading5) { return(WdBuiltinStyle.wdStyleHeading6); } return(WdBuiltinStyle.wdStyleHeading7); }
private TreeNode[] FindStylesBelow(WdBuiltinStyle wdCurrent, WdBuiltinStyle wdSearch, Paragraph currentPara) { var children = new List <TreeNode>(); var para = currentPara.Next(1); do { if (_ds.CheckLocalizedStyleName(para.get_Style(), wdCurrent)) { break; } TreeNode[] grandChildren = null; // Add sections as subnodes if (_ds.CheckLocalizedStyleName(para.get_Style(), wdSearch)) { var t = new TreeNode { Text = para.Range.Text.Trim(), ImageIndex = 4, Tag = para }; grandChildren = FindStylesBelow(wdSearch, GetNextHeadingStyle(wdSearch), para); t.Nodes.AddRange(grandChildren); children.Add(t); } var hasHeading = grandChildren != null && grandChildren.Any(t => _ds.CheckLocalizedStyleName(((Paragraph)t.Tag).get_Style(), WdBuiltinStyle.wdStyleHeading1) || _ds.CheckLocalizedStyleName(((Paragraph)t.Tag).get_Style(), WdBuiltinStyle.wdStyleHeading2) || _ds.CheckLocalizedStyleName(((Paragraph)t.Tag).get_Style(), WdBuiltinStyle.wdStyleHeading3) || _ds.CheckLocalizedStyleName(((Paragraph)t.Tag).get_Style(), WdBuiltinStyle.wdStyleHeading4) || _ds.CheckLocalizedStyleName(((Paragraph)t.Tag).get_Style(), WdBuiltinStyle.wdStyleHeading5)); if (!hasHeading) { // Leaf Level // add regular elements as nodes string n1 = para.get_Style().NameLocal.ToString(); TreeNode snippetNode = null; switch (n1) { case "FigureCaption": // images only if NOT in table if (para.Range.Tables.Count == 0) { snippetNode = new TreeNode { Text = para.Range.Text.Trim(), // caption after ImageIndex = 2, Tag = para, ForeColor = Color.Blue }; } break; case "ListingCaption": snippetNode = new TreeNode { Text = para.Range.Text.Trim(), // caption before ImageIndex = 1, Tag = para, ForeColor = Color.Blue }; break; case "TableCaption": snippetNode = new TreeNode { Text = para.Range.Text.Trim(), // caption before ImageIndex = 3, Tag = para, ForeColor = Color.Blue }; break; default: if (_ds.CheckLocalizedStyleName(para.get_Style(), WdBuiltinStyle.wdStyleNormal)) { // text only if NOT in table if (para.Range.Tables.Count == 0) { if (para.Range.Text.Trim().Length > 1) { snippetNode = new TreeNode { Text = para.Range.Text.Trim().Substring(0, Math.Min(para.Range.Text.Trim().Length - 1, 20)), // caption ImageIndex = 0, Tag = para, ForeColor = Color.Black }; snippetNode.NodeFont = new System.Drawing.Font(treeViewChapter.Font.FontFamily, treeViewChapter.Font.Size * 0.9f); } } } break; } if (snippetNode != null) { children.Add(snippetNode); } } // proceed para = para.Next(1); } while (para != null); return(children.ToArray()); }