Files
loongoffice/offapi/com/sun/star/sheet/FormulaParser.idl
Balazs Varga 233286df08 tdf#64086 tdf#143623 tdf#66250 XLSX: fix named ranges in charts
tdf#64086: fix broken XLSX import of named ranges in charts

Do not create inner data table in Calc for charts, if the
data source contains named ranges. Use the named ranges
(local sheet names and global names) to find the data
source of charts, so it will be updated correctly if we
modify the values in cells.

Second part:

tdf#143623: chart OOXML, offapi: export the named ranges in charts

with the proper special (non-ooxml-standard) Excel syntax.
We need to add "[0]" characters before a global named range
for proper refreshing of chart data. Also we have to add the
sheet name to the local named ranges even if it's on the same
sheet, but only in case of charts. Because of this, add property
RefConventionChartOOXML to com::sun::sheet::FormulaParser,
which specifies that use special OOXML chart syntax in case of
OOXML reference convention, when parsing a formula string.

Third part:

tdf#66250 ODF chart: export the reference of named ranges

in case of charts, if the named range contains a valid reference.

Note: maybe export the name of named ranges would be a nicer
solution in the future.

Follow-up of commit 3c766512984feff739377d0f0af46558ee7139fd
"Related: tdf#64086 Add FormulaGrammar::isRefConventionOOXML()".

Thanks to Eike Rathke for his help.

Change-Id: I10d8563fb436092e833682f331c25b0c0829ef86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118862
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
2021-08-09 19:32:36 +02:00

102 lines
3.0 KiB
Plaintext

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef __com_sun_star_sheet_FormulaParser_idl__
#define __com_sun_star_sheet_FormulaParser_idl__
#include <com/sun/star/beans/PropertySet.idl>
#include <com/sun/star/sheet/XFormulaParser.idl>
#include <com/sun/star/sheet/FormulaOpCodeMapEntry.idl>
#include <com/sun/star/sheet/ExternalLinkInfo.idl>
module com { module sun { module star { module sheet {
service FormulaParser
{
service com::sun::star::beans::PropertySet;
interface XFormulaParser;
/** specifies whether to use English parser and formatter.
<p>Note: When changing this, an already existing #OpCodeMap
needs to be recreated internally, so for performance reasons
set this <em>before</em> setting the #OpCodeMap.
*/
[property] boolean CompileEnglish;
/** specifies which address reference style convention to use when
parsing a formula string.
@see AddressConvention
*/
[property] short FormulaConvention;
[property] boolean IgnoreLeadingSpaces;
[property] string ParameterSeparator;
/** contains the complete mapping of names to op-codes.
<p>Names and symbols not defined here lead to a parser/print error.</p>
*/
[property] sequence< FormulaOpCodeMapEntry > OpCodeMap;
/** contains a list of external links referenced in formulas.
<p>Use of this property depends on the FormulaConvention
in use. It is relevant only for
AddressConvention::XL_OOX to map indices to external
documents. The sequence must be in the order of indices used. Note
that indices are 1-based, the sequence must start with an empty
element.</p>
@since OOo 3.1
*/
[property] sequence< ExternalLinkInfo > ExternalLinks;
/** specifies that use special ooxml chart syntax in case of OOXML reference
convention, when parsing a formula string.
<p>Special syntax like: [0]!GlobalNamedRange, LocalSheet!LocalNamedRange</p>
@since LibreOffice 7.3
*/
[property] boolean RefConventionChartOOXML;
};
}; }; }; };
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */