diff --git a/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/Excel/XLWorksheet.cs index 7e37bba..dee98ca 100644 --- a/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/Excel/XLWorksheet.cs @@ -379,8 +379,9 @@ firstRow = tPair; lastRow = tPair; } - foreach (IXLRow row in Rows(Int32.Parse(firstRow), Int32.Parse(lastRow))) - retVal.Add((XLRow)row); + using (var xlRows = Rows(Int32.Parse(firstRow), Int32.Parse(lastRow))) + foreach (IXLRow row in xlRows) + retVal.Add((XLRow)row); } return retVal; } @@ -933,15 +934,23 @@ foreach (string rangeAddressStr in ranges.Split(',').Select(s => s.Trim())) { if (XLHelper.IsValidRangeAddress(rangeAddressStr)) - retVal.Add(Range(new XLRangeAddress(Worksheet, rangeAddressStr))); + { + using (var range = Range(new XLRangeAddress(Worksheet, rangeAddressStr))) + retVal.Add(range); + } else if (NamedRanges.Any(n => String.Compare(n.Name, rangeAddressStr, true) == 0)) - NamedRange(rangeAddressStr).Ranges.ForEach(retVal.Add); + { + using (var xlRanges = NamedRange(rangeAddressStr).Ranges) + xlRanges.ForEach(retVal.Add); + } else { - Workbook.NamedRanges.First(n => - String.Compare(n.Name, rangeAddressStr, true) == 0 - && n.Ranges.First().Worksheet == this) - .Ranges.ForEach(retVal.Add); + using (var xlRanges = Workbook.NamedRanges.First(n => + String.Compare(n.Name, rangeAddressStr, true) == 0 + && n.Ranges.First().Worksheet == this).Ranges) + { + xlRanges.ForEach(retVal.Add); + } } } return retVal; @@ -1235,11 +1244,11 @@ { for (Int32 ro = firstRow; ro <= lastRow; ro++) { - var cellModel = model.Cell(ro - modelFirstRow + 1); - foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel.AsRange())).ToList()) - { - Range(ro, firstColumn, ro, lastColumn).AddConditionalFormat(cf); - } + using (var cellModel = model.Cell(ro - modelFirstRow + 1).AsRange()) + foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel)).ToList()) + { + using (var r = Range(ro, firstColumn, ro, lastColumn)) r.AddConditionalFormat(cf); + } } } insertedRange.Dispose(); @@ -1293,12 +1302,11 @@ if (firstRow == 1) return; SuspendEvents(); - var rangeUsed = range.Worksheet.RangeUsed(true); IXLRangeAddress usedAddress; - if (rangeUsed == null) - usedAddress = range.RangeAddress; - else - usedAddress = rangeUsed.RangeAddress; + using (var rangeUsed = range.Worksheet.RangeUsed(true)) + { + usedAddress = rangeUsed == null ? range.RangeAddress : rangeUsed.RangeAddress; + } ResumeEvents(); if (firstRow < usedAddress.FirstAddress.RowNumber) firstRow = usedAddress.FirstAddress.RowNumber; @@ -1320,11 +1328,11 @@ { for (Int32 co = firstColumn; co <= lastColumn; co++) { - var cellModel = model.Cell(co - modelFirstColumn + 1); - foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel.AsRange())).ToList()) - { - Range(firstRow, co, lastRow, co).AddConditionalFormat(cf); - } + using (var cellModel = model.Cell(co - modelFirstColumn + 1).AsRange()) + foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel)).ToList()) + { + using (var r = Range(firstRow, co, lastRow, co)) r.AddConditionalFormat(cf); + } } } insertedRange.Dispose(); @@ -1469,7 +1477,8 @@ && n.Ranges.Count == 1); if (namedRanges == null || !namedRanges.Ranges.Any()) return null; - return (XLCell)namedRanges.Ranges.First().FirstCell(); + using (var rs = namedRanges.Ranges) + return (XLCell)rs.First().FirstCell(); } internal XLCell CellFast(String cellAddressInRange)