diff options
author | Regina Henschel <rb.henschel@t-online.de> | 2024-09-18 10:43:32 +0200 |
---|---|---|
committer | Regina Henschel <rb.henschel@t-online.de> | 2024-09-19 08:54:44 +0200 |
commit | 35c5d496645e64463ff4ba1e7b0b78f6b55741d9 (patch) | |
tree | 302b9fbefe97ba28c46b1cf00e35799e0cc21afa /sc | |
parent | 56507ad26c2827257f201e096beac95d8c725d5f (diff) |
tdf#162963 export property TotalsRow to ODF
DatabaseRange has got the property TotalsRow with UI and UNO. But this
property was not written to ODF. The patch adds this as attribute
calcext:contains-footer to <table:database-range> element.
Related is issue OFFICE-4169 at OASIS.
Change-Id: I99a51198585b9b7dfb840217bdf1312f2462c9bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173612
Tested-by: Jenkins
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/CppunitTest_sc_subsequent_filters_test5.mk | 12 | ||||
-rw-r--r-- | sc/Module_sc.mk | 1 | ||||
-rw-r--r-- | sc/inc/queryparam.hxx | 2 | ||||
-rw-r--r-- | sc/qa/unit/data/fods/tdf162963_DatabaseRange.fods | 959 | ||||
-rw-r--r-- | sc/qa/unit/data/xlsx/tdf162963_TableWithTotalsEnabled.xlsx | bin | 0 -> 10394 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_filters_test5.cxx | 119 | ||||
-rw-r--r-- | sc/source/core/tool/dbdata.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/tool/queryparam.cxx | 11 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDatabaseRanges.cxx | 3 | ||||
-rw-r--r-- | sc/source/filter/xml/xmldrani.cxx | 10 | ||||
-rw-r--r-- | sc/source/filter/xml/xmldrani.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/unoobj/datauno.cxx | 1 |
12 files changed, 1115 insertions, 6 deletions
diff --git a/sc/CppunitTest_sc_subsequent_filters_test5.mk b/sc/CppunitTest_sc_subsequent_filters_test5.mk new file mode 100644 index 000000000000..2bf8e2e5f998 --- /dev/null +++ b/sc/CppunitTest_sc_subsequent_filters_test5.mk @@ -0,0 +1,12 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# + +$(eval $(call sc_subsequent_test,filters_test5)) + +# vim: set noet sw=4 ts=4: diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index ab9dada68aa7..ee4f23eeab0a 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -92,6 +92,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \ CppunitTest_sc_subsequent_filters_test2 \ CppunitTest_sc_subsequent_filters_test3 \ CppunitTest_sc_subsequent_filters_test4 \ + CppunitTest_sc_subsequent_filters_test5 \ CppunitTest_sc_subsequent_export_test \ CppunitTest_sc_subsequent_export_test2 \ CppunitTest_sc_subsequent_export_test3 \ diff --git a/sc/inc/queryparam.hxx b/sc/inc/queryparam.hxx index dc38638075af..5b27bce3bf77 100644 --- a/sc/inc/queryparam.hxx +++ b/sc/inc/queryparam.hxx @@ -42,6 +42,7 @@ struct SAL_DLLPUBLIC_RTTI ScQueryParamBase { utl::SearchParam::SearchType eSearchType; bool bHasHeader; + bool bHasTotals; bool bByRow; bool bInplace; bool bCaseSens; @@ -88,6 +89,7 @@ inline std::basic_ostream<charT, traits> & operator <<(std::basic_ostream<charT, stream << "{" << "searchType=" << rParam.eSearchType << ",hasHeader=" << (rParam.bHasHeader?"YES":"NO") << + ",hasTotals=" << (rParam.bHasTotals?"YES":"NO") << ",byRow=" << (rParam.bByRow?"YES":"NO") << ",inplace=" << (rParam.bInplace?"YES":"NO") << ",caseSens=" << (rParam.bCaseSens?"YES":"NO") << diff --git a/sc/qa/unit/data/fods/tdf162963_DatabaseRange.fods b/sc/qa/unit/data/fods/tdf162963_DatabaseRange.fods new file mode 100644 index 000000000000..d2e5756124b4 --- /dev/null +++ b/sc/qa/unit/data/fods/tdf162963_DatabaseRange.fods @@ -0,0 +1,959 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.spreadsheet"> + <office:meta> + <meta:generator>LODev_daily_installed/25.2.0.0.alpha0$Windows_X86_64 LibreOffice_project/976567aee323afd09629b6adf13537908f43d2a8 + </meta:generator> + <dc:title>5mm Grid</dc:title> + <meta:initial-creator>Regina Henschel</meta:initial-creator> + <meta:creation-date>2024-07-29T22:39:46</meta:creation-date> + <dc:creator>Regina Henschel</dc:creator> + <dc:date>2024-09-18T20:23:43</dc:date> + <meta:user-defined meta:name="AppVersion" meta:value-type="string">16.0300</meta:user-defined> + <meta:document-statistic meta:table-count="1" meta:object-count="0" meta:cell-count="21"/> + </office:meta> + <office:settings> + <config:config-item-set config:name="ooo:view-settings"> + <config:config-item config:name="VisibleAreaTop" config:type="int">0</config:config-item> + <config:config-item config:name="VisibleAreaLeft" config:type="int">0</config:config-item> + <config:config-item config:name="VisibleAreaWidth" config:type="int">4198</config:config-item> + <config:config-item config:name="VisibleAreaHeight" config:type="int">8731</config:config-item> + <config:config-item-map-indexed config:name="Views"> + <config:config-item-map-entry> + <config:config-item config:name="ViewId" config:type="string">view1</config:config-item> + <config:config-item-map-named config:name="Tables"> + <config:config-item-map-entry config:name="Vertical"> + <config:config-item config:name="CursorPositionX" config:type="int">3</config:config-item> + <config:config-item config:name="CursorPositionY" config:type="int">0</config:config-item> + <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item> + <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item> + <config:config-item config:name="PositionRight" config:type="int">0</config:config-item> + <config:config-item config:name="PositionTop" config:type="int">0</config:config-item> + <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item> + <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> + <config:config-item config:name="ZoomValue" config:type="int">100</config:config-item> + <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item> + <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item> + <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item> + <config:config-item config:name="LegacySingleLineFontwork" config:type="boolean">false</config:config-item> + <config:config-item config:name="ConnectorUseSnapRect" config:type="boolean">false</config:config-item> + <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item> + </config:config-item-map-entry> + </config:config-item-map-named> + <config:config-item config:name="ActiveTable" config:type="string">Vertical</config:config-item> + <config:config-item config:name="HorizontalScrollbarWidth" config:type="int">1666</config:config-item> + <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> + <config:config-item config:name="ZoomValue" config:type="int">100</config:config-item> + <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item> + <config:config-item config:name="ShowPageBreakPreview" config:type="boolean">false</config:config-item> + <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowNoteAuthor" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowFormulasMarks" config:type="boolean">false</config:config-item> + <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item> + <config:config-item config:name="GridColor" config:type="int">-1</config:config-item> + <config:config-item config:name="FormulaBarHeight" config:type="short">1</config:config-item> + <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item> + <config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item> + <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item> + <config:config-item config:name="IsValueHighlightingEnabled" config:type="boolean">false</config:config-item> + <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item> + <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item> + <config:config-item config:name="RasterResolutionX" config:type="int">500</config:config-item> + <config:config-item config:name="RasterResolutionY" config:type="int">500</config:config-item> + <config:config-item config:name="RasterSubdivisionX" config:type="int">4</config:config-item> + <config:config-item config:name="RasterSubdivisionY" config:type="int">4</config:config-item> + <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item> + <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item> + <config:config-item config:name="LegacySingleLineFontwork" config:type="boolean">false</config:config-item> + <config:config-item config:name="ConnectorUseSnapRect" config:type="boolean">false</config:config-item> + <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item> + </config:config-item-map-entry> + </config:config-item-map-indexed> + </config:config-item-set> + <config:config-item-set config:name="ooo:configuration-settings"> + <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item> + <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowNoteAuthor" config:type="boolean">true</config:config-item> + <config:config-item config:name="ShowFormulasMarks" config:type="boolean">false</config:config-item> + <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item> + <config:config-item config:name="GridColor" config:type="int">-1</config:config-item> + <config:config-item config:name="ShowPageBreaks" config:type="boolean">false</config:config-item> + <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">true</config:config-item> + <config:config-item config:name="LinkUpdateMode" config:type="short">3</config:config-item> + <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item> + <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item> + <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item> + <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item> + <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item> + <config:config-item config:name="RasterResolutionX" config:type="int">500</config:config-item> + <config:config-item config:name="RasterResolutionY" config:type="int">500</config:config-item> + <config:config-item config:name="RasterSubdivisionX" config:type="int">4</config:config-item> + <config:config-item config:name="RasterSubdivisionY" config:type="int">4</config:config-item> + <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item> + <config:config-item config:name="AutoCalculate" config:type="boolean">true</config:config-item> + <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item> + <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item> + <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item> + <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item> + <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item> + <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item> + <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item> + <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item> + <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item> + <config:config-item config:name="IsDocumentShared" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="SyntaxStringRef" config:type="short">2</config:config-item> + <config:config-item-map-named config:name="ScriptConfiguration"> + <config:config-item-map-entry config:name="Vertical"> + <config:config-item config:name="CodeName" config:type="string">Sheet1</config:config-item> + </config:config-item-map-entry> + </config:config-item-map-named> + </config:config-item-set> + </office:settings> + <office:scripts> + <office:script script:language="ooo:Basic"> + <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </office:script> + </office:scripts> + <office:font-face-decls> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Sans1" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss"/> + <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman"/> + <style:font-face style:name="Lucida Sans" svg:font-family="'Lucida Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Microsoft YaHei" svg:font-family="'Microsoft YaHei'" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="table-cell"> + <style:paragraph-properties style:tab-stop-distance="12.7mm"/> + <style:text-properties style:font-name="Liberation Sans" fo:font-size="10pt" fo:language="en" fo:country="US" style:font-name-asian="Microsoft YaHei" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="3mm" draw:shadow-offset-y="3mm" style:writing-mode="page"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:punctuation-wrap="simple" style:line-break="strict" loext:tab-stop-distance="0mm" style:writing-mode="page" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" loext:opacity="0%" fo:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-family-asian="'Segoe UI'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-family-complex="Tahoma" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:style style:name="Default" style:family="graphic"/> + <style:style style:name="Note" style:family="graphic" style:parent-style-name="Default"> + <style:graphic-properties draw:stroke="solid" draw:marker-start="Arrowheads_20_1" draw:marker-start-width="2mm" draw:marker-start-center="false" draw:fill="solid" draw:fill-color="#ffffc0" draw:auto-grow-height="true" draw:auto-grow-width="false" fo:padding-top="1mm" fo:padding-bottom="1mm" fo:padding-left="1mm" fo:padding-right="1mm" draw:shadow="visible" draw:shadow-offset-x="1mm" draw:shadow-offset-y="1mm"/> + <style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="10pt" style:font-name-asian="Microsoft YaHei" style:font-family-asian="'Microsoft YaHei'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="10pt" style:font-name-complex="Lucida Sans" style:font-family-complex="'Lucida Sans'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="10pt"/> + </style:style> + <number:number-style style:name="N0"> + <number:number number:min-integer-digits="1"/> + </number:number-style> + <number:currency-style style:name="N114P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N114"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N114P0"/> + </number:currency-style> + <number:number-style style:name="N117P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N117"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N117P0"/> + </number:number-style> + <number:number-style style:name="N118P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N118"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N118P0"/> + </number:number-style> + <number:number-style style:name="N120P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N120"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N120P0"/> + </number:number-style> + <number:number-style style:name="N121P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N121"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N121P0"/> + </number:number-style> + <number:date-style style:name="N122"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N123"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N124"> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N125"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N126"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:number-style style:name="N128P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N128"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N128P0"/> + </number:number-style> + <number:number-style style:name="N129P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N129"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N129P0"/> + </number:number-style> + <number:number-style style:name="N131P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N131"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N131P0"/> + </number:number-style> + <number:number-style style:name="N132P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N132"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N132P0"/> + </number:number-style> + <number:number-style style:name="N136P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N136P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N136P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="€2_-4">- </number:text> + </number:number-style> + <number:text-style style:name="N136"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N136P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N136P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N136P2"/> + </number:text-style> + <number:number-style style:name="N140P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N140P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N140P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="-3">- € </number:text> + </number:number-style> + <number:text-style style:name="N140"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N140P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N140P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N140P2"/> + </number:text-style> + <number:number-style style:name="N144P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N144P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N144P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:text-style style:name="N144"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N144P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N144P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N144P2"/> + </number:text-style> + <number:number-style style:name="N148P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N148P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N148P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:text-style style:name="N148"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N148P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N148P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N148P2"/> + </number:text-style> + <number:time-style style:name="N149"> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:time-style style:name="N150" number:truncate-on-overflow="false"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:time-style style:name="N151"> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long" number:decimal-places="1"/> + </number:time-style> + <number:number-style style:name="N152"> + <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:min-exponent-digits="1" number:exponent-interval="3" number:forced-exponent-sign="true"/> + </number:number-style> + <style:style style:name="Default" style:family="table-cell"> + <style:table-cell-properties style:rotation-align="none" style:vertical-align="bottom"/> + <style:text-properties fo:color="#000000" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Heading" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:font-size="24pt" fo:font-style="normal" fo:font-weight="bold" style:font-size-asian="24pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="24pt" style:font-style-complex="normal" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="table-cell" style:parent-style-name="Heading"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt"/> + </style:style> + <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="table-cell" style:parent-style-name="Heading"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt"/> + </style:style> + <style:style style:name="Text" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + </style:style> + <style:style style:name="Note" style:family="table-cell" style:parent-style-name="Text"> + <style:table-cell-properties fo:background-color="#ffffcc" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:wrap-option="no-wrap" fo:border="0.74pt solid #808080" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#333333"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Footnote" style:family="table-cell" style:parent-style-name="Text"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#808080" fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Hyperlink" style:family="table-cell" style:parent-style-name="Text"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#0000ee" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="#0000ee"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Status" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + </style:style> + <style:style style:name="Good" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ccffcc" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#006600"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Neutral" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ffffcc" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#996600"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Bad" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ffcccc" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#cc0000"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Warning" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#cc0000"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Error" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#cc0000" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#ffffff" fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Accent_20_1" style:display-name="Accent 1" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#000000" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#ffffff"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent_20_2" style:display-name="Accent 2" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#808080" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:color="#ffffff"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent_20_3" style:display-name="Accent 3" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#dddddd" fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + </style:style> + <style:style style:name="Result" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="no-wrap" style:shrink-to-fit="false"/> + <style:text-properties fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-style-complex="italic" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Accent_20_1_20_5" style:display-name="Accent 1 5" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#000000" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#ffffff" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent_20_2_20_6" style:display-name="Accent 2 6" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#808080" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#ffffff" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent_20_3_20_7" style:display-name="Accent 3 7" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#dddddd" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Accent_20_4" style:display-name="Accent 4" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Default_20_8" style:display-name="Default 8" style:family="table-cell" style:parent-style-name="Default"/> + <style:style style:name="Error_20_9" style:display-name="Error 9" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#cc0000" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#ffffff" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Bad" style:display-name="Excel Built-in Bad" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#ffcccc" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#cc0000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Good" style:display-name="Excel Built-in Good" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#ccffcc" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#006600" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Heading_20_1" style:display-name="Excel Built-in Heading 1" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Heading_20_2" style:display-name="Excel Built-in Heading 2" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="12pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Neutral" style:display-name="Excel Built-in Neutral" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#ffffcc" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#996600" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Excel_20_Built-in_20_Note" style:display-name="Excel Built-in Note" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#ffffcc" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border="0.74pt solid #808080" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#333333" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Footnote_20_10" style:display-name="Footnote 10" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#808080" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="italic" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="italic" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="italic" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Header" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#dcdcdc" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border="0.74pt solid #000000" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="middle" loext:vertical-justify="auto"/> + <style:paragraph-properties fo:text-align="center" css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-family="'Liberation Serif'" style:font-family-generic="roman" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Serif" style:font-family-complex="'Liberation Serif'" style:font-family-generic-complex="roman" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Heading_20_11" style:display-name="Heading 11" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="24pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="24pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="24pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Hyperlink_20_12" style:display-name="Hyperlink 12" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#0000ee" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="PresentationText" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border="0.74pt solid #000000"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-family="'Liberation Serif'" style:font-family-generic="roman" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-family-complex="'Liberation Serif'" style:font-family-generic-complex="roman" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Result_20_13" style:display-name="Result 13" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="italic" fo:text-shadow="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold" style:font-size-asian="10pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="italic" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Status_20_14" style:display-name="Status 14" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + </style:style> + <style:style style:name="Text_20_15" style:display-name="Text 15" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + </style:style> + <style:style style:name="Totals" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border="0.74pt solid #000000"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-family="'Liberation Serif'" style:font-family-generic="roman" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Serif" style:font-family-complex="'Liberation Serif'" style:font-family-generic-complex="roman" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="Warning_20_16" style:display-name="Warning 16" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="value-type" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#cc0000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-family-complex="'Liberation Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <draw:marker draw:name="Arrowheads_20_1" draw:display-name="Arrowheads 1" svg:viewBox="0 0 20 30" svg:d="M10 0l-10 30h20z"/> + <loext:theme loext:name="Office Theme"> + <loext:theme-colors loext:name="Office"> + <loext:color loext:name="dark1" loext:color="#000000"/> + <loext:color loext:name="light1" loext:color="#ffffff"/> + <loext:color loext:name="dark2" loext:color="#0e2841"/> + <loext:color loext:name="light2" loext:color="#e8e8e8"/> + <loext:color loext:name="accent1" loext:color="#156082"/> + <loext:color loext:name="accent2" loext:color="#e97132"/> + <loext:color loext:name="accent3" loext:color="#196b24"/> + <loext:color loext:name="accent4" loext:color="#0f9ed5"/> + <loext:color loext:name="accent5" loext:color="#a02b93"/> + <loext:color loext:name="accent6" loext:color="#4ea72e"/> + <loext:color loext:name="hyperlink" loext:color="#467886"/> + <loext:color loext:name="followed-hyperlink" loext:color="#96607d"/> + </loext:theme-colors> + </loext:theme> + </office:styles> + <office:automatic-styles> + <style:style style:name="co1" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="21.54mm"/> + </style:style> + <style:style style:name="co2" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="20.44mm"/> + </style:style> + <style:style style:name="co3" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="15.43mm"/> + </style:style> + <style:style style:name="co4" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="25.66mm"/> + </style:style> + <style:style style:name="co5" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="16.72mm"/> + </style:style> + <style:style style:name="co6" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="22.58mm"/> + </style:style> + <style:style style:name="ro1" style:family="table-row"> + <style:table-row-properties style:row-height="7.94mm" fo:break-before="auto" style:use-optimal-row-height="false"/> + </style:style> + <style:style style:name="ro2" style:family="table-row"> + <style:table-row-properties style:row-height="4.76mm" fo:break-before="auto" style:use-optimal-row-height="false"/> + </style:style> + <style:style style:name="ta1" style:family="table" style:master-page-name="PageStyle_5f_Vertical"> + <style:table-properties table:display="true" style:writing-mode="lr-tb"/> + </style:style> + <number:number-style style:name="N2"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/> + </number:number-style> + <style:style style:name="ce15" style:family="table-cell" style:parent-style-name="Header" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #000000" fo:background-color="#dcdcdc" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="none" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="middle" loext:vertical-justify="auto"/> + <style:paragraph-properties fo:text-align="center" css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce2" style:family="table-cell" style:parent-style-name="PresentationText" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #000000" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="no-wrap" fo:border-left="none" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="0.74pt solid #000000" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce3" style:family="table-cell" style:parent-style-name="PresentationText" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #000000" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="wrap" fo:border-left="none" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="0.74pt solid #000000" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce4" style:family="table-cell" style:parent-style-name="PresentationText" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="none" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="no-wrap" fo:border-left="none" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="0.74pt solid #000000" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce5" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="none" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border-left="none" fo:border-right="0.74pt solid #000000" style:rotation-align="none" fo:border-top="0.74pt solid #000000"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce6" style:family="table-cell" style:parent-style-name="Default_20_8" style:data-style-name="N0"> + <style:table-cell-properties style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="no-wrap" fo:border="none" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans1" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans1" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce21" style:family="table-cell" style:parent-style-name="Header" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #000000" fo:background-color="#dcdcdc" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #000000" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="middle" loext:vertical-justify="auto"/> + <style:paragraph-properties fo:text-align="center" css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="bold"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce8" style:family="table-cell" style:parent-style-name="PresentationText" style:data-style-name="N0"> + <style:table-cell-properties style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="no-wrap" fo:border="0.74pt solid #000000" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce9" style:family="table-cell" style:parent-style-name="PresentationText" style:data-style-name="N0"> + <style:table-cell-properties fo:border-bottom="none" style:cell-protect="protected" style:print-content="true" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="value-type" style:repeat-content="false" fo:background-color="transparent" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #000000" style:direction="ltr" fo:border-right="0.74pt solid #000000" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="0.74pt solid #000000" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties css3t:text-justify="auto" fo:margin-left="0mm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce10" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="none" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border-left="0.74pt solid #000000" fo:border-right="0.74pt solid #000000" style:rotation-align="none" fo:border-top="0.74pt solid #000000"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="18pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="18pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Serif" style:font-size-complex="18pt" style:font-style-complex="normal" style:font-weight-complex="normal"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties style:first-page-number="continue" style:writing-mode="lr-tb"/> + <style:header-style> + <style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-bottom="2.5mm"/> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="2.5mm"/> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm2"> + <style:page-layout-properties style:writing-mode="lr-tb"/> + <style:header-style> + <style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-bottom="2.5mm" fo:border="1.5pt solid #000000" fo:padding="0.18mm" fo:background-color="#c0c0c0"> + <style:background-image/> + </style:header-footer-properties> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="2.5mm" fo:border="1.5pt solid #000000" fo:padding="0.18mm" fo:background-color="#c0c0c0"> + <style:background-image/> + </style:header-footer-properties> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm3"> + <style:page-layout-properties style:num-format="1" style:print-orientation="portrait" fo:margin-top="0mm" fo:margin-bottom="0mm" fo:margin-left="0mm" fo:margin-right="0mm" style:print-page-order="ttb" style:first-page-number="continue" style:scale-to="100%" style:writing-mode="lr-tb" style:print="charts drawings objects zero-values"/> + <style:header-style> + <style:header-footer-properties fo:min-height="10mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-bottom="6.47mm"/> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="10mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="6.47mm"/> + </style:footer-style> + </style:page-layout> + <style:style style:name="T1" style:family="text"> + <style:text-properties fo:color="#000000" loext:opacity="100%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:text-position="0% 100%" style:font-name="Liberation Sans" fo:font-size="10pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Liberation Sans" style:font-size-complex="10pt" style:font-style-complex="normal" style:font-weight-complex="normal"/> + </style:style> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Default" style:page-layout-name="pm1"> + <style:header> + <text:p><text:sheet-name>???</text:sheet-name></text:p> + </style:header> + <style:header-left style:display="false"/> + <style:header-first style:display="false"/> + <style:footer> + <text:p>Page <text:page-number>1</text:page-number></text:p> + </style:footer> + <style:footer-left style:display="false"/> + <style:footer-first style:display="false"/> + </style:master-page> + <style:master-page style:name="Report" style:page-layout-name="pm2"> + <style:header> + <style:region-left> + <text:p><text:sheet-name>???</text:sheet-name><text:s/>(<text:title>???</text:title>)</text:p> + </style:region-left> + <style:region-right> + <text:p><text:date style:data-style-name="N2" text:date-value="2024-09-18">00.00.0000</text:date>, <text:time style:data-style-name="N2" text:time-value="20:20:55.874000000">00:00:00</text:time></text:p> + </style:region-right> + </style:header> + <style:header-left style:display="false"/> + <style:header-first style:display="false"/> + <style:footer> + <text:p>Page <text:page-number>1</text:page-number><text:s/>/ <text:page-count>99</text:page-count></text:p> + </style:footer> + <style:footer-left style:display="false"/> + <style:footer-first style:display="false"/> + </style:master-page> + <style:master-page style:name="PageStyle_5f_Vertical" style:display-name="PageStyle_Vertical" style:page-layout-name="pm3"> + <style:header> + <text:p><text:span text:style-name="T1"><text:sheet-name>???</text:sheet-name></text:span></text:p> + </style:header> + <style:header-left style:display="false"/> + <style:header-first style:display="false"/> + <style:footer> + <text:p><text:span text:style-name="T1">Page </text:span><text:span text:style-name="T1"><text:page-number>1</text:page-number></text:span></text:p> + </style:footer> + <style:footer-left style:display="false"/> + <style:footer-first style:display="false"/> + </style:master-page> + </office:master-styles> + <office:body> + <office:spreadsheet> + <table:calculation-settings table:case-sensitive="false" table:automatic-find-labels="false" table:use-regular-expressions="false" table:use-wildcards="true"> + <table:iteration table:maximum-difference="0.0001"/> + </table:calculation-settings> + <table:table table:name="Vertical" table:style-name="ta1"> + <office:forms form:automatic-focus="false" form:apply-design-mode="false"/> + <table:table-column table:style-name="co1" table:default-cell-style-name="ce6"/> + <table:table-column table:style-name="co2" table:default-cell-style-name="ce6"/> + <table:table-column table:style-name="co3" table:number-columns-repeated="6" table:default-cell-style-name="ce6"/> + <table:table-column table:style-name="co4" table:number-columns-repeated="16368" table:default-cell-style-name="ce6"/> + <table:table-column table:style-name="co5" table:number-columns-repeated="6" table:default-cell-style-name="Default"/> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce15" office:value-type="string" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce21" office:value-type="string" calcext:value-type="string"> + <text:p>Sales</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Alice</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="21" calcext:value-type="float"> + <text:p>21</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Bärbel</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="23" calcext:value-type="float"> + <text:p>23</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Barbie</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="9" calcext:value-type="float"> + <text:p>9</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce3" office:value-type="string" calcext:value-type="string"> + <text:p>Inés</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="34" calcext:value-type="float"> + <text:p>34</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Inge</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="23" calcext:value-type="float"> + <text:p>23</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>John</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="12" calcext:value-type="float"> + <text:p>12</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Judy</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="15" calcext:value-type="float"> + <text:p>15</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce2" office:value-type="string" calcext:value-type="string"> + <text:p>Mary</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce8" office:value-type="float" office:value="17" calcext:value-type="float"> + <text:p>17</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce4" office:value-type="string" calcext:value-type="string"> + <text:p>Tom</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce9" office:value-type="float" office:value="31" calcext:value-type="float"> + <text:p>31</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce5"/> + <table:table-cell table:style-name="ce10" table:formula="of:=SUBTOTAL(109;[$Vertical.$B$2:.$B$10])" office:value-type="float" office:value="185" calcext:value-type="float"> + <text:p>185</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16380"/> + </table:table-row> + <table:table-row table:style-name="ro1" table:number-rows-repeated="8"> + <table:table-cell table:number-columns-repeated="16382"/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="1048556"> + <table:table-cell table:number-columns-repeated="16382"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-columns-repeated="16382"/> + </table:table-row> + </table:table> + <table:named-expressions/> + <table:database-ranges> + <table:database-range table:name="myData" table:target-range-address="Vertical.A1:Vertical.B11"/> + </table:database-ranges> + </office:spreadsheet> + </office:body> +</office:document>
\ No newline at end of file diff --git a/sc/qa/unit/data/xlsx/tdf162963_TableWithTotalsEnabled.xlsx b/sc/qa/unit/data/xlsx/tdf162963_TableWithTotalsEnabled.xlsx Binary files differnew file mode 100644 index 000000000000..7411f05e8dea --- /dev/null +++ b/sc/qa/unit/data/xlsx/tdf162963_TableWithTotalsEnabled.xlsx diff --git a/sc/qa/unit/subsequent_filters_test5.cxx b/sc/qa/unit/subsequent_filters_test5.cxx new file mode 100644 index 000000000000..f22b2ff82c83 --- /dev/null +++ b/sc/qa/unit/subsequent_filters_test5.cxx @@ -0,0 +1,119 @@ +/* -*- 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/. + */ + +// core, please keep it alphabetically ordered +#include <comphelper/configuration.hxx> +#include "helper/qahelper.hxx" +#include <officecfg/Office/Common.hxx> +#include <test/unoapi_test.hxx> +#include <unotools/saveopt.hxx> + +// API, please keep it alphabetically ordered +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/sheet/XDatabaseRange.hpp> +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> + +using namespace css; +using namespace css::uno; + +/* Implementation of Filters test, volume 5*/ + +class ScFiltersTest5 : public ScModelTestBase +{ +public: + ScFiltersTest5() + : ScModelTestBase(u"sc/qa/unit/data"_ustr) + { + } +}; + +CPPUNIT_TEST_FIXTURE(ScFiltersTest5, testTdf162963) +{ + //tests xlsx -> ods -> ods of property "TotalsRow" + createScDoc("xlsx/tdf162963_TableWithTotalsEnabled.xlsx"); + + constexpr OUString sDBName(u"myData"_ustr); + constexpr OUString sPropName(u"TotalsRow"_ustr); + + // Make sure the database range "myData" has TotalsRow TRUE after import from xlsx. + { + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDocPropSet(xDoc, UNO_QUERY_THROW); + uno::Reference<container::XNameAccess> xNameAccess( + xDocPropSet->getPropertyValue(u"DatabaseRanges"_ustr), UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDBRangePropSet(xNameAccess->getByName(sDBName), + UNO_QUERY_THROW); + bool bTotalsRow = false; + xDBRangePropSet->getPropertyValue(sPropName) >>= bTotalsRow; + CPPUNIT_ASSERT_MESSAGE("xlsx-import", bTotalsRow); + } + // Make sure TotalsRow is still TRUE after save to ods and reload. + // The error was, that the property "TotalsRow" was not written to ods at all. + // With fix it is written as calcext:contains-footer. + { + saveAndReload(u"calc8"_ustr); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDocPropSet(xDoc, UNO_QUERY_THROW); + uno::Reference<container::XNameAccess> xNameAccess( + xDocPropSet->getPropertyValue(u"DatabaseRanges"_ustr), UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDBRangePropSet(xNameAccess->getByName(sDBName), + UNO_QUERY_THROW); + bool bTotalsRow = true; + xDBRangePropSet->getPropertyValue(sPropName) >>= bTotalsRow; + CPPUNIT_ASSERT_MESSAGE("save ods, reload", bTotalsRow); + } +} + +CPPUNIT_TEST_FIXTURE(ScFiltersTest5, testTdf162963_ODF) +{ + // Verify, that calcext:contains-footer is only written in extended file format versions. + // The parameter in DefaultVersion::set need to be adapted, when attribute contains-footer + // is included in ODF strict, see issue OFFICE-4169 at OASIS. + createScDoc("fods/tdf162963_DatabaseRange.fods"); + + // enable TotalsRow + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDocPropSet(xDoc, UNO_QUERY_THROW); + uno::Reference<container::XNameAccess> xNameAccess( + xDocPropSet->getPropertyValue(u"DatabaseRanges"_ustr), UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xDBRangePropSet(xNameAccess->getByName(u"myData"_ustr), + UNO_QUERY_THROW); + xDBRangePropSet->setPropertyValue(u"TotalsRow"_ustr, uno::Any(true)); + + // Backup original ODF default version + const SvtSaveOptions::ODFDefaultVersion nCurrentODFVersion(GetODFDefaultVersion()); + + // Save to ODF 1.3 strict. Make sure attribute is not written. + // Adapt to ODF 1.4 strict, when it is available. + SetODFDefaultVersion(SvtSaveOptions::ODFDefaultVersion::ODFVER_013); + save(u"calc8"_ustr); // this saves to .ods not to .fods + xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); + assertXPath(pXmlDoc, + "/office:document-content/office:body/office:spreadsheet/" + "table:database-ranges/table:database-range/contains-footer"_ostr, + 0); + + // Save to ODF_LATEST which is currently (Sep 2024) ODF 1.3 extended. + // Adapt to a concrete version when attribute contains-footer is availabe in ODF strict. + // Make sure attribute is written in calcext namespace + SetODFDefaultVersion(SvtSaveOptions::ODFDefaultVersion::ODFVER_LATEST); + save(u"calc8"_ustr); + pXmlDoc = parseExport(u"content.xml"_ustr); + assertXPath(pXmlDoc, + "/office:document-content/office:body/office:spreadsheet/" + "table:database-ranges/table:database-range[@calcext:contains-footer='true']"_ostr); + + // Set back to original ODF default version. + SetODFDefaultVersion(nCurrentODFVersion); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index 823849554693..24009dfbe4e2 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -423,7 +423,7 @@ void ScDBData::GetQueryParam( ScQueryParam& rQueryParam ) const rQueryParam.nTab = nTable; rQueryParam.bByRow = bByRow; rQueryParam.bHasHeader = bHasHeader; - /* TODO: add Totals to ScQueryParam? */ + rQueryParam.bHasTotals = bHasTotals; } void ScDBData::SetQueryParam(const ScQueryParam& rQueryParam) diff --git a/sc/source/core/tool/queryparam.cxx b/sc/source/core/tool/queryparam.cxx index f270488c7e72..aafe0d891951 100644 --- a/sc/source/core/tool/queryparam.cxx +++ b/sc/source/core/tool/queryparam.cxx @@ -68,6 +68,7 @@ ScQueryParamBase::const_iterator ScQueryParamBase::end() const ScQueryParamBase::ScQueryParamBase() : eSearchType(utl::SearchParam::SearchType::Normal), bHasHeader(true), + bHasTotals(false), bByRow(true), bInplace(true), bCaseSens(false), @@ -78,9 +79,9 @@ ScQueryParamBase::ScQueryParamBase() : } ScQueryParamBase::ScQueryParamBase(const ScQueryParamBase& r) : - eSearchType(r.eSearchType), bHasHeader(r.bHasHeader), bByRow(r.bByRow), bInplace(r.bInplace), - bCaseSens(r.bCaseSens), bDuplicate(r.bDuplicate), mbRangeLookup(r.mbRangeLookup), - m_Entries(r.m_Entries) + eSearchType(r.eSearchType), bHasHeader(r.bHasHeader), bHasTotals(r.bHasTotals), bByRow(r.bByRow), + bInplace(r.bInplace), bCaseSens(r.bCaseSens), bDuplicate(r.bDuplicate), + mbRangeLookup(r.mbRangeLookup), m_Entries(r.m_Entries) { } @@ -90,6 +91,7 @@ ScQueryParamBase& ScQueryParamBase::operator=(const ScQueryParamBase& r) { eSearchType = r.eSearchType; bHasHeader = r.bHasHeader; + bHasTotals = r.bHasTotals; bByRow = r.bByRow; bInplace = r.bInplace; bCaseSens = r.bCaseSens; @@ -337,7 +339,7 @@ void ScQueryParam::Clear() nRow1=nRow2 = 0; nTab = SCTAB_MAX; eSearchType = utl::SearchParam::SearchType::Normal; - bHasHeader = bCaseSens = false; + bHasHeader = bHasTotals = bCaseSens = false; bInplace = bByRow = bDuplicate = true; for (auto & itr : m_Entries) @@ -379,6 +381,7 @@ bool ScQueryParam::operator==( const ScQueryParam& rOther ) const && (nRow2 == rOther.nRow2) && (nTab == rOther.nTab) && (bHasHeader == rOther.bHasHeader) + && (bHasTotals == rOther.bHasTotals) && (bByRow == rOther.bByRow) && (bInplace == rOther.bInplace) && (bCaseSens == rOther.bCaseSens) diff --git a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx index 89ebcc27373c..9328b796a81b 100644 --- a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx +++ b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx @@ -246,6 +246,9 @@ private: rData.GetQueryParam(aQueryParam); if (!aQueryParam.bHasHeader) mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONTAINS_HEADER, XML_FALSE); + if (mrExport.getSaneDefaultVersion() & SvtSaveOptions::ODFSVER_EXTENDED) + if (aQueryParam.bHasTotals) + mrExport.AddAttribute(XML_NAMESPACE_CALC_EXT, XML_CONTAINS_FOOTER, XML_TRUE); ScSortParam aSortParam; rData.GetSortParam(aSortParam); diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx index cf6cd7d3e651..0e6c400c30bb 100644 --- a/sc/source/filter/xml/xmldrani.cxx +++ b/sc/source/filter/xml/xmldrani.cxx @@ -104,6 +104,7 @@ ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport, bSubTotalsAscending(true), bFilterConditionSourceRange(false), bHasHeader(true), + bHasFooter(false), bByRow(true), meRangeType(ScDBCollection::GlobalNamed) { @@ -150,6 +151,13 @@ ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport, mpQueryParam->bHasHeader = bHasHeader; } break; + case XML_ELEMENT( TABLE, XML_CONTAINS_FOOTER ): + case XML_ELEMENT( CALC_EXT, XML_CONTAINS_FOOTER ): + { + bHasFooter = IsXMLToken( aIter, XML_TRUE ); + mpQueryParam->bHasTotals = bHasFooter; + } + break; case XML_ELEMENT( TABLE, XML_DISPLAY_FILTER_BUTTONS ): { bAutoFilter = IsXMLToken( aIter, XML_TRUE ); @@ -247,7 +255,7 @@ std::unique_ptr<ScDBData> ScXMLDatabaseRangeContext::ConvertToDBData(const OUStr ScDocument* pDoc = GetScImport().GetDocument(); ::std::unique_ptr<ScDBData> pData( - new ScDBData(rName, maRange.aStart.Tab(), maRange.aStart.Col(), maRange.aStart.Row(), maRange.aEnd.Col(), maRange.aEnd.Row(), bByRow, bHasHeader)); + new ScDBData(rName, maRange.aStart.Tab(), maRange.aStart.Col(), maRange.aStart.Row(), maRange.aEnd.Col(), maRange.aEnd.Row(), bByRow, bHasHeader, bHasFooter)); pData->SetAutoFilter(bAutoFilter); pData->SetKeepFmt(bKeepFormats); diff --git a/sc/source/filter/xml/xmldrani.hxx b/sc/source/filter/xml/xmldrani.hxx index a35074117c28..037d5710d52c 100644 --- a/sc/source/filter/xml/xmldrani.hxx +++ b/sc/source/filter/xml/xmldrani.hxx @@ -81,6 +81,7 @@ class ScXMLDatabaseRangeContext : public ScXMLImportContext bool bSubTotalsAscending; bool bFilterConditionSourceRange; bool bHasHeader; + bool bHasFooter; // UNO TotalsRow, ODF contains-footer bool bByRow; ScDBCollection::RangeType meRangeType; diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx index bb31d5f9e7fc..170f1a58993d 100644 --- a/sc/source/ui/unoobj/datauno.cxx +++ b/sc/source/ui/unoobj/datauno.cxx @@ -1750,6 +1750,7 @@ void ScDatabaseRangeObj::SetQueryParam(const ScQueryParam& rQueryParam) ScDBData aNewData( *pData ); aNewData.SetQueryParam(aParam); aNewData.SetHeader(aParam.bHasHeader); // not in ScDBData::SetQueryParam + aNewData.SetTotals(aParam.bHasTotals); // not in ScDBData::SetQueryParam ScDBDocFunc aFunc(*pDocShell); aFunc.ModifyDBData(aNewData); } |