Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        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);
        }