diff --git a/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs b/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs index f0c19a3..18fe407 100644 --- a/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs +++ b/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs @@ -54,14 +54,14 @@ { var parsedElements = ParseFormattedHeaderFooterText(text); - if (parsedElements.Any(e => e.Item1 == 'L')) - this.Left.AddText(string.Join("\r\n", parsedElements.Where(e => e.Item1 == 'L').Select(e => e.Item2).ToArray()), occurrence); + if (parsedElements.Any(e => e.Position == 'L')) + this.Left.AddText(string.Join("\r\n", parsedElements.Where(e => e.Position == 'L').Select(e => e.Text).ToArray()), occurrence); - if (parsedElements.Any(e => e.Item1 == 'C')) - this.Center.AddText(string.Join("\r\n", parsedElements.Where(e => e.Item1 == 'C').Select(e => e.Item2).ToArray()), occurrence); + if (parsedElements.Any(e => e.Position == 'C')) + this.Center.AddText(string.Join("\r\n", parsedElements.Where(e => e.Position == 'C').Select(e => e.Text).ToArray()), occurrence); - if (parsedElements.Any(e => e.Item1 == 'R')) - this.Right.AddText(string.Join("\r\n", parsedElements.Where(e => e.Item1 == 'R').Select(e => e.Item2).ToArray()), occurrence); + if (parsedElements.Any(e => e.Position == 'R')) + this.Right.AddText(string.Join("\r\n", parsedElements.Where(e => e.Position == 'R').Select(e => e.Text).ToArray()), occurrence); if (innerTexts.ContainsKey(occurrence)) @@ -72,9 +72,15 @@ return innerTexts[occurrence]; } - private static IEnumerable> ParseFormattedHeaderFooterText(string text) + private struct ParsedHeaderFooterElement { - var parsedElements = new List>(); + public char Position; + public string Text; + } + + private static IEnumerable ParseFormattedHeaderFooterText(string text) + { + var parsedElements = new List(); var currentPosition = 'L'; // default is LEFT var hfElement = ""; @@ -82,7 +88,11 @@ { if (i < text.Length - 1 && text[i] == '&' && (new char[] { 'L', 'C', 'R' }.Contains(text[i + 1]))) { - if ("" != hfElement) parsedElements.Add(new Tuple(currentPosition, hfElement)); + if ("" != hfElement) parsedElements.Add(new ParsedHeaderFooterElement() + { + Position = currentPosition, + Text = hfElement + }); currentPosition = text[i + 1]; i += 2; @@ -92,7 +102,12 @@ hfElement += text[i]; } - if ("" != hfElement) parsedElements.Add(new Tuple(currentPosition, hfElement)); + if ("" != hfElement) + parsedElements.Add(new ParsedHeaderFooterElement() + { + Position = currentPosition, + Text = hfElement + }); return parsedElements; }