/// <summary>
        /// Adds column group from model.
        /// </summary>
        /// <param name="worksheet">The worksheet.</param>
        /// <param name="column">The column header definition.</param>
        /// <returns>
        /// Returns a new <see cref="T:OfficeOpenXml.ExcelRange" /> which contains de column header representation.
        /// </returns>
        /// <exception cref="T:System.ArgumentNullException">The value specified is <c>null</c>.</exception>
        public static void AddColumnGroupFromModel(this ExcelWorksheet worksheet, ColumnHeaderModel column)
        {
            SentinelHelper.ArgumentNull(worksheet);
            SentinelHelper.ArgumentNull(column);

            var group     = column.Group;
            var showGroup = group.Show == YesNo.Yes;

            if (!showGroup)
            {
                return;
            }

            var fields    = column.Owner.Parent.Fields;
            var fromField = fields[column.From];
            var toField   = fields[column.To];

            var from = fields.IndexOf(fromField) + 1;
            var to   = fields.IndexOf(toField) + 1;

            for (var i = from; i <= to; i++)
            {
                worksheet.Column(i).OutlineLevel = group.Level;
                worksheet.Column(i).Collapsed    = group.Collapsed == YesNo.Yes;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Returns a new range which represents the column header.
        /// </summary>
        /// <param name="table">The table.</param>
        /// <param name="row">The current row.</param>
        /// <param name="column">The column header definition.</param>
        /// <param name="offset">The offset.</param>
        /// <returns>
        /// Returns a new <see cref="T:Novacode.Cell" /> which contains de column header representation.
        /// </returns>
        /// <exception cref="T:System.ArgumentNullException">The value specified is <c>null</c>.</exception>
        public static Cell GetRangeFromModel(this Table table, int row, ColumnHeaderModel column, int offset)
        {
            SentinelHelper.ArgumentNull(table);
            SentinelHelper.ArgumentNull(column);

            var fields    = column.Owner.Parent.Fields;
            var fromField = fields[column.From];
            var toField   = fields[column.To];

            var from = fields.IndexOf(fromField);
            var to   = fields.IndexOf(toField);

            from = from - offset;
            to   = to - offset;

            var currentRow = table.Rows[row];

            currentRow.MergeCells(from, to);

            return(table.Rows[row].Cells[from]);
        }
        /// <summary>
        /// Returns a new range which represents the column header.
        /// </summary>
        /// <param name="worksheet">The worksheet.</param>
        /// <param name="row">The current row.</param>
        /// <param name="column">The column header definition.</param>
        /// <returns>
        /// Returns a new <see cref="T:OfficeOpenXml.ExcelRange" /> which contains de column header representation.
        /// </returns>
        /// <exception cref="T:System.ArgumentNullException">The value specified is <c>null</c>.</exception>
        public static ExcelRange GetRangeFromModel(this ExcelWorksheet worksheet, int row, ColumnHeaderModel column)
        {
            SentinelHelper.ArgumentNull(worksheet);
            SentinelHelper.ArgumentNull(column);

            var fields    = column.Owner.Parent.Fields;
            var fromField = fields[column.From];
            var toField   = fields[column.To];

            var from = fields.IndexOf(fromField) + 1;
            var to   = fields.IndexOf(toField) + 1;

            var range = ExcelCellBase.GetAddress(row, from, row, to);
            var cell  = worksheet.Cells[range];

            return(cell);
        }