diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCell.cs index 625c7a2..50140cf 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCell.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCell.cs @@ -13,7 +13,7 @@ public static readonly DateTime baseDate = new DateTime(1899, 12, 30); public IXLWorksheet Worksheet { get { return worksheet; } } public XLWorksheet worksheet; - public XLCell(IXLAddress address, IXLStyle defaultStyle, XLWorksheet worksheet) + public XLCell(XLWorksheet worksheet, IXLAddress address, IXLStyle defaultStyle) { this.Address = address; this.ShareString = true; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRange.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRange.cs index f1e02a4..2316212 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRange.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRange.cs @@ -357,7 +357,7 @@ { var oldCell = rngToTranspose.Cell(ro, co); var newKey = rngToTranspose.Cell(co, ro).Address; // new XLAddress(Worksheet, c.Address.ColumnNumber, c.Address.RowNumber); - var newCell = new XLCell(newKey, oldCell.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, oldCell.Style); newCell.CopyFrom(oldCell); cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(oldCell.Address); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index 2f0aea8..1dbed82 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Text.RegularExpressions; namespace ClosedXML.Excel { @@ -116,7 +114,7 @@ && !(Worksheet as XLWorksheet).Internals.ColumnsCollection[absoluteAddress.ColumnNumber].Style.Equals(this.Worksheet.Style)) style = (Worksheet as XLWorksheet).Internals.ColumnsCollection[absoluteAddress.ColumnNumber].Style; } - var newCell = new XLCell(absoluteAddress, style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, absoluteAddress, style); (Worksheet as XLWorksheet).Internals.CellsCollection.Add(absoluteAddress, newCell); return newCell; } @@ -370,7 +368,7 @@ { oldCell = this.Worksheet.Cell(oldKey); } - var newCell = new XLCell(newKey, oldCell.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, oldCell.Style); newCell.CopyValues((XLCell)oldCell); cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(oldKey); @@ -390,7 +388,7 @@ { var newColumn = c.Key.ColumnNumber + numberOfColumns; var newKey = new XLAddress(Worksheet, c.Key.RowNumber, newColumn, false, false); - var newCell = new XLCell(newKey, c.Value.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, c.Value.Style); newCell.CopyValues(c.Value); cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(c.Key); @@ -504,7 +502,7 @@ { oldCell = this.Worksheet.Cell(oldKey); } - var newCell = new XLCell(newKey, oldCell.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, oldCell.Style); newCell.CopyFrom(oldCell); cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(oldKey); @@ -524,7 +522,7 @@ { var newRow = c.Key.RowNumber + numberOfRows; var newKey = new XLAddress(Worksheet, newRow, c.Key.ColumnNumber, false, false); - var newCell = new XLCell(newKey, c.Value.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, c.Value.Style); newCell.CopyFrom(c.Value); cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(c.Key); @@ -709,7 +707,7 @@ foreach (var c in cellsQuery) { var newKey = new XLAddress(Worksheet, c.Key.RowNumber - rowModifier, c.Key.ColumnNumber - columnModifier, false, false); - var newCell = new XLCell(newKey, c.Value.Style, Worksheet as XLWorksheet); + var newCell = new XLCell(Worksheet as XLWorksheet, newKey, c.Value.Style); newCell.CopyValues(c.Value); //newCell.ShiftFormula(rowModifier * -1, columnModifier * -1); cellsToDelete.Add(c.Key); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs index cca78d3..6be49b3 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs @@ -1,51 +1,70 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; - namespace ClosedXML.Excel { - internal class XLRow: XLRangeBase, IXLRow + internal class XLRow : XLRangeBase, IXLRow { + #region Static + private static double DegreeToRadian(double angle) + { + return Math.PI*angle/180.0; + } + #endregion + #region Private fields + private Boolean m_collapsed; + private Int32 m_outlineLevel; + private Double m_height; + private Boolean m_isHidden; + private IXLStyle style; + #endregion + #region Constructor public XLRow(Int32 row, XLRowParameters xlRowParameters) - : base(new XLRangeAddress(new XLAddress(xlRowParameters.Worksheet, row, 1, false, false), new XLAddress(xlRowParameters.Worksheet, row, XLWorksheet.MaxNumberOfColumns, false, false))) + : base(new XLRangeAddress(new XLAddress(xlRowParameters.Worksheet, row, 1, false, false), + new XLAddress(xlRowParameters.Worksheet, row, XLWorksheet.MaxNumberOfColumns, false, false))) { SetRowNumber(row); - - this.IsReference = xlRowParameters.IsReference; + + IsReference = xlRowParameters.IsReference; if (IsReference) { - (Worksheet as XLWorksheet).RangeShiftedRows += new RangeShiftedRowsDelegate(Worksheet_RangeShiftedRows); + //SMELL: Leak may occur + (Worksheet as XLWorksheet).RangeShiftedRows += Worksheet_RangeShiftedRows; } else { - this.style = new XLStyle(this, xlRowParameters.DefaultStyle); - this.height = xlRowParameters.Worksheet.RowHeight; + style = new XLStyle(this, xlRowParameters.DefaultStyle); + m_height = xlRowParameters.Worksheet.RowHeight; } } public XLRow(XLRow row) - : base(new XLRangeAddress(new XLAddress(row.Worksheet, row.RowNumber(), 1, false, false), new XLAddress(row.Worksheet, row.RowNumber(), XLWorksheet.MaxNumberOfColumns, false, false))) + : base(new XLRangeAddress(new XLAddress(row.Worksheet, row.RowNumber(), 1, false, false), + new XLAddress(row.Worksheet, row.RowNumber(), XLWorksheet.MaxNumberOfColumns, false, false))) { - height = row.height; + m_height = row.m_height; IsReference = row.IsReference; - collapsed = row.collapsed; - isHidden = row.isHidden; - outlineLevel = row.outlineLevel; + m_collapsed = row.m_collapsed; + m_isHidden = row.m_isHidden; + m_outlineLevel = row.m_outlineLevel; style = new XLStyle(this, row.Style); } - - void Worksheet_RangeShiftedRows(XLRange range, int rowsShifted) + #endregion + private void Worksheet_RangeShiftedRows(XLRange range, int rowsShifted) { - if (range.RangeAddress.FirstAddress.RowNumber <= this.RowNumber()) - SetRowNumber(this.RowNumber() + rowsShifted); + if (range.RangeAddress.FirstAddress.RowNumber <= RowNumber()) + { + SetRowNumber(RowNumber() + rowsShifted); + } } - void RowsCollection_RowShifted(int startingRow, int rowsShifted) + private void RowsCollection_RowShifted(int startingRow, int rowsShifted) { - if (startingRow <= this.RowNumber()) - SetRowNumber(this.RowNumber() + rowsShifted); + if (startingRow <= RowNumber()) + { + SetRowNumber(RowNumber() + rowsShifted); + } } private void SetRowNumber(Int32 row) @@ -57,81 +76,78 @@ else { RangeAddress.FirstAddress = new XLAddress(Worksheet, row, 1, RangeAddress.FirstAddress.FixedRow, RangeAddress.FirstAddress.FixedColumn); - RangeAddress.LastAddress = new XLAddress(Worksheet, row, XLWorksheet.MaxNumberOfColumns, RangeAddress.LastAddress.FixedRow, RangeAddress.LastAddress.FixedColumn); + RangeAddress.LastAddress = new XLAddress(Worksheet, + row, + XLWorksheet.MaxNumberOfColumns, + RangeAddress.LastAddress.FixedRow, + RangeAddress.LastAddress.FixedColumn); } } public Boolean IsReference { get; private set; } - #region IXLRow Members - - private Double height; - public Double Height + public Double Height { get { if (IsReference) { - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Height; + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Height; } - else - { - return height; - } + return m_height; } set { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Height = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Height = value; } else { - height = value; + m_height = value; } } } public void Delete() { - var rowNumber = this.RowNumber(); - this.AsRange().Delete(XLShiftDeletedCells.ShiftCellsUp); + var rowNumber = RowNumber(); + AsRange().Delete(XLShiftDeletedCells.ShiftCellsUp); (Worksheet as XLWorksheet).Internals.RowsCollection.Remove(rowNumber); - List rowsToMove = new List(); + var rowsToMove = new List(); rowsToMove.AddRange((Worksheet as XLWorksheet).Internals.RowsCollection.Where(c => c.Key > rowNumber).Select(c => c.Key)); - foreach (var row in rowsToMove.OrderBy(r=>r)) + foreach (var row in rowsToMove.OrderBy(r => r)) { (Worksheet as XLWorksheet).Internals.RowsCollection.Add(row - 1, (Worksheet as XLWorksheet).Internals.RowsCollection[row]); (Worksheet as XLWorksheet).Internals.RowsCollection.Remove(row); } } - public new IXLRows InsertRowsBelow(Int32 numberOfRows) { - var rowNum = this.RowNumber(); + var rowNum = RowNumber(); (Worksheet as XLWorksheet).Internals.RowsCollection.ShiftRowsDown(rowNum + 1, numberOfRows); - XLRange range = (XLRange)this.Worksheet.Row(rowNum).AsRange(); + XLRange range = (XLRange) Worksheet.Row(rowNum).AsRange(); range.InsertRowsBelow(true, numberOfRows); return Worksheet.Rows(rowNum + 1, rowNum + numberOfRows); } public new IXLRows InsertRowsAbove(Int32 numberOfRows) { - var rowNum = this.RowNumber(); + var rowNum = RowNumber(); (Worksheet as XLWorksheet).Internals.RowsCollection.ShiftRowsDown(rowNum, numberOfRows); // We can't use this.AsRange() because we've shifted the rows // and we want to use the old rowNum. - XLRange range = (XLRange)this.Worksheet.Row(rowNum).AsRange(); + XLRange range = (XLRange) Worksheet.Row(rowNum).AsRange(); range.InsertRowsAbove(true, numberOfRows); return Worksheet.Rows(rowNum, rowNum + numberOfRows - 1); } public new void Clear() { - var range = this.AsRange(); + var range = AsRange(); range.Clear(); - this.Style = Worksheet.Style; + Style = Worksheet.Style; } public IXLCell Cell(Int32 columnNumber) @@ -160,7 +176,9 @@ if (rangeAddressStr.Contains(':') || rangeAddressStr.Contains('-')) { if (rangeAddressStr.Contains('-')) + { rangeAddressStr = rangeAddressStr.Replace('-', ':'); + } String[] arrRange = rangeAddressStr.Split(':'); var firstPart = arrRange[0]; @@ -183,8 +201,8 @@ public IXLCells Cells(String firstColumn, String lastColumn) { - return Cells(XLAddress.GetColumnNumberFromLetter(firstColumn) + ":" - + XLAddress.GetColumnNumberFromLetter(lastColumn)); + return Cells(XLAddress.GetColumnNumberFromLetter(firstColumn) + ":" + + XLAddress.GetColumnNumberFromLetter(lastColumn)); } public IXLRow AdjustToContents() { @@ -214,7 +232,7 @@ //var thisHeight = ((XLFont)c.Style.Font).GetHeight(); Int32 textRotation = c.Style.Alignment.TextRotation; - var f = (XLFont)c.Style.Font; + var f = (XLFont) c.Style.Font; Double thisHeight; if (textRotation == 0) { @@ -224,42 +242,44 @@ { if (textRotation == 255) { - thisHeight = f.GetHeight() * c.GetFormattedString().Length; + thisHeight = f.GetHeight()*c.GetFormattedString().Length; } else { Int32 rotation; if (textRotation == 90 || textRotation == 180 || textRotation == 255) + { rotation = 90; + } else - rotation = textRotation % 90; + { + rotation = textRotation%90; + } Double r = DegreeToRadian(rotation); Double b = f.GetHeight(); - Double m = f.GetHeight() * c.GetFormattedString().Length; + Double m = f.GetHeight()*c.GetFormattedString().Length; Double t = m - b; - thisHeight = (rotation / 90) * t; - + thisHeight = (rotation/90)*t; } } if (thisHeight > maxHeight) + { maxHeight = thisHeight; + } } } if (maxHeight == 0) + { maxHeight = Worksheet.RowHeight; + } Height = maxHeight; return this; } - private double DegreeToRadian(double angle) - { - return Math.PI * angle / 180.0; - } - public IXLRow AdjustToContents(Double minHeight, Double maxHeight) { return AdjustToContents(1, XLWorksheet.MaxNumberOfColumns, minHeight, maxHeight); @@ -286,7 +306,7 @@ if (!isMerged) { Int32 textRotation = c.Style.Alignment.TextRotation; - var f = (XLFont)c.Style.Font; + var f = (XLFont) c.Style.Font; Double thisHeight; if (textRotation == 0) { @@ -296,22 +316,25 @@ { if (textRotation == 255) { - thisHeight = f.GetHeight() * c.GetFormattedString().Length; + thisHeight = f.GetHeight()*c.GetFormattedString().Length; } else { Int32 rotation; if (textRotation == 90 || textRotation == 180 || textRotation == 255) + { rotation = 90; + } else - rotation = textRotation % 90; + { + rotation = textRotation%90; + } Double r = DegreeToRadian(rotation); Double b = f.GetHeight(); - Double m = f.GetHeight() * c.GetFormattedString().Length; + Double m = f.GetHeight()*c.GetFormattedString().Length; Double t = m - b; - thisHeight = (rotation / 90) * t; - + thisHeight = (rotation/90)*t; } } @@ -321,7 +344,9 @@ break; } else if (thisHeight > rowMaxHeight) + { rowMaxHeight = thisHeight; + } } } @@ -337,48 +362,45 @@ { IsHidden = false; } - private Boolean isHidden; + public Boolean IsHidden { get { if (IsReference) { - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].IsHidden; + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].IsHidden; } else { - return isHidden; + return m_isHidden; } } set { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].IsHidden = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].IsHidden = value; } else { - isHidden = value; + m_isHidden = value; } } } - #endregion - #region IXLStylized Members - internal void SetStyleNoColumns(IXLStyle value) { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].SetStyleNoColumns(value); + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].SetStyleNoColumns(value); } else { style = new XLStyle(this, value); - var row = this.RowNumber(); + var row = RowNumber(); foreach (var c in (Worksheet as XLWorksheet).Internals.CellsCollection.Values.Where(c => c.Address.RowNumber == row)) { c.Style = value; @@ -386,48 +408,56 @@ } } - internal IXLStyle style; public override IXLStyle Style { get { if (IsReference) - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Style; + { + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Style; + } else + { return style; + } } set { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Style = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Style = value; } else { style = new XLStyle(this, value); - Int32 minColumn = 1; Int32 maxColumn = 0; - var row = this.RowNumber(); + var row = RowNumber(); if ((Worksheet as XLWorksheet).Internals.CellsCollection.Values.Any(c => c.Address.RowNumber == row)) { minColumn = (Worksheet as XLWorksheet).Internals.CellsCollection.Values - .Where(c => c.Address.RowNumber == row) - .Min(c => c.Address.ColumnNumber); + .Where(c => c.Address.RowNumber == row) + .Min(c => c.Address.ColumnNumber); maxColumn = (Worksheet as XLWorksheet).Internals.CellsCollection.Values - .Where(c => c.Address.RowNumber == row) - .Max(c => c.Address.ColumnNumber); + .Where(c => c.Address.RowNumber == row) + .Max(c => c.Address.ColumnNumber); } if ((Worksheet as XLWorksheet).Internals.ColumnsCollection.Count > 0) { Int32 minInCollection = (Worksheet as XLWorksheet).Internals.ColumnsCollection.Keys.Min(); Int32 maxInCollection = (Worksheet as XLWorksheet).Internals.ColumnsCollection.Keys.Max(); - if (minInCollection < minColumn) minColumn = minInCollection; - if (maxInCollection > maxColumn) maxColumn = maxInCollection; + if (minInCollection < minColumn) + { + minColumn = minInCollection; + } + if (maxInCollection > maxColumn) + { + maxColumn = maxInCollection; + } } - + for (Int32 co = minColumn; co <= maxColumn; co++) { Worksheet.Cell(row, co).Style = value; @@ -444,16 +474,23 @@ yield return Style; - var row = this.RowNumber(); + var row = RowNumber(); Int32 minColumn = 1; Int32 maxColumn = 0; if ((Worksheet as XLWorksheet).Internals.CellsCollection.Values.Any(c => c.Address.RowNumber == row)) - maxColumn = (Worksheet as XLWorksheet).Internals.CellsCollection.Values.Where(c => c.Address.RowNumber == row).Max(c => c.Address.ColumnNumber); + { + maxColumn = + (Worksheet as XLWorksheet).Internals.CellsCollection.Values.Where(c => c.Address.RowNumber == row).Max( + c => c.Address.ColumnNumber); + } if ((Worksheet as XLWorksheet).Internals.ColumnsCollection.Count > 0) { Int32 maxInCollection = (Worksheet as XLWorksheet).Internals.ColumnsCollection.Keys.Max(); - if (maxInCollection > maxColumn) maxColumn = maxInCollection; + if (maxInCollection > maxColumn) + { + maxColumn = maxInCollection; + } } for (var co = minColumn; co <= maxColumn; co++) @@ -472,15 +509,19 @@ get { if (IsReference) - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].InnerStyle; + { + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].InnerStyle; + } else - return new XLStyle(new XLStylizedContainer(this.style, this), style); + { + return new XLStyle(new XLStylizedContainer(style, this), style); + } } set { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].InnerStyle = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].InnerStyle = value; } else { @@ -493,63 +534,59 @@ { return Range(1, 1, 1, XLWorksheet.MaxNumberOfColumns); } - #endregion - - private Boolean collapsed; public Boolean Collapsed { get { if (IsReference) { - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Collapsed; + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Collapsed; } else { - return collapsed; + return m_collapsed; } } set { if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].Collapsed = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].Collapsed = value; } else { - collapsed = value; + m_collapsed = value; } } } - private Int32 outlineLevel; + public Int32 OutlineLevel { get { if (IsReference) { - return (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].OutlineLevel; + return (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].OutlineLevel; } - else - { - return outlineLevel; - } + return m_outlineLevel; } set { if (value < 1 || value > 8) + { throw new ArgumentOutOfRangeException("Outline level must be between 1 and 8."); + } if (IsReference) { - (Worksheet as XLWorksheet).Internals.RowsCollection[this.RowNumber()].OutlineLevel = value; + (Worksheet as XLWorksheet).Internals.RowsCollection[RowNumber()].OutlineLevel = value; } else { (Worksheet as XLWorksheet).IncrementColumnOutline(value); - (Worksheet as XLWorksheet).DecrementColumnOutline(outlineLevel); - outlineLevel = value; + (Worksheet as XLWorksheet).DecrementColumnOutline(m_outlineLevel); + m_outlineLevel = value; } } } @@ -569,7 +606,9 @@ public void Group(Boolean collapse) { if (OutlineLevel < 8) + { OutlineLevel += 1; + } Collapsed = collapse; } @@ -587,7 +626,9 @@ else { if (OutlineLevel > 0) + { OutlineLevel -= 1; + } } } public void Collapse() @@ -603,27 +644,27 @@ public Int32 CellCount() { - return this.RangeAddress.LastAddress.ColumnNumber - this.RangeAddress.FirstAddress.ColumnNumber + 1; + return RangeAddress.LastAddress.ColumnNumber - RangeAddress.FirstAddress.ColumnNumber + 1; } public IXLRow Sort() { - this.RangeUsed().Sort(XLSortOrientation.LeftToRight); + RangeUsed().Sort(XLSortOrientation.LeftToRight); return this; } public IXLRow Sort(XLSortOrder sortOrder) { - this.RangeUsed().Sort(XLSortOrientation.LeftToRight, sortOrder); + RangeUsed().Sort(XLSortOrientation.LeftToRight, sortOrder); return this; } public IXLRow Sort(Boolean matchCase) { - this.AsRange().Sort(XLSortOrientation.LeftToRight, matchCase); + AsRange().Sort(XLSortOrientation.LeftToRight, matchCase); return this; } public IXLRow Sort(XLSortOrder sortOrder, Boolean matchCase) { - this.AsRange().Sort(XLSortOrientation.LeftToRight, sortOrder, matchCase); + AsRange().Sort(XLSortOrientation.LeftToRight, sortOrder, matchCase); return this; } @@ -642,16 +683,19 @@ { var rngUsed = RangeUsed().Row(1); CopyToCell(rngUsed, target); - - Int32 lastColumnNumber = target.Address.ColumnNumber + rngUsed.CellCount() - 1; - if (lastColumnNumber > XLWorksheet.MaxNumberOfColumns) lastColumnNumber = XLWorksheet.MaxNumberOfColumns; + + Int32 lastColumnNumber = target.Address.ColumnNumber + rngUsed.CellCount() - 1; + if (lastColumnNumber > XLWorksheet.MaxNumberOfColumns) + { + lastColumnNumber = XLWorksheet.MaxNumberOfColumns; + } return target.Worksheet.Range( - target.Address.RowNumber, - target.Address.ColumnNumber, - target.Address.RowNumber, - lastColumnNumber) - .Row(1); + target.Address.RowNumber, + target.Address.ColumnNumber, + target.Address.RowNumber, + lastColumnNumber) + .Row(1); } public new IXLRangeRow CopyTo(IXLRangeBase target) { @@ -661,29 +705,34 @@ Int32 targetColumnCount = targetRangeUsed.ColumnCount(); Int32 maxColumn = thisColumnCount > targetColumnCount ? thisColumnCount : targetColumnCount; - CopyToCell(this.Range(1, 1, 1, maxColumn).Row(1), target.FirstCell()); + CopyToCell(Range(1, 1, 1, maxColumn).Row(1), target.FirstCell()); Int32 lastColumnNumber = target.RangeAddress.LastAddress.ColumnNumber + maxColumn - 1; - if (lastColumnNumber > XLWorksheet.MaxNumberOfColumns) lastColumnNumber = XLWorksheet.MaxNumberOfColumns; + if (lastColumnNumber > XLWorksheet.MaxNumberOfColumns) + { + lastColumnNumber = XLWorksheet.MaxNumberOfColumns; + } return (target as XLRangeBase).Worksheet.Range( - target.RangeAddress.FirstAddress.RowNumber, - target.RangeAddress.LastAddress.ColumnNumber, - target.RangeAddress.FirstAddress.RowNumber, - lastColumnNumber) - .Row(1); + target.RangeAddress.FirstAddress.RowNumber, + target.RangeAddress.LastAddress.ColumnNumber, + target.RangeAddress.FirstAddress.RowNumber, + lastColumnNumber) + .Row(1); } public IXLRow CopyTo(IXLRow row) { var thisRangeUsed = RangeUsed(); - Int32 thisColumnCount = thisRangeUsed.ColumnCount(); + + Int32 thisColumnCount = ReferenceEquals(thisRangeUsed, null) ? 0 : thisRangeUsed.ColumnCount(); //var targetRangeUsed = column target.AsRange().RangeUsed(); - Int32 targetColumnCount = row.LastCellUsed(true).Address.ColumnNumber; + var lastCellUsed = row.LastCellUsed(true); + Int32 targetColumnCount = ReferenceEquals(lastCellUsed, null) ? 0 : row.LastCellUsed(true).Address.ColumnNumber; Int32 maxColumn = thisColumnCount > targetColumnCount ? thisColumnCount : targetColumnCount; - CopyToCell(this.Row(1, maxColumn), row.FirstCell()); + CopyToCell(Row(1, maxColumn), row.FirstCell()); var newRow = row as XLRow; - newRow.height = height; + newRow.m_height = m_height; newRow.style = new XLStyle(newRow, Style); return newRow; } @@ -698,14 +747,14 @@ var rowPairs = rows.Split(','); foreach (var pair in rowPairs) { - this.AsRange().Rows(pair.Trim()).ForEach(r => retVal.Add(r)); + AsRange().Rows(pair.Trim()).ForEach(retVal.Add); } return retVal; } public IXLRow AddHorizontalPageBreak() { - Worksheet.PageSetup.AddHorizontalPageBreak(this.RowNumber()); + Worksheet.PageSetup.AddHorizontalPageBreak(RowNumber()); return this; } @@ -715,4 +764,4 @@ return this; } } -} +} \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj b/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj index d3244d2..3668a59 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/ClosedXML_Examples.csproj @@ -103,6 +103,9 @@ true false + + ClosedXML_Examples.Program + @@ -120,6 +123,7 @@ + @@ -167,6 +171,7 @@ + diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Delete/RemoveRows.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Delete/RemoveRows.cs new file mode 100644 index 0000000..cdaab92 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Delete/RemoveRows.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ClosedXML.Excel; + +using System.Drawing; +using ClosedXML_Examples.Rows; + +namespace ClosedXML_Examples.Delete +{ + public class DeleteRows + { + #region Variables + + // Public + + // Private + + + #endregion + + #region Properties + + // Public + + // Private + + // Override + + + #endregion + + #region Events + + // Public + + // Private + + // Override + + + #endregion + + #region Methods + + // Public + public void Create(String filePath) + { + #region Create case + { + var workbook = new XLWorkbook(); + var ws = workbook.Worksheets.Add("Delete red rows"); + + // Put a value in a few cells + foreach (var r in Enumerable.Range(1, 5)) + foreach (var c in Enumerable.Range(1, 5)) + ws.Cell(r, c).Value = string.Format("R{0}C{1}", r, c); + + + var blueRow = ws.Rows(1, 2); + var redRow = ws.Row(5); + + blueRow.Style.Fill.BackgroundColor = XLColor.Blue; + + redRow.Style.Fill.BackgroundColor = XLColor.Red; + workbook.SaveAs(filePath); + } + #endregion + + #region Remove rows + { + var workbook = new XLWorkbook(filePath); + var ws = workbook.Worksheets.Worksheet("Delete red rows"); + + ws.Rows(1, 2).Delete(); + workbook.Save(); + } + #endregion + + } + + // Private + + // Override + + + #endregion + } +} diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/ModifyFiles.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/ModifyFiles.cs new file mode 100644 index 0000000..1849e9b --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/ModifyFiles.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ClosedXML_Examples.Delete; +using ClosedXML_Examples.Styles; +using ClosedXML_Examples.Columns; +using ClosedXML_Examples.Rows; +using ClosedXML_Examples.Misc; +using ClosedXML_Examples.Ranges; +using ClosedXML_Examples.PageSetup; + +namespace ClosedXML_Examples +{ + public class ModifyFiles + { + public static void Run() + { + new DeleteRows().Create(@"C:\Excel Files\Modify\DeleteRows.xlsx"); + } + } +} diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs index 81dbd93..603ad56 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs @@ -17,12 +17,8 @@ { CreateFiles.CreateAllFiles(); LoadFiles.LoadAllFiles(); - } - public static void ExecuteMain() - { - CreateFiles.CreateAllFiles(); - LoadFiles.LoadAllFiles(); + ModifyFiles.Run(); } } } \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Excel/..svnbridge/.svnbridge b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Excel/..svnbridge/.svnbridge new file mode 100644 index 0000000..7248aa4 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Excel/..svnbridge/.svnbridge @@ -0,0 +1,13 @@ +svn:ignoreCharts +Columns +CustomProperties +DataValidation +Hyperlinks +NamedRanges +PageSetup +Ranges +RichText +Rows +Style +Tables + \ No newline at end of file