diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs index 07fd967..27f62c8 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs @@ -104,11 +104,28 @@ #region IXLRow Members + private Boolean _loading; + public Boolean Loading + { + get { return IsReference ? Worksheet.Internals.RowsCollection[RowNumber()].Loading : _loading; } + set + { + if (IsReference) + Worksheet.Internals.RowsCollection[RowNumber()].Loading = value; + else + _loading = value; + } + } + + public Boolean HeightChanged { get; private set; } public Double Height { get { return IsReference ? Worksheet.Internals.RowsCollection[RowNumber()].Height : _height; } set { + if (!Loading) + HeightChanged = true; + if (IsReference) Worksheet.Internals.RowsCollection[RowNumber()].Height = value; else @@ -680,5 +697,7 @@ return base.IsEmpty(includeFormats); } + + } } \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index 9445601..1e28ac2 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -889,10 +889,15 @@ Row row) { var xlRow = ws.Row((Int32) row.RowIndex.Value, false); + if (row.Height != null) xlRow.Height = row.Height; else + { + xlRow.Loading = true; xlRow.Height = ws.RowHeight; + xlRow.Loading = false; + } if (row.Hidden != null && row.Hidden) xlRow.Hide(); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs index 7aa6233..ab429b9 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2819,18 +2819,19 @@ if (xlWorksheet.Internals.RowsCollection.ContainsKey(distinctRow)) { var thisRow = xlWorksheet.Internals.RowsCollection[distinctRow]; - if (thisRow.Height != xlWorksheet.RowHeight) + if (thisRow.HeightChanged) { row.Height = thisRow.Height; row.CustomHeight = true; + row.CustomFormat = true; } - //if (!thisRow.Style.Equals(xlWorksheet.Style)) if (thisRow.GetStyleId() != xlWorksheet.GetStyleId()) { row.StyleIndex = context.SharedStyles[thisRow.GetStyleId()].StyleId; row.CustomFormat = true; } + if (thisRow.IsHidden) row.Hidden = true; if (thisRow.Collapsed) diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index 40f41db..bed215c 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -867,17 +867,16 @@ public IXLRows RowsUsed(Boolean includeFormats = false, Func predicate = null) { var rows = new XLRows(Worksheet); - using (var asRange = AsRange()) + var rowsUsed = new HashSet(); + Internals.RowsCollection.Keys.ForEach(r => rowsUsed.Add(r)); + Internals.CellsCollection.RowsUsed.Keys.ForEach(r => rowsUsed.Add(r)); + foreach (var rowNum in rowsUsed) { - var rowsUsed = asRange.RowsUsed(includeFormats); - foreach (IXLRangeRow row in rowsUsed) - { - var retRow = Row(row.RowNumber()); - if (predicate == null || predicate(retRow)) - rows.Add(retRow); - else - retRow.Dispose(); - } + var row = Row(rowNum); + if (!row.IsEmpty(includeFormats) && (predicate == null || predicate(row))) + rows.Add(row); + else + row.Dispose(); } return rows; } @@ -889,17 +888,16 @@ public IXLColumns ColumnsUsed(Boolean includeFormats = false, Func predicate = null) { var columns = new XLColumns(Worksheet); - using (var asRange = AsRange()) + var columnsUsed = new HashSet(); + Internals.ColumnsCollection.Keys.ForEach(r => columnsUsed.Add(r)); + Internals.CellsCollection.ColumnsUsed.Keys.ForEach(r => columnsUsed.Add(r)); + foreach (var columnNum in columnsUsed) { - var columnsUsed = asRange.ColumnsUsed(includeFormats); - foreach (IXLRangeColumn column in columnsUsed) - { - var retColumn = Column(column.ColumnNumber()); - if (predicate == null || predicate(retColumn)) - columns.Add(retColumn); - else - retColumn.Dispose(); - } + var column = Column(columnNum); + if (!column.IsEmpty(includeFormats) && (predicate == null || predicate(column))) + columns.Add(column); + else + column.Dispose(); } return columns; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs index 214b1d9..0e076ac 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.63.0.0")] -[assembly: AssemblyFileVersion("0.63.0.0")] +[assembly: AssemblyVersion("0.64.0.0")] +[assembly: AssemblyFileVersion("0.64.0.0")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ClosedXML_Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a1fb8ba59167fe734d64128ca73d32c45cb8a117246d09c95c8769db88fe332b0a3396bedd0ea48ee42b0e5796fec0798ca5cb628a9a6de80d35d6c67b936ca1670347b3d4f2b769c8ce2ddcf959dbac6bcd88e6c08751ea1fffa0522de3507193e7035305a8aa008d6c88cca1341b3120fa9c347ab3f97e2d772e2709277da5")] \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs index 8ed1a8b..0e1d43f 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.63.0.0")] -[assembly: AssemblyFileVersion("0.63.0.0")] +[assembly: AssemblyVersion("0.64.0.0")] +[assembly: AssemblyFileVersion("0.64.0.0")] diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx index 152d37a..30b3eb6 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx index c37d8bc..63bd02d 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx Binary files differ