internal ExcelNumberFormat(ExcelStyles styles, OfficeOpenXml.XmlHelper.ChangedEventHandler ChangedEvent, int PositionID, string Address, int index) :
     base(styles, ChangedEvent, PositionID, Address)
 {
     Index = index;
 }
        internal ExcelGradientFill(ExcelStyles styles, OfficeOpenXml.XmlHelper.ChangedEventHandler ChangedEvent, int PositionID, string address, int index) :
            base(styles, ChangedEvent, PositionID, address)

        {
            Index = index;
        }
 internal ExcelNamedStyleCollection(ExcelStyleCollection <ExcelNamedStyleXml> list, ExcelStyles styles)
 {
     _styles = styles;
     _list   = list.Select(x => new ExcelNamedStyle(x)).ToList();
 }
 internal ExcelColor(ExcelStyles styles, OfficeOpenXml.XmlHelper.ChangedEventHandler ChangedEvent, int worksheetID, string address, eStyleClass cls, StyleBase parent) :
     base(styles, ChangedEvent, worksheetID, address)
 {
     _parent = parent;
     _cls    = cls;
 }
Exemple #5
0
        internal int CloneStyle(ExcelStyles style, int styleId, bool isNamedStyle, bool alwaysAddCellXfs)
        {
            ExcelXfs xfs;

            lock (style)
            {
                if (isNamedStyle)
                {
                    xfs = style.CellStyleXfs[styleId];
                }
                else
                {
                    xfs = style.CellXfs[styleId];
                }

                ExcelXfs newXfs = xfs.Copy(this);
                //Number format
                if (xfs.NumberFormatId > 0)
                {
                    //rake36: Two problems here...
                    //rake36:  1. the first time through when format stays equal to String.Empty, it adds a string.empty to the list of Number Formats
                    //rake36:  2. when adding a second sheet, if the numberformatid == 164, it finds the 164 added by previous sheets but was using the array index
                    //rake36:      for the numberformatid

                    var format = string.Empty;
                    foreach (ExcelNumberFormatXml fmt in style.NumberFormats)
                    {
                        if (fmt.NumFmtId == xfs.NumberFormatId)
                        {
                            format = fmt.Format;
                            break;
                        }
                    }

                    //rake36: Don't add another format if it's blank
                    if (!string.IsNullOrEmpty(format))
                    {
                        var ix = NumberFormats.FindIndexById(format);
                        if (ix < 0)
                        {
                            var item = new ExcelNumberFormatXml(NameSpaceManager)
                            {
                                Format = format, NumFmtId = NumberFormats.NextId++
                            };
                            NumberFormats.Add(format, item);
                            //rake36: Use the just added format id
                            newXfs.NumberFormatId = item.NumFmtId;
                        }
                        else
                        {
                            //rake36: Use the format id defined by the index... not the index itself
                            newXfs.NumberFormatId = NumberFormats[ix].NumFmtId;
                        }
                    }
                }

                //Font
                if (xfs.FontId > -1)
                {
                    var ix = Fonts.FindIndexById(xfs.Font.Id);
                    if (ix < 0)
                    {
                        ExcelFontXml item = style.Fonts[xfs.FontId].Copy();
                        ix = Fonts.Add(xfs.Font.Id, item);
                    }

                    newXfs.FontId = ix;
                }

                //Border
                if (xfs.BorderId > -1)
                {
                    var ix = Borders.FindIndexById(xfs.Border.Id);
                    if (ix < 0)
                    {
                        ExcelBorderXml item = style.Borders[xfs.BorderId].Copy();
                        ix = Borders.Add(xfs.Border.Id, item);
                    }

                    newXfs.BorderId = ix;
                }

                //Fill
                if (xfs.FillId > -1)
                {
                    var ix = Fills.FindIndexById(xfs.Fill.Id);
                    if (ix < 0)
                    {
                        ExcelFillXml item = style.Fills[xfs.FillId].Copy();
                        ix = Fills.Add(xfs.Fill.Id, item);
                    }

                    newXfs.FillId = ix;
                }

                //Named style reference
                if (xfs.XfId > 0)
                {
                    var id    = style.CellStyleXfs[xfs.XfId].Id;
                    var newId = CellStyleXfs.FindIndexById(id);
                    if (newId >= 0)
                    {
                        newXfs.XfId = newId;
                    }
                    else if (style._wb != _wb && alwaysAddCellXfs == false) //Not the same workbook, copy the namedstyle to the workbook or match the id
                    {
                        var nsFind = style.NamedStyles.ToDictionary(d => d.StyleXfId);
                        if (nsFind.ContainsKey(xfs.XfId))
                        {
                            ExcelNamedStyleXml st = nsFind[xfs.XfId];
                            if (NamedStyles.ExistsKey(st.Name))
                            {
                                newXfs.XfId = NamedStyles.FindIndexById(st.Name);
                            }
                            else
                            {
                                ExcelNamedStyle ns = CreateNamedStyle(st.Name, st.Style);
                                newXfs.XfId = NamedStyles.Count - 1;
                            }
                        }
                    }
                }

                int index;
                if (isNamedStyle && alwaysAddCellXfs == false)
                {
                    index = CellStyleXfs.Add(newXfs.Id, newXfs);
                }
                else
                {
                    if (alwaysAddCellXfs)
                    {
                        index = CellXfs.Add(newXfs.Id, newXfs);
                    }
                    else
                    {
                        index = CellXfs.FindIndexById(newXfs.Id);
                        if (index < 0)
                        {
                            index = CellXfs.Add(newXfs.Id, newXfs);
                        }
                    }
                }

                return(index);
            }
        }
Exemple #6
0
 internal int CloneStyle(ExcelStyles style, int styleId, bool isNamedStyle)
 {
     return(CloneStyle(style, styleId, isNamedStyle, false));
 }
Exemple #7
0
 internal int CloneStyle(ExcelStyles style, int styleId)
 {
     return(CloneStyle(style, styleId, false, false));
 }