diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs index d643370..e313e45 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/IXLColumns.cs @@ -7,7 +7,9 @@ { public interface IXLColumns: IEnumerable, IXLStylized { - Double Width { get; set; } + Double Width { set; } void Delete(); + void Add(IXLColumn column); + } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs index d3d1439..e245a95 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumns.cs @@ -7,6 +7,11 @@ { public class XLColumns: IXLColumns { + public XLColumns() + { + Style = XLWorkbook.DefaultStyle; + } + List columns = new List(); public IEnumerator GetEnumerator() { @@ -30,6 +35,7 @@ set { style = new XLStyle(this, value); + } } @@ -41,6 +47,7 @@ yield return style; foreach (var col in columns) { + yield return col.Style; foreach (var c in col.Internals.Worksheet.Internals.CellsCollection.Values.Where(c => c.Address.Column == col.Internals.FirstCellAddress.Column)) { yield return c.Style; @@ -56,19 +63,21 @@ public double Width { - get - { - throw new NotImplementedException(); - } set { - throw new NotImplementedException(); + columns.ForEach(c => c.Width = value); } } public void Delete() { - this.Column(ColumnNumber).Delete(XLShiftDeletedCells.ShiftCellsLeft); + columns.ForEach(c => c.Delete(XLShiftDeletedCells.ShiftCellsLeft)); + } + + + public void Add(IXLColumn column) + { + columns.Add(column); } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs index f505159..b9602d6 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/IXLWorksheet.cs @@ -12,9 +12,9 @@ new IXLColumn Column(String column); String Name { get; set; } IXLColumns Columns(); - List Columns(String columns); - List Columns(String firstColumn, String lastColumn); - List Columns(Int32 firstColumn, Int32 lastColumn); + IXLColumns Columns(String columns); + IXLColumns Columns(String firstColumn, String lastColumn); + IXLColumns Columns(Int32 firstColumn, Int32 lastColumn); List Rows(); List Rows(String rows); List Rows(Int32 firstRow, Int32 lastRow); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index c486d9b..a3b26c1 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -26,6 +26,8 @@ this.Name = sheetName; } + //private IXLColumns xlColumns = new XLColumns(); + public IXLWorksheetInternals Internals { get; private set; } #region IXLRange Members @@ -34,9 +36,9 @@ public Int32 ColumnNumber { get; private set; } public String ColumnLetter { get; private set; } - public List Columns() + public IXLColumns Columns() { - var retVal = new List(); + var retVal = new XLColumns(); var columnList = new List(); if (Internals.CellsCollection.Count > 0) @@ -52,30 +54,47 @@ return retVal; } - public List Columns(String columns) + public IXLColumns Columns(String columns) { - var retVal = new List(); + var retVal = new XLColumns(); var columnPairs = columns.Split(','); foreach (var pair in columnPairs) { - var columnRange = pair.Split(':'); - var firstColumn = columnRange[0]; - var lastColumn = columnRange[1]; + String firstColumn; + String lastColumn; + if (pair.Contains(':')) + { + var columnRange = pair.Split(':'); + firstColumn = columnRange[0]; + lastColumn = columnRange[1]; + } + else + { + firstColumn = pair; + lastColumn = pair; + } + Int32 tmp; if (Int32.TryParse(firstColumn, out tmp)) - retVal.AddRange(Columns(Int32.Parse(firstColumn), Int32.Parse(lastColumn))); + foreach (var col in Columns(Int32.Parse(firstColumn), Int32.Parse(lastColumn))) + { + retVal.Add(col); + } else - retVal.AddRange(Columns(firstColumn, lastColumn)); + foreach (var col in Columns(firstColumn, lastColumn)) + { + retVal.Add(col); + } } return retVal; } - public List Columns(String firstColumn, String lastColumn) + public IXLColumns Columns(String firstColumn, String lastColumn) { return Columns(XLAddress.GetColumnNumberFromLetter(firstColumn), XLAddress.GetColumnNumberFromLetter(lastColumn)); } - public List Columns(Int32 firstColumn, Int32 lastColumn) + public IXLColumns Columns(Int32 firstColumn, Int32 lastColumn) { - var retVal = new List(); + var retVal = new XLColumns(); for (var co = firstColumn; co <= lastColumn; co++) { diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Columns/ColumnCollections.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Columns/ColumnCollections.cs index 04f625c..d12c083 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/Columns/ColumnCollections.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Columns/ColumnCollections.cs @@ -57,27 +57,30 @@ ws.Cell("E1").Value = "Wide 2"; // Only the used columns in a worksheet - ws.Columns().ForEach(c => c.Width = 20); + ws.Columns().Width = 20; var ws2 = workbook.Worksheets.Add("Multiple Columns"); // Contiguous columns by number - ws2.Columns(1, 2).ForEach(c => c.Style.Fill.BackgroundColor = Color.Red); + ws2.Columns(1, 2).Style.Fill.BackgroundColor = Color.Red; // Contiguous columns by letter - ws2.Columns("D", "E").ForEach(c => c.Style.Fill.BackgroundColor = Color.Blue); + ws2.Columns("D", "E").Style.Fill.BackgroundColor = Color.Blue; // Contiguous columns by letter - ws2.Columns("G:H").ForEach(c => c.Style.Fill.BackgroundColor = Color.Blue); + ws2.Columns("G:H").Style.Fill.BackgroundColor = Color.DeepPink; // Spread columns by number - ws2.Columns("10:11,13:14").ForEach(c => c.Style.Fill.BackgroundColor = Color.Orange); + ws2.Columns("10:11,13:14").Style.Fill.BackgroundColor = Color.Orange; // Spread columns by letter - ws2.Columns("P:Q,S:T").ForEach(c => c.Style.Fill.BackgroundColor = Color.Turquoise); + ws2.Columns("P:Q,S:T").Style.Fill.BackgroundColor = Color.Turquoise; - ws2.Columns("A:T").ForEach(c => c.Width = 3); + // Use a single number/letter + ws2.Columns("V").Style.Fill.BackgroundColor = Color.Cyan; + ws2.Columns("A:V").Width = 3; + workbook.SaveAs(filePath); } diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/PageSetup/SheetTab.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/PageSetup/SheetTab.cs index 5f67b5c..873b228 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/PageSetup/SheetTab.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/PageSetup/SheetTab.cs @@ -26,7 +26,7 @@ ws.PageSetup.SetRowTitles(ws.Rows(1, 2)); // Adding columns to repeat at left - ws.PageSetup.SetColumnTitles(ws.Columns(1, 2)); + //ws.PageSetup.SetColumnTitles(ws.Columns(1, 2)); // Show gridlines ws.PageSetup.ShowGridlines = true;