* Meeting @ FOSDEM hackfest: - rough minutes & code ptrs.
* Present:
+ Eike, Noel, Michael
* Issues are:
+ ODF
+ serializes A:A as A1:A1million
+ serializes 1:1 as A1:AMJ1
+ need to store it as 1:1 ...
* Because older versions fail:
+ immediately on the reference if cells are unused.
+ decided -> can't read.
* test older versions:
+ if we have data outside the range, and/or ...
larger formulae - do these work ?
* wrap-around columns:
+ the last column can reference the first via wrap-around
+ completely different if you have more columns ...
+ have same problem importing Excel files ...
+ do we handle it somehow here (?)
+ we discard data so ...
+ how do we cope with loading old XLS files (?)
* concern:
1. saving small files with A:A that may break in older versions.
+ less of an issue these days -> old (5.0+ versions have A:A)
2. wrapping around the code:
+ can we detect that.
+ think only for named-ranges;
perhaps for conditional formatting
=> this works with wrap-from A1 to AMJ1
+ despite invalid ref. displayed in browser.
+ doesn't save - as REF# in XLSX
=> but not working for AMJ1 -> A1 wrap-around.
+ is it only from XLS ?
+ XFD1 -> most right-most column ...
+ Investigate how Excel solves the same problem.
+ with a 'dimension ref=""'
* Tentative decisions.
=> Split & push Noel's patch as of now:
+ push the dynamic column creation magic now.
+ but keep the column limit to 1024
+ so it doesn't change anything (in theory).
=> switch to dynamic dimensions instead of MAXROW/MAXCOL ~everywhere.
+ anchor this on the document - as per Excel.
+ store a 'libo:max_range="A1:AMJ100000"' extended attribute
on each ODF spreadsheet.
=> so MAXROW/MAXCOL becomes the real upper limit and/or
defaults for new docs.
+ create new defines for default below:
+ on-load we need to set max_range to something:
Type max_range
---------------------------------------------
new-doc cols: 16k, rows: 1m
XLS load - special[1] cols: 256, rows: 64k
XLSX load as per new-doc.
ODS load - special[1] cols: 1k, rows: 1m
ODS load - no names as per new-doc.
[1] -> has names with relative references
optionally has no data outside the smaller range.
-> warn in this case and point to UI options:
=> add UI options to enlarge sheet sizes for stuck / smaller sheets ...
+ investigate what Excel does upgrading XLS -> XLSX (?)
=> ideally discourage ctrl-right-arrow / down-arrow from using
full range as Excel does - to avoid accidental use of cells
outside the range.
=> for old releases:
+ would we bother patching / re-spinning 6.0 / 6.1
to warn with more columns ? ... prolly not.
* misc. code ptrs.
sc/source/core/tool/compiler.cxx:
virtual void makeRefStr( OUStringBuffer& rBuf,
formula::FormulaGrammar::Grammar eGram,
const ScAddress& rPos,
const OUString& rErrRef, const std::vector<OUString>& rTabNames,
const ScComplexRefData& rRef,
bool bSingleRef,
bool bFromRangeName ) const override
* Think Excel - stores with implicit range of 0,0 (Eike)
We should be doing the wrapping:
// Wrap-adjust relative references of a RangeName to current position,
// don't call for other token arrays!
void ScCompiler::MoveRelWrap()
sc/source/filter/excel/excform8.cxx:
void ExcelToSc8::ExcRelToScRel8( sal_uInt16 nRow, sal_uInt16 nC, ScSingleRefData &rSRD, const bool
bName )
// relative column references wrap around
nRelCol = static_cast<sal_Int16>(256 + static_cast<int>(nRelCol));
if (nDiff < 0)
{
// relative row references wrap around
nRelRow = 65536 + nRelRow;
+ Looks good - pre-wrapping / conversion but ...
+ can't do this for relative named ranges.
--
michael.meeks@collabora.com <><, GM Collabora Productivity
Hangout: mejmeeks@gmail.com, Skype: mmeeks
(M) +44 7795 666 147 - timezone usually UK / Europe
Context
- calc: increased column / row limit. · Michael Meeks
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.