/**
         * Gets the size of the margin in inches.
         * @param margin which margin to Get
         * @return the size of the margin
         */
        public double GetMargin(NPOI.SS.UserModel.MarginType margin)
        {
            Margin m = GetMarginRec(margin);

            if (m != null)
            {
                return(m.Margin);
            }
            else
            {
                switch (margin)
                {
                case NPOI.SS.UserModel.MarginType.LeftMargin:
                    return(.75);

                case NPOI.SS.UserModel.MarginType.RightMargin:
                    return(.75);

                case NPOI.SS.UserModel.MarginType.TopMargin:
                    return(1.0);

                case NPOI.SS.UserModel.MarginType.BottomMargin:
                    return(1.0);
                }
                throw new InvalidOperationException("Unknown margin constant:  " + margin);
            }
        }
        /**
         * Sets the size of the margin in inches.
         * @param margin which margin to Get
         * @param size the size of the margin
         */
        public void SetMargin(NPOI.SS.UserModel.MarginType margin, double size)
        {
            Margin m = GetMarginRec(margin);

            if (m == null)
            {
                switch (margin)
                {
                case NPOI.SS.UserModel.MarginType.LeftMargin:
                    _leftMargin = new LeftMarginRecord();
                    m           = _leftMargin;
                    break;

                case NPOI.SS.UserModel.MarginType.RightMargin:
                    _rightMargin = new RightMarginRecord();
                    m            = _rightMargin;
                    break;

                case NPOI.SS.UserModel.MarginType.TopMargin:
                    _topMargin = new TopMarginRecord();
                    m          = _topMargin;
                    break;

                case NPOI.SS.UserModel.MarginType.BottomMargin:
                    _bottomMargin = new BottomMarginRecord();
                    m             = _bottomMargin;
                    break;

                default:
                    throw new InvalidOperationException("Unknown margin constant:  " + margin);
                }
            }
            m.Margin = size;
        }
        private Margin GetMarginRec(NPOI.SS.UserModel.MarginType margin)
        {
            switch (margin)
            {
            case NPOI.SS.UserModel.MarginType.LeftMargin: return(_leftMargin);

            case NPOI.SS.UserModel.MarginType.RightMargin: return(_rightMargin);

            case NPOI.SS.UserModel.MarginType.TopMargin: return(_topMargin);

            case NPOI.SS.UserModel.MarginType.BottomMargin: return(_bottomMargin);

            default:
                throw new InvalidOperationException("Unknown margin constant:  " + (short)margin);
            }
        }