summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2011-05-18 23:09:41 +0000
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-07-07 19:28:43 +0200
commitfca460c0f931873c7bf6558a36d027374cb9bf3b (patch)
tree1e3c4256dad08fba85a3f2c7fe1022f40e8ae747
parent1195ede73b8b6c1f6e3b0f5575450d937a41eaf6 (diff)
Make sure to only export up to 1026 manual page breaks to XLS.
If you export even one excess page break than 1026, Excel refuses to load the whole document. Signed-off-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/filter/excel/xepage.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/sc/source/filter/excel/xepage.cxx b/sc/source/filter/excel/xepage.cxx
index 47396d620e41..3831bc7822ac 100644
--- a/sc/source/filter/excel/xepage.cxx
+++ b/sc/source/filter/excel/xepage.cxx
@@ -330,6 +330,14 @@ XclExpPageSettings::XclExpPageSettings( const XclExpRoot& rRoot ) :
maData.maHorPageBreaks.push_back(nRow);
}
+ if (maData.maHorPageBreaks.size() > 1026)
+ {
+ // Excel allows only up to 1026 page breaks. Trim any excess page breaks.
+ ScfUInt16Vec::iterator itr = maData.maHorPageBreaks.begin();
+ ::std::advance(itr, 1026);
+ maData.maHorPageBreaks.erase(itr, maData.maHorPageBreaks.end());
+ }
+
set<SCCOL> aColBreaks;
rDoc.GetAllColBreaks(aColBreaks, nScTab, false, true);
for (set<SCCOL>::const_iterator itr = aColBreaks.begin(), itrEnd = aColBreaks.end(); itr != itrEnd; ++itr)