/// <summary> /// Get All Formats ordered by less prioritary for the given Cell, then call MergeFormats() /// Override MergeFormats() to change the default behavior, which is only taking the 4th format (the last one) /// </summary> public void ApplyFormatToCell(IWorkbook wb, RowDefinition defaultRowDef, RowDefinition rowDef, int columnIndex, ICell cell) { List <T> formats = FormatMerger.GetFormatsOrderedByLessPrioritary <T>(defaultRowDef, rowDef, columnIndex); var mergedFormat = MergeFormats(formats); if (mergedFormat != null) { ApplyFormatToCell(wb, cell, mergedFormat); } }
public void ApplyFormatToCell(IXLWorkbook wb, RowDefinition defaultRowDef, RowDefinition rowDef, int columnIndex, IXLCell cell) { var formats = FormatMerger.GetFormatsOrderedByLessPrioritary <ClosedXmlFormat>(defaultRowDef, rowDef, columnIndex); formats.Reverse(); Func <IXLStyle, IXLStyle> f = (s) => null; var composedStylize = formats.Aggregate(f, (mergedFormat, nextFormat) => { return(mergedFormat.Compose(nextFormat.Stylize)); }); ApplyFormatToCell(wb, cell, new ClosedXmlFormat(composedStylize)); }
public void FormatNotFound() { LabelInfo dataLabel = new LabelInfo() { ZplElements = new ZplElementBase[] { new ZplRecallFormat("format.zpl"), } }; List <LabelInfo> rawLabels = new List <LabelInfo> { dataLabel }; FormatMerger formatMerger = new FormatMerger(); Assert.ThrowsException <InvalidOperationException>(() => formatMerger.MergeFormats(rawLabels)); }
public void FormatMerging() { // Given const int FieldNumber = 999; ZplFont defaultFont = ZplConstants.Font.Default; LabelInfo templateFormat = new LabelInfo() { DownloadFormatName = "format", ZplElements = new[] { new ZplFieldNumber( FieldNumber, new ZplTextField(null, 50, 200, defaultFont)) } }; LabelInfo dataLabel = new LabelInfo() { ZplElements = new ZplElementBase[] { new ZplTextField("one", 50, 100, defaultFont), new ZplRecallFormat("format.zpl"), new ZplRecallFieldNumber(FieldNumber, "two"), new ZplTextField("three", 50, 300, defaultFont), } }; List <LabelInfo> rawLabels = new List <LabelInfo> { templateFormat, dataLabel }; FormatMerger formatMerger = new FormatMerger(); // When List <LabelInfo> merged = formatMerger.MergeFormats(rawLabels); // Then Assert.AreEqual(1, merged.Count); ZplElementBase[] zplElements = merged[0].ZplElements; Assert.AreEqual(3, zplElements.Length); Assert.AreEqual("one", ((ZplTextField)zplElements[0]).Text); Assert.AreEqual("two", ((ZplTextField)zplElements[1]).Text); Assert.AreEqual("three", ((ZplTextField)zplElements[2]).Text); }