using System;
using ClosedXML.Excel;

namespace ClosedXML_Examples
{
    public class InsertingDeletingRows : IXLExample
    {
        public void Create(String filePath)
        {
            var workbook = new XLWorkbook();
            var ws = workbook.Worksheets.Add("Inserting and Deleting Rows");

            // Range starts with 2 rows
            var rng = ws.Range("B2:C3");

            // Insert a row above the range
            ws.Row(1).InsertRowsBelow(1); // Range starts on B3

            // Insert a row in between the range
            ws.Row(3).InsertRowsBelow(1); // Range now has 3 rows

            // Insert a row (from a range) above the range
            ws.Range("B1:C1").InsertRowsBelow(1); // Range starts on B4

            // Insert a row (from a range) in between the range
            ws.Range("B4:C4").InsertRowsBelow(1); // Range now has 4 rows

            // Inserting rows from a range not covering all columns
            // does not affect our defined range
            ws.Range("A1:B1").InsertRowsBelow(1);
            ws.Range("C4:D4").InsertRowsBelow(1);

            // Delete a row above the range
            ws.Row(1).Delete(); // Range starts on B3

            // Delete a row (from a range) above the range
            ws.Range("B1:C1").Delete(XLShiftDeletedCells.ShiftCellsUp); // Range starts on B2

            // Delete a row in between the range
            ws.Row(3).Delete(); // Range now has 3 rows

            // Delete a row (from a range) in between the range
            ws.Range("B3:C3").Delete(XLShiftDeletedCells.ShiftCellsUp); // Range now has 2 rows

            // Deleting rows from a range not covering all columns
            // does not affect our defined range
            ws.Range("A1:B1").Delete(XLShiftDeletedCells.ShiftCellsUp);
            ws.Range("C4:D4").Delete(XLShiftDeletedCells.ShiftCellsUp);

            rng.Style.Fill.BackgroundColor = XLColor.Orange;

            workbook.SaveAs(filePath);
        }
    }
}
