Kaydet (Commit) 6c5acfbe authored tarafından Eike Rathke's avatar Eike Rathke

do not loop 30 million cells to find a non-empty row

If for whatever reason an AutoFilter area was setup to extend down to,
for example, row 1048559 but the actual last data row is 15817, with 27
columns it took ScTable::GetDataArea() to look at 27884034 cells to find
the last non-empty data row ...

Change-Id: Ic8cbebe7ddf9b23c8edb55c4821d8a4c69e8b75d
üst 2eea96c7
......@@ -898,15 +898,9 @@ void ScTable::GetDataArea( SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, S
{
if ( !bBottom && rEndRow > 0 && rStartRow < rEndRow )
{
bool shrink = true;
do
{
for ( SCCOL i = rStartCol; i<=rEndCol && shrink; i++)
if (aCol[i].HasDataAt(rEndRow))
shrink = false;
if (shrink)
--rEndRow;
}while( shrink && rEndRow > 0 && rStartRow < rEndRow );
SCROW nLastDataRow = GetLastDataRow( rStartCol, rEndCol, rEndRow);
if (nLastDataRow >= 0 && rStartRow <= nLastDataRow && nLastDataRow < rEndRow)
rEndRow = nLastDataRow;
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment