26 #include <unonames.hxx>
27 #include <document.hxx>
109 #include <rtl/ustring.hxx>
112 #include <rtl/math.hxx>
126 #include <com/sun/star/beans/XPropertySet.hpp>
127 #include <com/sun/star/container/XNamed.hpp>
128 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
129 #include <com/sun/star/form/XFormsSupplier2.hpp>
130 #include <com/sun/star/io/XActiveDataSource.hpp>
131 #include <com/sun/star/io/XSeekable.hpp>
132 #include <com/sun/star/sheet/XUsedAreaCursor.hpp>
133 #include <com/sun/star/sheet/XCellRangeAddressable.hpp>
134 #include <com/sun/star/sheet/XPrintAreas.hpp>
135 #include <com/sun/star/sheet/XUniqueCellFormatRangesSupplier.hpp>
136 #include <com/sun/star/sheet/XLabelRange.hpp>
137 #include <com/sun/star/sheet/NamedRangeFlag.hpp>
138 #include <com/sun/star/sheet/XSheetCellCursor.hpp>
139 #include <com/sun/star/sheet/XSheetCellRanges.hpp>
140 #include <com/sun/star/sheet/XSheetLinkable.hpp>
141 #include <com/sun/star/sheet/GlobalSheetSettings.hpp>
142 #include <com/sun/star/table/XColumnRowRange.hpp>
143 #include <com/sun/star/util/XProtectable.hpp>
144 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
145 #include <com/sun/star/chart2/XChartDocument.hpp>
146 #include <com/sun/star/chart2/data/XRangeXMLConversion.hpp>
147 #include <com/sun/star/chart2/data/XDataReceiver.hpp>
149 #include <com/sun/star/document/XDocumentProperties.hpp>
150 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
160 #include <officecfg/Office/Common.hxx>
167 #define SC_LAYERID "LayerID"
169 #define SC_VIEWCHANGES_COUNT 13
170 #define SC_SHOW_CHANGES 0
171 #define SC_SHOW_ACCEPTED_CHANGES 1
172 #define SC_SHOW_REJECTED_CHANGES 2
173 #define SC_SHOW_CHANGES_BY_DATETIME 3
174 #define SC_SHOW_CHANGES_BY_DATETIME_MODE 4
175 #define SC_SHOW_CHANGES_BY_DATETIME_FIRST_DATETIME 5
176 #define SC_SHOW_CHANGES_BY_DATETIME_SECOND_DATETIME 6
177 #define SC_SHOW_CHANGES_BY_AUTHOR 7
178 #define SC_SHOW_CHANGES_BY_AUTHOR_NAME 8
179 #define SC_SHOW_CHANGES_BY_COMMENT 9
180 #define SC_SHOW_CHANGES_BY_COMMENT_TEXT 10
181 #define SC_SHOW_CHANGES_BY_RANGES 11
182 #define SC_SHOW_CHANGES_BY_RANGES_LIST 12
188 using ::com::sun::star::uno::UNO_QUERY;
192 OUString lcl_RangeSequenceToString(
193 const uno::Sequence< OUString > & rRanges,
194 const uno::Reference< chart2::data::XRangeXMLConversion > & xFormatConverter )
196 OUStringBuffer aResult;
197 const sal_Int32 nMaxIndex( rRanges.getLength() - 1 );
199 for( sal_Int32
i=0;
i<=nMaxIndex; ++
i )
201 OUString aRange( rRanges[
i] );
202 if( xFormatConverter.is())
203 aRange = xFormatConverter->convertRangeToXML( aRange );
204 aResult.append( aRange );
206 aResult.append( cSep );
208 return aResult.makeStringAndClear();
250 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
253 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLExporter", SvXMLExportFlags::ALL));
256 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
259 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLMetaExporter", SvXMLExportFlags::META));
262 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
265 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLStylesExporter", SvXMLExportFlags::STYLES|SvXMLExportFlags::MASTERSTYLES|SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::FONTDECLS));
268 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
271 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLContentExporter", SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::CONTENT|SvXMLExportFlags::SCRIPTS|SvXMLExportFlags::FONTDECLS));
274 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
277 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLSettingsExporter", SvXMLExportFlags::SETTINGS));
280 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
283 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLOasisExporter", SvXMLExportFlags::ALL|SvXMLExportFlags::OASIS));
286 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
289 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLOasisMetaExporter", SvXMLExportFlags::META|SvXMLExportFlags::OASIS));
292 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
295 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLOasisStylesExporter", SvXMLExportFlags::STYLES|SvXMLExportFlags::MASTERSTYLES|SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::FONTDECLS|SvXMLExportFlags::OASIS));
298 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
301 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLOasisContentExporter", SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::CONTENT|SvXMLExportFlags::SCRIPTS|SvXMLExportFlags::FONTDECLS|SvXMLExportFlags::OASIS));
304 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
307 return cppu::acquire(
new ScXMLExport(context,
"com.sun.star.comp.Calc.XMLOasisSettingsExporter", SvXMLExportFlags::SETTINGS|SvXMLExportFlags::OASIS));
318 virtual void onExport(
const uno::Reference < drawing::XShape >& xShape )
override;
323 void ScXMLShapeExport::onExport(
const uno::Reference < drawing::XShape >& xShape )
325 uno::Reference< beans::XPropertySet > xShapeProp( xShape, uno::UNO_QUERY );
326 if( xShapeProp.is() )
328 sal_Int16 nLayerID = 0;
330 GetExport().AddAttribute(XML_NAMESPACE_TABLE, XML_TABLE_BACKGROUND, XML_TRUE);
336 css::uno::Reference<css::sheet::XGlobalSheetSettings> xProperties =
345 const css::uno::Reference< css::uno::XComponentContext >& rContext,
348 rContext, implementationName, GetMeasureUnit(),
XML_SPREADSHEET, nExportFlag ),
352 pCurrentCell(nullptr),
356 bHasRowHeader(false),
357 bRowHeaderOpen(false)
395 if( !(
getExportFlags() & (SvXMLExportFlags::STYLES|SvXMLExportFlags::AUTOSTYLES|SvXMLExportFlags::MASTERSTYLES|SvXMLExportFlags::CONTENT)) )
442 const char pXmlHeader[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
443 sal_Int32 nLen = strlen(pXmlHeader);
445 uno::Sequence<sal_Int8> aFileStart(nLen);
446 sal_Int32 nRead =
xSourceStream->readBytes( aFileStart, nLen );
448 if ( nRead != nLen || memcmp( aFileStart.getConstArray(), pXmlHeader, nLen ) != 0 )
458 const ScSheetSaveData* pSheetData = comphelper::getUnoTunnelImplementation<ScModelObj>(
GetModel())->GetSheetSaveData();
474 NumberFormatIndexMap::const_iterator itr =
aNumFmtIndexMap.find(nNumFmt);
486 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY);
487 if (!xSpreadDoc.is())
490 uno::Reference<container::XIndexAccess> xIndex(xSpreadDoc->getSheets(), uno::UNO_QUERY);
494 nTableCount = xIndex->getCount();
500 for (
SCTAB nTable = 0; nTable < nTableCount; ++nTable)
503 uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIndex->getByIndex(nTable), uno::UNO_QUERY);
504 if (!xDrawPageSupplier.is())
507 uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage());
510 aDrawPage.xDrawPage.set(xDrawPage);
515 sal_Int32 nShapes = xDrawPage->getCount();
516 for (sal_Int32 nShape = 0; nShape < nShapes; ++nShape)
518 uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(nShape), uno::UNO_QUERY);
522 uno::Reference<beans::XPropertySet> xShapeProp(xShape, uno::UNO_QUERY);
523 if (!xShapeProp.is())
526 sal_Int16 nLayerID = 0;
527 bool bExtracted = xShapeProp->getPropertyValue(
gsLayerID) >>= nLayerID;
539 SvxShape* pShapeImp = comphelper::getUnoTunnelImplementation<SvxShape>(xShape);
550 aMyShape.
aAddress = pAnchor->maStart;
555 aMyShape.
nEndX = pAnchor->maEndOffset.X();
556 aMyShape.
nEndY = pAnchor->maEndOffset.Y();
560 pSharedData->SetLastColumn(nTable, pAnchor->maStart.Col());
561 pSharedData->SetLastRow(nTable, pAnchor->maStart.Row());
580 ScMyShapeList::const_iterator aShapeItr = aDummyInitList.end();
583 pShapeList = &
pSharedData->GetShapesContainer()->GetShapes();
584 aShapeItr = pShapeList->begin();
588 for (
SCTAB nTable = 0; nTable < nTableCount; ++nTable)
590 uno::Reference<drawing::XDrawPage> xDrawPage(
pSharedData->GetDrawPage(nTable));
595 uno::Reference< form::XFormsSupplier2 > xFormsSupplier( xDrawPage, uno::UNO_QUERY );
596 if( xFormsSupplier.is() && xFormsSupplier->hasForms() )
604 for (
const auto& rxShape : (*pTableShapes)[nTable])
612 ScMyShapeList::const_iterator aEndItr(pShapeList->end());
613 while ( aShapeItr != aEndItr && ( aShapeItr->aAddress.Tab() == nTable ) )
623 for (
const auto& rNoteShape : rNoteShapes)
625 if ( rNoteShape.aPos.Tab() == nTable )
638 SCTAB nTableCount(0);
639 sal_Int32 nShapesCount(0);
643 uno::Sequence<beans::NamedValue> stats
645 {
"TableCount", uno::makeAny(static_cast<sal_Int32>(nTableCount)) },
646 {
"CellCount", uno::makeAny(nCellCount) },
647 {
"ObjectCount", uno::makeAny(nShapesCount) }
651 uno::Reference<document::XDocumentPropertiesSupplier> xPropSup(
GetModel(),
652 uno::UNO_QUERY_THROW);
653 uno::Reference<document::XDocumentProperties> xDocProps(
654 xPropSup->getDocumentProperties());
655 if (xDocProps.is()) {
656 xDocProps->setDocumentStatistics(stats);
671 table::CellRangeAddress aCellAddress;
672 uno::Reference<sheet::XSheetCellCursor> xCursor(xTable->createCursor());
673 uno::Reference<sheet::XUsedAreaCursor> xUsedArea (xCursor, uno::UNO_QUERY);
674 uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
675 if (xUsedArea.is() && xCellAddress.is())
677 xUsedArea->gotoEndOfUsedArea(
true);
678 aCellAddress = xCellAddress->getRangeAddress();
688 for (
const auto & rLink : rLinks)
717 size_t nCount = pOpList->Count();
723 if ( nTab < pDoc->GetTableCount() )
736 const sal_Int32 nIndex,
const bool bIsAutoStyle,
const bool bIsVisible)
742 if (nRepeatColumns > 1)
744 OUString sOUEndCol(OUString::number(nRepeatColumns));
753 const sal_Int32 nStyleIndex,
const bool bIsVisible)
755 sal_Int32 nRepeat(1);
756 sal_Int32 nPrevIndex(
pDefaults->GetColDefaults()[nColumn].nIndex);
757 bool bPrevAutoStyle(
pDefaults->GetColDefaults()[nColumn].bIsAutoStyle);
758 for (sal_Int32
i = nColumn + 1;
i < nColumn + nRepeatColumns; ++
i)
760 if ((
pDefaults->GetColDefaults()[
i].nIndex != nPrevIndex) ||
761 (
pDefaults->GetColDefaults()[
i].bIsAutoStyle != bPrevAutoStyle))
764 nPrevIndex =
pDefaults->GetColDefaults()[
i].nIndex;
765 bPrevAutoStyle =
pDefaults->GetColDefaults()[
i].bIsAutoStyle;
786 sal_Int32 nColsRepeated (1);
788 sal_Int32 nPrevColumn(0);
789 bool bPrevIsVisible (
true);
790 bool bWasHeader (
false);
791 bool bIsClosed (
true);
792 sal_Int32 nPrevIndex (-1);
794 for (nColumn = 0; nColumn <=
pSharedData->GetLastColumn(nTable); ++nColumn)
797 bool bIsVisible(
true);
798 nIndex =
pColumnStyles->GetStyleNameIndex(nTable, nColumn, bIsVisible);
800 const bool bIsHeader = bHasColumnHeader && (aColumnHeaderRange.
aStart.
Col() <= nColumn) && (nColumn <= aColumnHeaderRange.
aEnd.
Col());
801 if (bIsHeader != bWasHeader)
807 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
811 bPrevIsVisible = bIsVisible;
813 nPrevColumn = nColumn;
823 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
829 bPrevIsVisible = bIsVisible;
831 nPrevColumn = nColumn;
837 else if (nColumn == 0)
841 bPrevIsVisible = bIsVisible;
844 else if ((bIsVisible == bPrevIsVisible) && (nIndex == nPrevIndex) &&
849 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
866 bPrevIsVisible = bIsVisible;
868 nPrevColumn = nColumn;
873 if (nPrevIndex != -1)
874 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
896 vector<sal_uInt32> aNumFmts;
898 const OUString aDefaultStyle = OUString(
"Default").intern();
899 for (
const auto& rNumFmt : aNumFmts)
901 sal_Int32 nNumFmt =
static_cast<sal_Int32
>(rNumFmt);
907 vector<XMLPropertyState> aProps;
908 aVal <<= aDefaultStyle;
909 aProps.emplace_back(nEntryIndex, aVal);
932 std::vector<XMLPropertyState>& rPropStates,
935 sal_Int32 nEntryCount = xMapper->GetEntryCount();
940 sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, rXMLName, 0);
942 if (nIndexFontName == -1 || nIndexFontName >= nEntryCount)
946 if (!pItem->
QueryValue(aAny, MID_FONT_FAMILY_NAME))
949 rPropStates.emplace_back(nIndexFontName, aAny);
953 std::vector<XMLPropertyState>& rPropStates,
const std::vector<const SfxPoolItem*>& rSecAttrs,
957 sal_Int32 nEntryCount = xMapper->GetEntryCount();
958 rPropStates.reserve(rSecAttrs.size());
963 pField =
static_cast<const SvxFieldItem*
>(p)->GetField();
971 sal_Int32
nIndex = xMapper->GetEntryIndex(
974 if (nIndex == -1 || nIndex >= nEntryCount)
981 handleFont(rPropStates, p, xMapper, u
"font-name");
984 handleFont(rPropStates, p, xMapper, u
"font-name-asian");
987 handleFont(rPropStates, p, xMapper, u
"font-name-complex");
993 if (!static_cast<const SvxWeightItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
996 rPropStates.emplace_back(nIndex, aAny);
1003 if (!static_cast<const SvxFontHeightItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1006 rPropStates.emplace_back(nIndex, aAny);
1013 if (!static_cast<const SvxPostureItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1016 rPropStates.emplace_back(nIndex, aAny);
1022 sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-style", 0);
1023 if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
1026 sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-width", 0);
1027 if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
1030 sal_Int32 nIndexType = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-type", 0);
1031 if (nIndexType == -1 || nIndexType > nEntryCount)
1034 sal_Int32 nIndexColor = xMapper->FindEntryIndex(
"CharUnderlineColor", XML_NAMESPACE_STYLE, u
"text-underline-color");
1035 if (nIndexColor == -1 || nIndexColor > nEntryCount)
1038 sal_Int32 nIndexHasColor = xMapper->FindEntryIndex(
"CharUnderlineHasColor", XML_NAMESPACE_STYLE, u
"text-underline-color");
1039 if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
1044 rPropStates.emplace_back(nIndexStyle, aAny);
1045 rPropStates.emplace_back(nIndexType, aAny);
1046 rPropStates.emplace_back(nIndexWidth, aAny);
1049 rPropStates.emplace_back(nIndexColor, aAny);
1052 rPropStates.emplace_back(nIndexHasColor, aAny);
1058 sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-style", 0);
1059 if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
1062 sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-width", 0);
1063 if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
1066 sal_Int32 nIndexType = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-type", 0);
1067 if (nIndexType == -1 || nIndexType > nEntryCount)
1070 sal_Int32 nIndexColor = xMapper->FindEntryIndex(
"CharOverlineColor", XML_NAMESPACE_STYLE, u
"text-overline-color");
1071 if (nIndexColor == -1 || nIndexColor > nEntryCount)
1074 sal_Int32 nIndexHasColor = xMapper->FindEntryIndex(
"CharOverlineHasColor", XML_NAMESPACE_STYLE, u
"text-overline-color");
1075 if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
1080 rPropStates.emplace_back(nIndexStyle, aAny);
1081 rPropStates.emplace_back(nIndexType, aAny);
1082 rPropStates.emplace_back(nIndexWidth, aAny);
1085 rPropStates.emplace_back(nIndexColor, aAny);
1088 rPropStates.emplace_back(nIndexHasColor, aAny);
1093 if (!static_cast<const SvxColorItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1097 if ( aAny >>= nColor )
1099 sal_Int32 nIndexColor = ( nColor ==
COL_AUTO ) ? xMapper->GetEntryIndex(
1100 XML_NAMESPACE_STYLE,
GetXMLToken( XML_USE_WINDOW_FONT_COLOR ), 0 ) : nIndex;
1101 rPropStates.emplace_back( nIndexColor, aAny );
1107 if (!static_cast<const SvxWordLineModeItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1110 rPropStates.emplace_back(nIndex, aAny);
1115 if (!static_cast<const SvxCrossedOutItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1118 rPropStates.emplace_back(nIndex, aAny);
1123 if (!static_cast<const SvxCharReliefItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1126 rPropStates.emplace_back(nIndex, aAny);
1131 if (!static_cast<const SvxContourItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1134 rPropStates.emplace_back(nIndex, aAny);
1139 if (!static_cast<const SvxShadowedItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1142 rPropStates.emplace_back(nIndex, aAny);
1147 if (!static_cast<const SvxKerningItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1150 rPropStates.emplace_back(nIndex, aAny);
1155 if (!static_cast<const SvxAutoKernItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1158 rPropStates.emplace_back(nIndex, aAny);
1163 if (!static_cast<const SvxCharScaleWidthItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1166 rPropStates.emplace_back(nIndex, aAny);
1171 sal_Int32 nIndexEsc = xMapper->FindEntryIndex(
"CharEscapement", XML_NAMESPACE_STYLE, u
"text-position");
1172 if (nIndexEsc == -1 || nIndexEsc > nEntryCount)
1175 sal_Int32 nIndexEscHeight = xMapper->FindEntryIndex(
"CharEscapementHeight", XML_NAMESPACE_STYLE, u
"text-position");
1176 if (nIndexEscHeight == -1 || nIndexEscHeight > nEntryCount)
1182 rPropStates.emplace_back(nIndexEsc, aAny);
1185 rPropStates.emplace_back(nIndexEscHeight, aAny);
1191 if (!static_cast<const SvxEmphasisMarkItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1194 rPropStates.emplace_back(nIndex, aAny);
1201 if (!static_cast<const SvxLanguageItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1205 sal_Int32 nIndexLanguage, nIndexCountry, nIndexScript, nIndexTag;
1209 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"language", 0);
1210 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"country", 0);
1211 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"script", 0);
1212 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag", 0);
1215 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"language-asian", 0);
1216 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"country-asian", 0);
1217 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"script-asian", 0);
1218 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag-asian", 0);
1221 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"language-complex", 0);
1222 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"country-complex", 0);
1223 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"script-complex", 0);
1224 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag-complex", 0);
1227 nIndexLanguage = nIndexCountry = nIndexScript = nIndexTag = -1;
1229 assert( nIndexLanguage >= 0 && nIndexCountry >= 0 && nIndexScript >= 0 && nIndexTag >= 0);
1230 rPropStates.emplace_back( nIndexLanguage, aAny);
1231 rPropStates.emplace_back( nIndexCountry, aAny);
1232 rPropStates.emplace_back( nIndexScript, aAny);
1233 rPropStates.emplace_back( nIndexTag, aAny);
1256 sal_Int32 nCellCount = 0;
1259 std::vector<editeng::Section> aAttrs;
1260 pEdit->GetAllSections(aAttrs);
1264 for (
const auto& rSec : aAttrs)
1266 const std::vector<const SfxPoolItem*>& rSecAttrs = rSec.maAttributes;
1267 if (rSecAttrs.empty())
1271 std::vector<XMLPropertyState> aPropStates;
1272 toXMLPropertyStates(aPropStates, rSecAttrs, xMapper, rAttrMap);
1273 if (!aPropStates.empty())
1274 xStylePool->Add(XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
1284 sal_Int32 nIndex(-1);
1285 #if OSL_DEBUG_LEVEL > 0
1286 sal_Int32 nPrevCol(0);
1289 sal_Int32 nPrevValidationIndex(-1);
1290 bool bIsAutoStyle(
true);
1291 bool bIsFirst(
true);
1294 #if OSL_DEBUG_LEVEL > 0
1295 OSL_ENSURE(bIsFirst || (!bIsFirst && (nPrevCol + nCols == aRange.
nStartColumn)),
"here are some columns missing");
1304 #if OSL_DEBUG_LEVEL > 0
1311 (aRange.
nIndex == nIndex && nIndex == -1)) &&
1318 if (nPrevValidationIndex > -1)
1329 #if OSL_DEBUG_LEVEL > 0
1339 if (nPrevValidationIndex > -1)
1350 const sal_Int32 nIndex,
const sal_Int32 nEqualRows,
1351 bool bHidden,
bool bFiltered)
1381 const sal_Int32 nIndex,
const sal_Int32 nStartRow,
const sal_Int32 nEqualRows,
1382 bool bHidden,
bool bFiltered)
1401 nEquals = nEqualRows;
1403 nOpenRow = nStartRow + nEquals - 1;
1404 if (nEquals < nEqualRows)
1408 nOpenRow = nStartRow + nEqualRows - 1;
1416 const sal_Int32 nIndex,
const sal_Int32 nStartRow,
const sal_Int32 nEqualRows,
1417 bool bHidden,
bool bFiltered)
1419 OpenNewRow(nIndex, nStartRow, nEqualRows, bHidden, bFiltered);
1421 CloseRow(nStartRow + nEqualRows - 1);
1429 sal_Int32 nPrevIndex(0), nIndex;
1430 bool bPrevHidden =
false;
1431 bool bPrevFiltered =
false;
1432 bool bHidden =
false;
1433 bool bFiltered =
false;
1434 sal_Int32 nEqualRows(1);
1435 sal_Int32 nEndRow(nStartRow + nRepeatRow);
1436 sal_Int32 nEndRowHidden = nStartRow - 1;
1437 sal_Int32 nEndRowFiltered = nStartRow - 1;
1439 for (nRow = nStartRow; nRow < nEndRow; ++nRow)
1441 if (nRow == nStartRow)
1443 nPrevIndex =
pRowStyles->GetStyleNameIndex(nTable, nRow);
1446 if (nRow > nEndRowHidden)
1448 bPrevHidden = rRowAttr.
rowHidden(nTable, nRow, nEndRowHidden);
1449 bHidden = bPrevHidden;
1451 if (nRow > nEndRowFiltered)
1453 bPrevFiltered = rRowAttr.
rowFiltered(nTable, nRow, nEndRowFiltered);
1454 bFiltered = bPrevFiltered;
1461 nIndex =
pRowStyles->GetStyleNameIndex(nTable, nRow);
1464 if (nRow > nEndRowHidden)
1465 bHidden = rRowAttr.
rowHidden(nTable, nRow, nEndRowHidden);
1466 if (nRow > nEndRowFiltered)
1467 bFiltered = rRowAttr.
rowFiltered(nTable, nRow, nEndRowFiltered);
1469 if (nIndex == nPrevIndex && bHidden == bPrevHidden && bFiltered == bPrevFiltered &&
1476 assert(nPrevIndex >= 0 &&
"coverity#1438402");
1478 OpenAndCloseRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered);
1481 nPrevIndex = nIndex;
1482 bPrevHidden = bHidden;
1483 bPrevFiltered = bFiltered;
1487 assert(nPrevIndex >= 0 &&
"coverity#1438402");
1488 OpenNewRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered);
1492 sal_Int32 nIndex =
pRowStyles->GetStyleNameIndex(nTable, nStartRow);
1493 bool bHidden =
false;
1494 bool bFiltered =
false;
1497 sal_Int32 nEndRowHidden;
1498 sal_Int32 nEndRowFiltered;
1499 bHidden = rRowAttr.
rowHidden(nTable, nStartRow, nEndRowHidden);
1500 bFiltered = rRowAttr.
rowFiltered(nTable, nStartRow, nEndRowFiltered);
1502 assert(nIndex >= 0 &&
"coverity#1438402");
1503 OpenNewRow(nIndex, nStartRow, 1, bHidden, bFiltered);
1505 nOpenRow = nStartRow + nRepeatRow - 1;
1531 const sal_Int32 nEndCol,
const sal_Int32 nEndRow,
const sal_Int32 nSheet)
1535 if (nStartRow == nEndRow)
1539 OpenRow(nSheet, nStartRow, 1, aRowAttr);
1551 sal_Int32 nTotalRows(nEndRow - nStartRow + 1 - 1);
1552 while (nRows < nTotalRows)
1557 OSL_ENSURE(nMaxRows,
"something went wrong");
1558 if (nMaxRows >= nTotalRows - nRows)
1560 OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr);
1561 nRows += nTotalRows - nRows;
1565 OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr);
1573 if (nTotalRows == 1)
1575 OpenRow(nSheet, nEndRow, 1, aRowAttr);
1583 sal_Int32 nTotalRows(nEndRow - nStartRow + 1 - 1);
1584 while (nRows < nTotalRows)
1588 OSL_ENSURE(nMaxRows,
"something went wrong");
1589 if (nMaxRows >= nTotalRows - nRows)
1591 OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr);
1592 nRows += nTotalRows - nRows;
1596 OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr);
1604 OpenRow(nSheet, nEndRow, 1, aRowAttr);
1613 bool& rHasRowHeader,
ScRange& rRowHeaderRange,
1614 OUString& rPrintRanges)
const
1616 uno::Reference <sheet::XPrintAreas> xPrintAreas (
xCurrentTable, uno::UNO_QUERY);
1617 if (!xPrintAreas.is())
1620 rHasRowHeader = xPrintAreas->getPrintTitleRows();
1621 rHasColumnHeader = xPrintAreas->getPrintTitleColumns();
1622 table::CellRangeAddress rTempRowHeaderRange = xPrintAreas->getTitleRows();
1623 rRowHeaderRange =
ScRange(rTempRowHeaderRange.StartColumn,
1624 rTempRowHeaderRange.StartRow,
1625 rTempRowHeaderRange.Sheet,
1626 rTempRowHeaderRange.EndColumn,
1627 rTempRowHeaderRange.EndRow,
1628 rTempRowHeaderRange.Sheet);
1629 table::CellRangeAddress rTempColumnHeaderRange = xPrintAreas->getTitleColumns();
1630 rColumnHeaderRange =
ScRange(rTempColumnHeaderRange.StartColumn,
1631 rTempColumnHeaderRange.StartRow,
1632 rTempColumnHeaderRange.Sheet,
1633 rTempColumnHeaderRange.EndColumn,
1634 rTempColumnHeaderRange.EndRow,
1635 rTempColumnHeaderRange.Sheet);
1636 uno::Sequence< table::CellRangeAddress > aRangeList( xPrintAreas->getPrintAreas() );
1642 size_t nDepth = pFields->
GetDepth();
1643 for (
size_t i = 0;
i < nDepth; ++
i)
1646 for (
size_t j = 0; j < nFields; ++j)
1651 aGroup.
nLevel =
static_cast<sal_Int16
>(
i);
1684 uno::Sequence<sal_Int8> aPassHash;
1706 if (aBuffer.isEmpty())
1734 const uno::Reference< io::XOutputStream >& xOutput,
1737 const sal_Int32 nBufSize = 16*1024;
1738 uno::Sequence<sal_Int8> aSequence(nBufSize);
1740 sal_Int32 nRemaining = nCount;
1743 while ( nRemaining > 0 )
1745 sal_Int32 nRead = xInput->readBytes( aSequence, std::min( nRemaining, nBufSize ) );
1749 if ( nRead < 1 || aSequence[0] != static_cast<sal_Int8>(
'<') )
1755 if (nRead == nRemaining)
1758 if ( aSequence[nRead-1] != static_cast<sal_Int8>(
'>') )
1764 if ( nRead == nBufSize )
1766 xOutput->writeBytes( aSequence );
1767 nRemaining -= nRead;
1773 uno::Sequence<sal_Int8> aTempBuf( aSequence.getConstArray(), nRead );
1774 xOutput->writeBytes( aTempBuf );
1788 const sal_Int32 nMaxSize = 32*1024;
1790 if ( nBytesToSkip > 0 )
1792 sal_Int32 nRemaining = nBytesToSkip;
1793 while ( nRemaining > 0 )
1795 sal_Int32 nSkip = std::min( nRemaining, nMaxSize );
1796 xInput->skipBytes( nSkip );
1797 nRemaining -= nSkip;
1804 uno::Reference<xml::sax::XDocumentHandler> xHandler =
GetDocHandler();
1805 uno::Reference<io::XActiveDataSource> xDestSource( xHandler, uno::UNO_QUERY );
1806 if ( !xDestSource.is() )
1809 uno::Reference<io::XOutputStream> xDestStream = xDestSource->getOutputStream();
1810 uno::Reference<io::XSeekable> xDestSeek( xDestStream, uno::UNO_QUERY );
1811 if ( !xDestSeek.is() )
1815 xDestSource->setOutputStream( xDestStream );
1819 const OString aOutStr(
"\n ");
1820 uno::Sequence<sal_Int8> aOutSeq( reinterpret_cast<sal_Int8 const *>(aOutStr.getStr()), aOutStr.getLength() );
1821 xDestStream->writeBytes( aOutSeq );
1824 rNewStart =
static_cast<sal_Int32
>(xDestSeek->getPosition());
1834 uno::Sequence<OUString> aEmptySeq;
1839 rNewEnd =
static_cast<sal_Int32
>(xDestSeek->getPosition());
1851 ScFormatSaveData* pFormatData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetFormatSaveData();
1853 for (
const auto& rFormatInfo : pFormatData->
maIDToName)
1855 xAutoStylePool->RegisterDefinedName(XmlStyleFamily::TABLE_CELL, rFormatInfo.second);
1864 SCTAB nTableCount(0);
1865 sal_Int32 nShapesCount(0);
1867 OSL_FAIL(
"no shared data set");
1875 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
1876 if ( !xSpreadDoc.is() )
1879 ScSheetSaveData* pSheetData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetSheetSaveData();
1883 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
1889 sal_Int32 nTableCount(xIndex->getCount());
1905 mpCellsItr->SetEmptyDatabaseRanges( &aEmptyRanges );
1907 mpCellsItr->SetDetectiveOp( &aDetectiveOpContainer );
1909 if (nTableCount > 0)
1912 for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable)
1914 sal_Int32 nStartOffset = -1;
1915 sal_Int32 nEndOffset = -1;
1917 pSheetData->
GetStreamPos( nTable, nStartOffset, nEndOffset );
1919 if ( nStartOffset >= 0 && nEndOffset >= 0 &&
xSourceStream.is() )
1921 sal_Int32 nNewStart = -1;
1922 sal_Int32 nNewEnd = -1;
1926 pSheetData->
AddSavePos( nTable, nNewStart, nNewEnd );
1929 mpCellsItr->SkipTable(static_cast<SCTAB>(nTable));
1933 uno::Reference<sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
1955 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
1956 if (xSpreadDoc.is())
1961 SCTAB nTableCount(0);
1962 sal_Int32 nShapesCount(0);
1968 uno::Reference <lang::XMultiServiceFactory> xMultiServiceFactory(
GetModel(), uno::UNO_QUERY);
1969 if (xMultiServiceFactory.is())
1971 uno::Reference <beans::XPropertySet> xProperties(xMultiServiceFactory->createInstance(
"com.sun.star.sheet.Defaults"), uno::UNO_QUERY);
1972 if (xProperties.is())
1983 aStylesExp->exportStyleFamily(OUString(
"CellStyles"),
1990 const uno::Reference<sheet::XSpreadsheet>& xTable,
1991 sal_Int32 nTable,
const OUString* pOldName)
1993 css::uno::Any aAny = xProperties->getPropertyValue(
"FormatID");
1994 sal_uInt64 nKey = 0;
1998 uno::Reference<sheet::XSheetCellRanges> xCellRanges( xProperties, uno::UNO_QUERY );
2000 OUString sStyleName;
2001 sal_Int32 nNumberFormat(-1);
2002 sal_Int32 nValidationIndex(-1);
2004 std::vector< XMLPropertyState >::iterator aItr(aPropStates.begin());
2005 std::vector< XMLPropertyState >::iterator aEndItr(aPropStates.end());
2007 while (aItr != aEndItr)
2009 if (aItr->mnIndex != -1)
2020 aItr = aPropStates.erase(aItr);
2021 aEndItr = aPropStates.end();
2026 aItr->maValue >>= sStyleName;
2034 if (aItr->maValue >>= nNumberFormat)
2055 aPropStates.clear();
2056 if (nNumberFormat == -1)
2058 if (sStyleName.isEmpty())
2061 if (!aPropStates.empty())
2066 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates))
2076 bool bAdded =
false;
2079 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2080 ScFormatSaveData* pFormatData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetFormatSaveData();
2081 auto itr = pFormatData->
maIDToName.find(nKey);
2084 sName = itr->second;
2085 bAdded =
GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates);
2090 bool bIsAutoStyle(
true);
2091 if (bAdded ||
GetAutoStylePool()->
Add(sName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates))
2098 const uno::Sequence<table::CellRangeAddress> aAddresses(xCellRanges->getRangeAddresses());
2099 bool bGetMerge(
true);
2100 for (table::CellRangeAddress
const & address : aAddresses)
2102 pSharedData->SetLastColumn(nTable, address.EndColumn);
2104 pCellStyles->AddRangeStyleName(address, nIndex, bIsAutoStyle, nValidationIndex, nNumberFormat);
2106 bGetMerge =
GetMerged(&address, xTable);
2113 sal_Int32 nIndex(0);
2114 pCellStyles->AddStyleName(sEncodedStyleName, nIndex,
false);
2117 const uno::Sequence<table::CellRangeAddress> aAddresses(xCellRanges->getRangeAddresses());
2118 bool bGetMerge(
true);
2119 for (table::CellRangeAddress
const & address : aAddresses)
2122 bGetMerge =
GetMerged(&address, xTable);
2123 pCellStyles->AddRangeStyleName(address, nIndex,
false, nValidationIndex, nNumberFormat);
2124 if( sStyleName !=
"Default" || nValidationIndex != -1 )
2126 pSharedData->SetLastColumn(nTable, address.EndColumn);
2135 const OUString* pOldName, sal_Int32& rIndex,
bool& rIsVisible)
2138 if(aPropStates.empty())
2141 auto aItr = std::find_if(aPropStates.begin(), aPropStates.end(),
2144 if (aItr != aPropStates.end())
2146 aItr->maValue >>= rIsVisible;
2149 const OUString sParent;
2152 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_COLUMN, sParent, aPropStates))
2172 const OUString* pOldName, sal_Int32& rIndex)
2175 if(aPropStates.empty())
2178 const OUString sParent;
2181 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_ROW, sParent, aPropStates))
2185 rIndex =
pRowStyles->AddStyleName(*pOldName);
2203 uno::Reference<container::XEnumeration> xEnum( xEnumAccess->createEnumeration() );
2206 sal_Int32 nSkip = nIndex;
2209 (
void) xEnum->nextElement();
2212 aRet = xEnum->nextElement();
2214 catch (container::NoSuchElementException&)
2231 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2232 if (!xSpreadDoc.is())
2235 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
2245 ScSheetSaveData* pSheetData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetSheetSaveData();
2246 if (pSheetData &&
pDoc)
2251 for (
SCTAB nTab=0; nTab<nTabCount; ++nTab)
2256 const std::vector<ScCellStyleEntry>& rCellEntries = pSheetData->
GetCellStyles();
2257 for (
const auto& rCellEntry : rCellEntries)
2260 sal_Int32 nTable = aPos.
Tab();
2264 uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2265 uno::Reference <beans::XPropertySet> xProperties(
2266 xTable->getCellByPosition( aPos.
Col(), aPos.
Row() ), uno::UNO_QUERY );
2273 const std::vector<ScCellStyleEntry>& rColumnEntries = pSheetData->
GetColumnStyles();
2274 for (
const auto& rColumnEntry : rColumnEntries)
2276 ScAddress aPos = rColumnEntry.maCellPos;
2277 sal_Int32 nTable = aPos.
Tab();
2281 uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2282 uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns());
2283 uno::Reference<beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex( aPos.
Col() ), uno::UNO_QUERY);
2285 sal_Int32 nIndex(-1);
2286 bool bIsVisible(
true);
2292 const std::vector<ScCellStyleEntry>& rRowEntries = pSheetData->
GetRowStyles();
2293 for (
const auto& rRowEntry : rRowEntries)
2296 sal_Int32 nTable = aPos.
Tab();
2300 uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2301 uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows());
2302 uno::Reference<beans::XPropertySet> xRowProperties(xTableRows->getByIndex( aPos.
Row() ), uno::UNO_QUERY);
2304 sal_Int32 nIndex(-1);
2310 const std::vector<ScCellStyleEntry>& rTableEntries = pSheetData->
GetTableStyles();
2311 for (
const auto& rTableEntry : rTableEntries)
2314 sal_Int32 nTable = aPos.
Tab();
2319 uno::Reference<beans::XPropertySet> xTableProperties(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2320 if (xTableProperties.is())
2323 OUString
sName( rTableEntry.maName );
2324 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TABLE_TABLE, OUString(), aPropStates);
2335 const std::vector<ScNoteStyleEntry>& rNoteEntries = pSheetData->
GetNoteStyles();
2336 for (
const auto& rNoteEntry : rNoteEntries)
2346 OSL_ENSURE( pNote,
"note not found" );
2351 uno::Reference<beans::XPropertySet> xShapeProperties( pDrawObj->
getUnoShape(), uno::UNO_QUERY );
2352 if (xShapeProperties.is())
2354 if ( !rNoteEntry.maStyleName.isEmpty() )
2356 std::vector<XMLPropertyState> aPropStates(xShapeMapper->Filter(xShapeProperties));
2357 OUString
sName( rNoteEntry.maStyleName );
2358 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::SD_GRAPHICS_ID, OUString(), aPropStates);
2361 if ( !rNoteEntry.maTextStyle.isEmpty() )
2363 std::vector<XMLPropertyState> aPropStates(
2365 OUString
sName( rNoteEntry.maTextStyle );
2366 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_PARAGRAPH, OUString(), aPropStates);
2378 const std::vector<ScTextStyleEntry>& rNoteParaEntries = pSheetData->
GetNoteParaStyles();
2379 for (
const auto& rNoteParaEntry : rNoteParaEntries)
2381 ScAddress aPos = rNoteParaEntry.maCellPos;
2387 OSL_ENSURE( pNote,
"note not found" );
2391 uno::Reference<container::XEnumerationAccess> xCellText(pDrawObj->
getUnoShape(), uno::UNO_QUERY);
2392 uno::Reference<beans::XPropertySet> xParaProp(
2393 lcl_GetEnumerated( xCellText, rNoteParaEntry.maSelection.nStartPara ), uno::UNO_QUERY );
2394 if ( xParaProp.is() )
2396 std::vector<XMLPropertyState> aPropStates(xParaPropMapper->Filter(xParaProp));
2397 OUString
sName( rNoteParaEntry.maName );
2398 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_PARAGRAPH, OUString(), aPropStates);
2409 const std::vector<ScTextStyleEntry>& rNoteTextEntries = pSheetData->
GetNoteTextStyles();
2410 for (
const auto& rNoteTextEntry : rNoteTextEntries)
2412 ScAddress aPos = rNoteTextEntry.maCellPos;
2418 OSL_ENSURE( pNote,
"note not found" );
2422 uno::Reference<text::XSimpleText> xCellText(pDrawObj->
getUnoShape(), uno::UNO_QUERY);
2423 uno::Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY);
2424 ScDrawTextCursor* pCursor = comphelper::getUnoTunnelImplementation<ScDrawTextCursor>( xCursorProp );
2429 std::vector<XMLPropertyState> aPropStates(xTextPropMapper->Filter(xCursorProp));
2430 OUString
sName( rNoteTextEntry.maName );
2431 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
2443 uno::Reference<beans::XPropertySet> xPrevCursorProp;
2444 const std::vector<ScTextStyleEntry>& rTextEntries = pSheetData->
GetTextStyles();
2445 for (
const auto& rTextEntry : rTextEntries)
2448 sal_Int32 nTable = aPos.
Tab();
2456 uno::Reference<beans::XPropertySet> xCursorProp;
2457 if (xPrevCursorProp && aPrevPos == aPos)
2458 xCursorProp = xPrevCursorProp;
2461 uno::Reference<table::XCellRange> xCellRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2462 uno::Reference<text::XSimpleText> xCellText(xCellRange->getCellByPosition(aPos.
Col(), aPos.
Row()), uno::UNO_QUERY);
2463 xCursorProp.set(xCellText->createTextCursor(), uno::UNO_QUERY);
2465 ScCellTextCursor* pCursor = comphelper::getUnoTunnelImplementation<ScCellTextCursor>( xCursorProp );
2470 std::vector<XMLPropertyState> aPropStates(xTextPropMapper->Filter(xCursorProp));
2471 OUString
sName( rTextEntry.maName );
2472 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
2474 xPrevCursorProp = xCursorProp;
2483 SCTAB nTableCount(0);
2484 sal_Int32 nShapesCount(0);
2487 sal_Int32 nTableCount(xIndex->getCount());
2492 uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2497 uno::Reference<beans::XPropertySet> xTableProperties(xTable, uno::UNO_QUERY);
2498 if (xTableProperties.is())
2501 if(!aPropStates.empty())
2504 GetAutoStylePool()->Add(sName, XmlStyleFamily::TABLE_TABLE, OUString(), aPropStates);
2510 uno::Reference<sheet::XUniqueCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY );
2511 if ( xCellFormatRanges.is() )
2513 uno::Reference<container::XIndexAccess> xFormatRangesIndex(xCellFormatRanges->getUniqueCellFormatRanges());
2514 if (xFormatRangesIndex.is())
2516 sal_Int32 nFormatRangesCount(xFormatRangesIndex->getCount());
2518 for (sal_Int32 nFormatRange = 0; nFormatRange < nFormatRangesCount; ++nFormatRange)
2520 uno::Reference< sheet::XSheetCellRanges> xCellRanges(xFormatRangesIndex->getByIndex(nFormatRange), uno::UNO_QUERY);
2521 if (xCellRanges.is())
2523 uno::Reference <beans::XPropertySet> xProperties (xCellRanges, uno::UNO_QUERY);
2524 if (xProperties.is())
2533 uno::Reference<table::XColumnRowRange> xColumnRowRange (xTable, uno::UNO_QUERY);
2534 if (xColumnRowRange.is() &&
pDoc)
2537 uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns());
2538 if (xTableColumns.is())
2542 table::CellRangeAddress aCellAddress(
GetEndAddress(xTable));
2543 if (aCellAddress.EndColumn > nColumns)
2550 sal_Int32 nColumn = 0;
2551 while (nColumn <= pDoc->MaxCol())
2553 sal_Int32 nIndex(-1);
2554 bool bIsVisible(
true);
2555 uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex(nColumn), uno::UNO_QUERY);
2556 if (xColumnProperties.is())
2559 pColumnStyles->AddFieldStyleName(nTable, nColumn, nIndex, bIsVisible);
2561 sal_Int32 nOld(nColumn);
2563 for (sal_Int32
i = nOld + 1;
i < nColumn; ++
i)
2566 if (aCellAddress.EndColumn > nColumns)
2568 bool bIsVisible(
true);
2569 sal_Int32 nIndex(
pColumnStyles->GetStyleNameIndex(nTable, nColumns, bIsVisible));
2570 for (sal_Int32
i = nColumns + 1;
i <= aCellAddress.EndColumn; ++
i)
2574 uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows());
2575 if (xTableRows.is())
2582 while (nRow <= pDoc->MaxRow())
2584 sal_Int32 nIndex = 0;
2585 uno::Reference <beans::XPropertySet> xRowProperties(xTableRows->getByIndex(nRow), uno::UNO_QUERY);
2586 if(xRowProperties.is())
2589 pRowStyles->AddFieldStyleName(nTable, nRow, nIndex);
2591 sal_Int32 nOld(nRow);
2593 if (nRow > nOld + 1)
2594 pRowStyles->AddFieldStyleName(nTable, nOld + 1, nIndex, nRow - 1);
2615 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2616 if (!xSpreadDoc.is())
2619 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
2673 SvxShape* pShapeImp = comphelper::getUnoTunnelImplementation<SvxShape>( xShape );
2686 pSharedData->AddNoteObj( xShape, pCaptData->maStart );
2690 OSL_ENSURE( pCaptData->maStart.Tab() ==
nCurrentTable,
"invalid table in object data" );
2703 pObject,
nCurrentTable, aPosition, aSourceRange, bRedLine );
2704 pSharedData->GetDetectiveObjContainer()->AddObject( eObjType, static_cast<SCTAB>(
nCurrentTable), aPosition, aSourceRange, bRedLine );
2709 const uno::Reference <sheet::XSpreadsheet>& xTable)
2712 sal_Int32 nRow(pCellAddress->StartRow);
2713 sal_Int32 nCol(pCellAddress->StartColumn);
2714 sal_Int32 nEndRow(pCellAddress->EndRow);
2715 sal_Int32 nEndCol(pCellAddress->EndColumn);
2716 bool bRowInc(nEndRow > nRow);
2717 while(!bReady && nRow <= nEndRow && nCol <= nEndCol)
2719 uno::Reference<sheet::XSheetCellRange> xSheetCellRange(xTable->getCellRangeByPosition(nCol, nRow, nCol, nRow), uno::UNO_QUERY);
2720 if (xSheetCellRange.is())
2722 uno::Reference<sheet::XSheetCellCursor> xCursor(xTable->createCursorByRange(xSheetCellRange));
2725 uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
2726 xCursor->collapseToMergedArea();
2727 table::CellRangeAddress aCellAddress2(xCellAddress->getRangeAddress());
2728 ScRange aScRange( aCellAddress2.StartColumn, aCellAddress2.StartRow, aCellAddress2.Sheet,
2729 aCellAddress2.EndColumn, aCellAddress2.EndRow, aCellAddress2.Sheet );
2731 if ((aScRange.aEnd.Row() > nRow ||
2732 aScRange.aEnd.Col() > nCol) &&
2733 aScRange.aStart.Row() == nRow &&
2734 aScRange.aStart.Col() == nCol)
2737 pSharedData->SetLastColumn(aScRange.aEnd.Tab(), aScRange.aEnd.Col());
2738 pSharedData->SetLastRow(aScRange.aEnd.Tab(), aScRange.aEnd.Row());
2752 OSL_ENSURE(!(!bReady && nEndRow > nRow && nEndCol > nCol),
"should not be possible");
2757 ScRange& aCellAddress,
bool& bIsFirst)
const
2765 aCellAddress = aMatrixRange;
2791 uno::Reference<container::XNamed> xName (xTable, uno::UNO_QUERY );
2796 OUString sOUTableName(xName->getName());
2800 uno::Reference<util::XProtectable> xProtectable (xTable, uno::UNO_QUERY);
2802 if (xProtectable.is() && xProtectable->isProtected())
2831 if (!aBuffer.isEmpty())
2859 OUString sPrintRanges;
2861 bool bHasColumnHeader;
2863 if( !sPrintRanges.isEmpty() )
2898 uno::Reference<document::XEventsSupplier> xSupplier(xTable, uno::UNO_QUERY);
2899 uno::Reference<container::XNameAccess> xEvents = xSupplier->getEvents();
2905 uno::Reference<drawing::XDrawPage> xDrawPage;
2906 if (
pSharedData->HasForm(nTable, xDrawPage) && xDrawPage.is())
2911 OSL_ENSURE( bRet,
"OFormLayerXMLExport::seekPage failed!" );
2919 pSharedData->SetLastColumn(nTable, aRange.EndColumn);
2925 if (bHasColumnHeader)
2934 ExportColumns(nTable, aColumnHeaderRange, bHasColumnHeader);
2935 bool bIsFirst(
true);
2936 sal_Int32 nEqualCells(0);
2987 if (pRangeName && !pRangeName->
empty())
3004 std::unique_ptr<SvXMLElementExport> pElem;
3005 if (!rStyleName.isEmpty())
3008 rExport.
AddAttribute(XML_NAMESPACE_TEXT, XML_STYLE_NAME, rStyleName);
3020 case text::textfield::Type::URL:
3027 rExport.
AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE,
"simple");
3029 if (!aTargetFrame.isEmpty())
3030 rExport.
AddAttribute(XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, aTargetFrame);
3043 OUStringBuffer
aBuf;
3044 sal_Int32 nVal = aDate.GetYear();
3047 nVal = aDate.GetMonth();
3052 nVal = aDate.GetDay();
3056 rExport.
AddAttribute(XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
"N2");
3057 rExport.
AddAttribute(XML_NAMESPACE_TEXT, XML_DATE_VALUE, aBuf.makeStringAndClear());
3065 case text::textfield::Type::DOCINFO_TITLE:
3093 void flushParagraph(
3097 std::vector<editeng::Section>::const_iterator it, std::vector<editeng::Section>::const_iterator
const & itEnd )
3103 for (; it != itEnd; ++it)
3109 std::vector<XMLPropertyState> aPropStates;
3111 OUString aStyleName = xStylePool->Find(XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
3112 writeContent(rExport, aStyleName, aContent, pField);
3128 if (bIsFirstMatrixCell)
3135 bool bIsEmpty(
false);
3136 switch (aCell.
nType)
3138 case table::CellContentType_EMPTY :
3143 case table::CellContentType_VALUE :
3152 case table::CellContentType_TEXT :
3157 sCellString, sFormattedString);
3163 case table::CellContentType_FORMULA :
3169 if (!bIsMatrix || bIsFirstMatrixCell)
3178 sal_uInt16 nNamespacePrefix =
3190 if (pFormulaCell->
GetErrCode() != FormulaError::NONE)
3200 else if (pFormulaCell->
IsValue())
3272 bool bPrevCharWasSpace =
true;
3288 std::vector<OUString> aParaTexts;
3290 aParaTexts.reserve(nParaCount);
3291 for (sal_Int32
i = 0;
i < nParaCount; ++
i)
3292 aParaTexts.push_back(pText->
GetText(
i));
3295 std::vector<editeng::Section> aAttrs;
3297 std::vector<editeng::Section>::const_iterator itSec = aAttrs.begin(), itSecEnd = aAttrs.end();
3298 std::vector<editeng::Section>::const_iterator itPara = itSec;
3299 sal_Int32 nCurPara = 0;
3300 for (; itSec != itSecEnd; ++itSec)
3308 flushParagraph(*
this, aParaTexts[nCurPara], xMapper, xStylePool, rAttrMap, itPara, itSec);
3313 flushParagraph(*
this, aParaTexts[nCurPara], xMapper, xStylePool, rAttrMap, itPara, itSecEnd);
3322 const sal_Unicode* pEnd = p +
static_cast<size_t>(aResStr.getLength());
3324 for (; p != pEnd; ++p)
3334 aContent = OUString(pPara, p-pPara);
3346 aContent = OUString(pPara, pEnd-pPara);
3354 uno::Reference < beans::XPropertySet > xShapeProps ( xShape, uno::UNO_QUERY );
3355 bool bIsChart(
false );
3356 if (xShapeProps.is())
3358 sal_Int32 nZOrder = 0;
3359 if (xShapeProps->getPropertyValue(
"ZOrder") >>= nZOrder)
3363 uno::Reference< beans::XPropertySetInfo > xPropSetInfo = xShapeProps->getPropertySetInfo();
3364 OUString sPropCLSID (
"CLSID");
3365 if( xPropSetInfo->hasPropertyByName( sPropCLSID ) )
3368 if (xShapeProps->getPropertyValue( sPropCLSID ) >>= sCLSID)
3370 if ( sCLSID.equalsIgnoreAsciiCase(
GetChartExport()->getChartCLSID()) )
3376 OUString aChartName;
3377 xShapeProps->getPropertyValue(
"PersistName" ) >>= aChartName;
3385 if ( rRangeList.
is() )
3388 if ( !sRanges.isEmpty() )
3401 if ( sRanges.isEmpty() )
3403 uno::Reference< frame::XModel > xChartModel;
3404 if( ( xShapeProps->getPropertyValue(
"Model" ) >>= xChartModel ) &&
3407 uno::Reference< chart2::XChartDocument > xChartDoc( xChartModel, uno::UNO_QUERY );
3408 uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartModel, uno::UNO_QUERY );
3409 if( xChartDoc.is() && xReceiver.is() &&
3410 ! xChartDoc->hasInternalDataProvider())
3414 uno::Sequence< OUString > aRepresentations(
3415 xReceiver->getUsedRangeRepresentations());
3417 if(aRepresentations.hasElements())
3422 uno::Reference< chart2::data::XRangeXMLConversion > xRangeConverter( xChartDoc->getDataProvider(), uno::UNO_QUERY );
3423 sRanges = lcl_RangeSequenceToString( aRepresentations, xRangeConverter );
3425 pAttrList->AddAttribute(
3441 uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY );
3445 catch (
const beans::UnknownPropertyException& )
3450 std::unique_ptr< SvXMLElementExport > pDrawA;
3452 if ( !sHlink.isEmpty() )
3486 aPoint.X = aCellRectFull.
Right();
3488 aPoint.X = aCellRectFull.
Left();
3489 aPoint.Y = aCellRectFull.
Top();
3492 for (
const auto& rShape : rMyCell.
aShapeList)
3494 if (rShape.xShape.is())
3499 bool bNeedsRestore =
false;
3510 bool bIsShapeTransformed =
false;
3516 if (bIsShapeTransformed && pObjData)
3517 aSnapStartAddress = pObjData->
maStart;
3522 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3523 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
false );
3525 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3526 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
true );
3529 if (pObj && (
abs(nLeftDiff) > 1 ||
abs(nTopDiff) > 1))
3531 bNeedsRestore =
true;
3538 if (rShape.bResizeWithCell && pObjData && pObj)
3546 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3547 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
false );
3549 aSnapEndAddress.
Col(), aSnapEndAddress.
Row(), aSnapEndAddress.
Col(),
3550 aSnapEndAddress.
Row(), aSnapEndAddress.
Tab(),
false );
3551 aRectFull.
SetLeft(aStartCellRect.
Left() + aSnapStartOffset.X());
3552 aRectFull.
SetTop(aStartCellRect.
Top() + aSnapStartOffset.Y());
3553 aRectFull.
SetRight(aEndCellRect.
Left() + aSnapEndOffset.X());
3554 aRectFull.
SetBottom(aEndCellRect.
Top() + aSnapEndOffset.Y());
3559 bNeedsRestore =
true;
3561 if (!aScaleWidth.IsValid())
3564 if (!aScaleHeight.IsValid())
3571 if ( rShape.bResizeWithCell &&
3572 rShape.xShape->getShapeType() !=
"com.sun.star.drawing.CaptionShape" )
3574 OUString sEndAddress;
3577 OUStringBuffer sBuffer;
3579 sBuffer, rShape.nEndX);
3582 sBuffer, rShape.nEndY);
3597 aPoint.X = rShape.xShape->getPosition().X - pNRObjData->
maStartOffset.X();
3598 aPoint.Y = rShape.xShape->getPosition().Y - pNRObjData->
maStartOffset.Y();
3603 aPoint.X = 2 * rShape.xShape->getPosition().X + rShape.xShape->getSize().Width
3608 if (bNeedsRestore && pObj && pGeoData)
3617 if (!pTableShapes || (*pTableShapes)[
nCurrentTable].empty())
3620 OSL_ENSURE(pTableShapes->size() >
static_cast<size_t>(
nCurrentTable),
"wrong Table");
3628 awt::Point aPoint(rxShape->getPosition());
3629 awt::Size aSize(rxShape->getSize());
3630 aPoint.X += aPoint.X + aSize.Width;
3657 OUStringBuffer sValue;
3659 static_cast<double>(rAreaLink.
nRefresh) / 86400 );
3676 uno::Reference<drawing::XShape> xCurrentShape( pNoteCaption->
getUnoShape(), uno::UNO_QUERY );
3677 if (xCurrentShape.get()!=xShape.get())
3680 const OUString& sAuthor(pNote->
GetAuthor());
3681 if (!sAuthor.isEmpty())
3689 const OUString& aDate(pNote->
GetDate());
3697 OUStringBuffer sBuf;
3735 uno::Reference<drawing::XShape> xShape( pNoteCaption->
getUnoShape(), uno::UNO_QUERY );
3750 sal_Int32 nObjCount(rObjVec.size());
3751 sal_Int32 nOpCount(rOpVec.size());
3752 if( !(nObjCount || nOpCount) )
3757 for(
const auto& rObj : rObjVec)
3768 if( rObj.bHasError )
3775 for(
const auto& rOp : rOpVec)
3788 if (nEqualCellCount > 0)
3790 sal_Int32 nTemp(nEqualCellCount + 1);
3791 OUString sOUEqualCellCount(OUString::number(nTemp));
3805 bool bIsEqual =
false;
3828 switch ( aCell1.
nType )
3830 case table::CellContentType_EMPTY :
3835 case table::CellContentType_VALUE :
3843 case table::CellContentType_TEXT :
3853 case table::CellContentType_FORMULA :
3873 uno::Reference<beans::XPropertySet> xPropertySet(xSpreadDoc, uno::UNO_QUERY);
3874 if (!xPropertySet.is())
3883 if (bUseWildcards && bUseRegularExpressions)
3884 bUseRegularExpressions =
false;
3887 sal_Int32 nIterationCount(100);
3889 double fIterationEpsilon = 0;
3891 util::Date aNullDate;
3893 if (!(bCalcAsShown || bIgnoreCase || !bLookUpLabels || !bMatchWholeCell || !bUseRegularExpressions ||
3895 bIsIterationEnabled || nIterationCount != 100 || !::rtl::math::approxEqual(fIterationEpsilon, 0.001) ||
3896 aNullDate.Day != 30 || aNullDate.Month != 12 || aNullDate.Year != 1899 || nYear2000 != 1930))
3903 if (!bMatchWholeCell)
3907 if (!bUseRegularExpressions)
3911 if (nYear2000 != 1930)
3917 if (aNullDate.Day != 30 || aNullDate.Month != 12 || aNullDate.Year != 1899)
3919 OUStringBuffer sDate;
3924 if (bIsIterationEnabled || nIterationCount != 100 || !::rtl::math::approxEqual(fIterationEpsilon, 0.001))
3926 if (bIsIterationEnabled)
3928 if (nIterationCount != 100)
3932 if (!::rtl::math::approxEqual(fIterationEpsilon, 0.001))
3934 OUStringBuffer sBuffer;
3946 uno::Reference <sheet::XSheetLinkable> xLinkable (
xCurrentTable, uno::UNO_QUERY);
3947 if (!(xLinkable.is() &&
GetModel().is()))
3950 sheet::SheetLinkMode nMode (xLinkable->getLinkMode());
3951 if (nMode == sheet::SheetLinkMode_NONE)
3954 OUString sLink (xLinkable->getLinkUrl());
3955 uno::Reference <beans::XPropertySet> xProps (
GetModel(), uno::UNO_QUERY);
3959 uno::Reference <container::XIndexAccess> xIndex(xProps->getPropertyValue(
SC_UNO_SHEETLINKS), uno::UNO_QUERY);
3963 sal_Int32
nCount(xIndex->getCount());
3968 uno::Reference <beans::XPropertySet> xLinkProps;
3969 for (sal_Int32
i = 0; (
i <
nCount) && !bFound; ++
i)
3971 xLinkProps.set(xIndex->getByIndex(
i), uno::UNO_QUERY);
3972 if (xLinkProps.is())
3976 bFound = sLink == sNewLink;
3979 if (!(bFound && xLinkProps.is()))
3983 OUString sFilterOptions;
3984 OUString sTableName (xLinkable->getLinkSheetName());
3985 sal_Int32 nRefresh(0);
3989 if (sLink.isEmpty())
3994 if (!sTableName.isEmpty())
3996 if (!sFilter.isEmpty())
3998 if (!sFilterOptions.isEmpty())
4000 if (nMode != sheet::SheetLinkMode_NORMAL)
4004 OUStringBuffer sBuffer;
4006 static_cast<double>(nRefresh) / 86400 );
4039 OUString sRangeListStr;
4042 if (!sComment.isEmpty())
4049 uno::Reference< beans::XPropertySet > xDocProp( xSpreadDoc, uno::UNO_QUERY );
4050 if( !xDocProp.is() )
return;
4053 uno::Reference< container::XIndexAccess > xColRangesIAccess(xDocProp->getPropertyValue(
SC_UNO_COLLABELRNG ), uno::UNO_QUERY);
4054 if( xColRangesIAccess.is() )
4055 nCount += xColRangesIAccess->getCount();
4057 uno::Reference< container::XIndexAccess > xRowRangesIAccess(xDocProp->getPropertyValue(
SC_UNO_ROWLABELRNG ), uno::UNO_QUERY);
4058 if( xRowRangesIAccess.is() )
4059 nCount += xRowRangesIAccess->getCount();
4071 if( !xRangesIAccess.is() )
return;
4073 sal_Int32
nCount(xRangesIAccess->getCount());
4074 for( sal_Int32 nIndex = 0; nIndex <
nCount; ++nIndex )
4076 uno::Reference< sheet::XLabelRange > xRange(xRangesIAccess->getByIndex( nIndex ), uno::UNO_QUERY);
4080 table::CellRangeAddress aCellRange( xRange->getLabelArea() );
4083 aCellRange = xRange->getDataArea();
4112 if (rDataSources.empty())
4116 for (
const auto& itr : rDataSources)
4133 for (
auto& itr : aDataTransformations)
4137 switch(aTransformationType)
4143 std::set<SCCOL> aColumns = aDeleteTransformation->
getColumns();
4145 for(
auto& col : aColumns)
4166 std::set<SCCOL> aColumns = aMergeTransformation->
getColumns();
4171 for(
auto& col : aColumns)
4182 std::shared_ptr<sc::SortTransformation> aSortTransformation = std::dynamic_pointer_cast<
sc::SortTransformation>(itr);
4183 ScSortParam aSortParam = aSortTransformation->getSortParam();
4201 std::shared_ptr<sc::TextTransformation> aTextTransformation = std::dynamic_pointer_cast<
sc::TextTransformation>(itr);
4205 switch ( aTextTransformType )
4221 std::set<SCCOL> aColumns = aTextTransformation->getColumns();
4225 for(
auto& col : aColumns)
4236 std::shared_ptr<sc::AggregateFunction> aAggregateFunction = std::dynamic_pointer_cast<
sc::AggregateFunction>(itr);
4237 std::set<SCCOL> aColumns = aAggregateFunction->
getColumns();
4241 switch (aAggregateType)
4259 for(
auto& col : aColumns)
4270 std::shared_ptr<sc::NumberTransformation> aNumberTransformation = std::dynamic_pointer_cast<
sc::NumberTransformation>(itr);
4274 switch ( aNumberTransformType )
4320 std::set<SCCOL> aColumns = aNumberTransformation->getColumn();
4321 for(
auto& col : aColumns)
4333 std::set<SCCOL> aColumns = aReplaceNullTransformation->
getColumn();
4338 for(
auto& col : aColumns)
4349 std::shared_ptr<sc::DateTimeTransformation> aDateTimeTransformation = std::dynamic_pointer_cast<
sc::DateTimeTransformation>(itr);
4353 switch ( aDateTimeTransformationType )