示例#1
0
        /**
         * Get the cellAlignment object to use for manage alignment
         * @return XSSFCellAlignment - cell alignment
         */

        internal XSSFCellAlignment GetCellAlignment()
        {
            if (this._cellAlignment == null)
            {
                this._cellAlignment = new XSSFCellAlignment(GetCTCellAlignment());
            }
            return(this._cellAlignment);
        }
示例#2
0
        public void CloneStyleFrom(ICellStyle source)
        {
            if (!(source is XSSFCellStyle))
            {
                throw new ArgumentException("Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle");
            }
            XSSFCellStyle xssfCellStyle = (XSSFCellStyle)source;

            if (xssfCellStyle._stylesSource == this._stylesSource)
            {
                this._cellXf      = xssfCellStyle.GetCoreXf();
                this._cellStyleXf = xssfCellStyle.GetStyleXf();
            }
            else
            {
                try
                {
                    if (this._cellXf.IsSetAlignment())
                    {
                        this._cellXf.UnsetAlignment();
                    }
                    if (this._cellXf.IsSetExtLst())
                    {
                        this._cellXf.UnsetExtLst();
                    }
                    this._cellXf = CT_Xf.Parse(xssfCellStyle.GetCoreXf().ToString());
                    this._stylesSource.ReplaceCellXfAt(this._cellXfId, this._cellXf);
                }
                catch (XmlException ex)
                {
                    throw new POIXMLException((Exception)ex);
                }
                this.DataFormat = new XSSFDataFormat(this._stylesSource).GetFormat(xssfCellStyle.GetDataFormatString());
                try
                {
                    XSSFFont xssfFont = new XSSFFont(CT_Font.Parse(xssfCellStyle.GetFont().GetCTFont().ToString()));
                    xssfFont.RegisterTo(this._stylesSource);
                    this.SetFont((IFont)xssfFont);
                }
                catch (XmlException ex)
                {
                    throw new POIXMLException((Exception)ex);
                }
            }
            this._font          = (XSSFFont)null;
            this._cellAlignment = (XSSFCellAlignment)null;
        }
示例#3
0
        /**
         * Clones all the style information from another
         *  XSSFCellStyle, onto this one. This
         *  XSSFCellStyle will then have all the same
         *  properties as the source, but the two may
         *  be edited independently.
         * Any stylings on this XSSFCellStyle will be lost!
         *
         * The source XSSFCellStyle could be from another
         *  XSSFWorkbook if you like. This allows you to
         *  copy styles from one XSSFWorkbook to another.
         */

        public void CloneStyleFrom(ICellStyle source)
        {
            if (source is XSSFCellStyle)
            {
                XSSFCellStyle src = (XSSFCellStyle)source;

                // Is it on our Workbook?
                if (src._stylesSource == _stylesSource)
                {
                    // Nice and easy
                    _cellXf      = src.GetCoreXf().Copy();
                    _cellStyleXf = src.GetStyleXf().Copy();
                }
                else
                {
                    // Copy the style
                    try
                    {
                        // Remove any children off the current style, to
                        //  avoid orphaned nodes
                        if (_cellXf.IsSetAlignment())
                        {
                            _cellXf.UnsetAlignment();
                        }
                        if (_cellXf.IsSetExtLst())
                        {
                            _cellXf.UnsetExtLst();
                        }

                        // Create a new Xf with the same contents
                        _cellXf =
                            src.GetCoreXf().Copy();

                        // bug 56295: ensure that the fills is available and set correctly
                        CT_Fill fill = CT_Fill.Parse(src.GetCTFill().ToString());
                        AddFill(fill);

                        // Swap it over
                        _stylesSource.ReplaceCellXfAt(_cellXfId, _cellXf);
                    }
                    catch (XmlException e)
                    {
                        throw new POIXMLException(e);
                    }

                    // Copy the format
                    String fmt = src.GetDataFormatString();
                    DataFormat = (
                        (new XSSFDataFormat(_stylesSource)).GetFormat(fmt)
                        );

                    // Copy the font
                    try
                    {
                        CT_Font ctFont =
                            src.GetFont().GetCTFont().Clone();
                        XSSFFont font = new XSSFFont(ctFont);
                        font.RegisterTo(_stylesSource);
                        SetFont(font);
                    }
                    catch (XmlException e)
                    {
                        throw new POIXMLException(e);
                    }
                }

                // Clear out cached details
                _font          = null;
                _cellAlignment = null;
            }
            else
            {
                throw new ArgumentException("Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle");
            }
        }