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;
546 aMyShape.
aAddress = pAnchor->maStart;
551 aMyShape.
nEndX = pAnchor->maEndOffset.X();
552 aMyShape.
nEndY = pAnchor->maEndOffset.Y();
556 pSharedData->SetLastColumn(nTable, pAnchor->maStart.Col());
557 pSharedData->SetLastRow(nTable, pAnchor->maStart.Row());
576 ScMyShapeList::const_iterator aShapeItr = aDummyInitList.end();
579 pShapeList = &
pSharedData->GetShapesContainer()->GetShapes();
580 aShapeItr = pShapeList->begin();
584 for (
SCTAB nTable = 0; nTable < nTableCount; ++nTable)
586 uno::Reference<drawing::XDrawPage> xDrawPage(
pSharedData->GetDrawPage(nTable));
591 uno::Reference< form::XFormsSupplier2 > xFormsSupplier( xDrawPage, uno::UNO_QUERY );
592 if( xFormsSupplier.is() && xFormsSupplier->hasForms() )
600 for (
const auto& rxShape : (*pTableShapes)[nTable])
608 ScMyShapeList::const_iterator aEndItr(pShapeList->end());
609 while ( aShapeItr != aEndItr && ( aShapeItr->aAddress.Tab() == nTable ) )
619 for (
const auto& rNoteShape : rNoteShapes)
621 if ( rNoteShape.aPos.Tab() == nTable )
634 SCTAB nTableCount(0);
635 sal_Int32 nShapesCount(0);
639 uno::Sequence<beans::NamedValue> stats
641 {
"TableCount", uno::makeAny(static_cast<sal_Int32>(nTableCount)) },
642 {
"CellCount", uno::makeAny(nCellCount) },
643 {
"ObjectCount", uno::makeAny(nShapesCount) }
647 uno::Reference<document::XDocumentPropertiesSupplier> xPropSup(
GetModel(),
648 uno::UNO_QUERY_THROW);
649 uno::Reference<document::XDocumentProperties> xDocProps(
650 xPropSup->getDocumentProperties());
651 if (xDocProps.is()) {
652 xDocProps->setDocumentStatistics(stats);
667 table::CellRangeAddress aCellAddress;
668 uno::Reference<sheet::XSheetCellCursor> xCursor(xTable->createCursor());
669 uno::Reference<sheet::XUsedAreaCursor> xUsedArea (xCursor, uno::UNO_QUERY);
670 uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
671 if (xUsedArea.is() && xCellAddress.is())
673 xUsedArea->gotoEndOfUsedArea(
true);
674 aCellAddress = xCellAddress->getRangeAddress();
684 for (
const auto & rLink : rLinks)
713 size_t nCount = pOpList->Count();
719 if ( nTab < pDoc->GetTableCount() )
732 const sal_Int32 nIndex,
const bool bIsAutoStyle,
const bool bIsVisible)
738 if (nRepeatColumns > 1)
740 OUString sOUEndCol(OUString::number(nRepeatColumns));
749 const sal_Int32 nStyleIndex,
const bool bIsVisible)
751 sal_Int32 nRepeat(1);
752 sal_Int32 nPrevIndex(
pDefaults->GetColDefaults()[nColumn].nIndex);
753 bool bPrevAutoStyle(
pDefaults->GetColDefaults()[nColumn].bIsAutoStyle);
754 for (sal_Int32
i = nColumn + 1;
i < nColumn + nRepeatColumns; ++
i)
756 if ((
pDefaults->GetColDefaults()[
i].nIndex != nPrevIndex) ||
757 (
pDefaults->GetColDefaults()[
i].bIsAutoStyle != bPrevAutoStyle))
760 nPrevIndex =
pDefaults->GetColDefaults()[
i].nIndex;
761 bPrevAutoStyle =
pDefaults->GetColDefaults()[
i].bIsAutoStyle;
782 sal_Int32 nColsRepeated (1);
784 sal_Int32 nPrevColumn(0);
785 bool bPrevIsVisible (
true);
786 bool bWasHeader (
false);
787 bool bIsClosed (
true);
788 sal_Int32 nPrevIndex (-1);
790 for (nColumn = 0; nColumn <=
pSharedData->GetLastColumn(nTable); ++nColumn)
793 bool bIsVisible(
true);
794 nIndex =
pColumnStyles->GetStyleNameIndex(nTable, nColumn, bIsVisible);
796 const bool bIsHeader = bHasColumnHeader && (aColumnHeaderRange.
aStart.
Col() <= nColumn) && (nColumn <= aColumnHeaderRange.
aEnd.
Col());
797 if (bIsHeader != bWasHeader)
803 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
807 bPrevIsVisible = bIsVisible;
809 nPrevColumn = nColumn;
819 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
825 bPrevIsVisible = bIsVisible;
827 nPrevColumn = nColumn;
833 else if (nColumn == 0)
837 bPrevIsVisible = bIsVisible;
840 else if ((bIsVisible == bPrevIsVisible) && (nIndex == nPrevIndex) &&
845 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
862 bPrevIsVisible = bIsVisible;
864 nPrevColumn = nColumn;
869 if (nPrevIndex != -1)
870 WriteColumn(nPrevColumn, nColsRepeated, nPrevIndex, bPrevIsVisible);
892 vector<sal_uInt32> aNumFmts;
894 const OUString aDefaultStyle = OUString(
"Default").intern();
895 for (
const auto& rNumFmt : aNumFmts)
897 sal_Int32 nNumFmt =
static_cast<sal_Int32
>(rNumFmt);
903 vector<XMLPropertyState> aProps;
904 aVal <<= aDefaultStyle;
905 aProps.emplace_back(nEntryIndex, aVal);
928 std::vector<XMLPropertyState>& rPropStates,
931 sal_Int32 nEntryCount = xMapper->GetEntryCount();
936 sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, rXMLName, 0);
938 if (nIndexFontName == -1 || nIndexFontName >= nEntryCount)
942 if (!pItem->
QueryValue(aAny, MID_FONT_FAMILY_NAME))
945 rPropStates.emplace_back(nIndexFontName, aAny);
949 std::vector<XMLPropertyState>& rPropStates,
const std::vector<const SfxPoolItem*>& rSecAttrs,
953 sal_Int32 nEntryCount = xMapper->GetEntryCount();
954 rPropStates.reserve(rSecAttrs.size());
959 pField =
static_cast<const SvxFieldItem*
>(p)->GetField();
967 sal_Int32
nIndex = xMapper->GetEntryIndex(
970 if (nIndex == -1 || nIndex >= nEntryCount)
977 handleFont(rPropStates, p, xMapper, u
"font-name");
980 handleFont(rPropStates, p, xMapper, u
"font-name-asian");
983 handleFont(rPropStates, p, xMapper, u
"font-name-complex");
989 if (!static_cast<const SvxWeightItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
992 rPropStates.emplace_back(nIndex, aAny);
999 if (!static_cast<const SvxFontHeightItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1002 rPropStates.emplace_back(nIndex, aAny);
1009 if (!static_cast<const SvxPostureItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1012 rPropStates.emplace_back(nIndex, aAny);
1018 sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-style", 0);
1019 if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
1022 sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-width", 0);
1023 if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
1026 sal_Int32 nIndexType = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-underline-type", 0);
1027 if (nIndexType == -1 || nIndexType > nEntryCount)
1030 sal_Int32 nIndexColor = xMapper->FindEntryIndex(
"CharUnderlineColor", XML_NAMESPACE_STYLE, u
"text-underline-color");
1031 if (nIndexColor == -1 || nIndexColor > nEntryCount)
1034 sal_Int32 nIndexHasColor = xMapper->FindEntryIndex(
"CharUnderlineHasColor", XML_NAMESPACE_STYLE, u
"text-underline-color");
1035 if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
1040 rPropStates.emplace_back(nIndexStyle, aAny);
1041 rPropStates.emplace_back(nIndexType, aAny);
1042 rPropStates.emplace_back(nIndexWidth, aAny);
1045 rPropStates.emplace_back(nIndexColor, aAny);
1048 rPropStates.emplace_back(nIndexHasColor, aAny);
1054 sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-style", 0);
1055 if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
1058 sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-width", 0);
1059 if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
1062 sal_Int32 nIndexType = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, u
"text-overline-type", 0);
1063 if (nIndexType == -1 || nIndexType > nEntryCount)
1066 sal_Int32 nIndexColor = xMapper->FindEntryIndex(
"CharOverlineColor", XML_NAMESPACE_STYLE, u
"text-overline-color");
1067 if (nIndexColor == -1 || nIndexColor > nEntryCount)
1070 sal_Int32 nIndexHasColor = xMapper->FindEntryIndex(
"CharOverlineHasColor", XML_NAMESPACE_STYLE, u
"text-overline-color");
1071 if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
1076 rPropStates.emplace_back(nIndexStyle, aAny);
1077 rPropStates.emplace_back(nIndexType, aAny);
1078 rPropStates.emplace_back(nIndexWidth, aAny);
1081 rPropStates.emplace_back(nIndexColor, aAny);
1084 rPropStates.emplace_back(nIndexHasColor, aAny);
1089 if (!static_cast<const SvxColorItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1093 if ( aAny >>= nColor )
1095 sal_Int32 nIndexColor = ( nColor ==
COL_AUTO ) ? xMapper->GetEntryIndex(
1096 XML_NAMESPACE_STYLE,
GetXMLToken( XML_USE_WINDOW_FONT_COLOR ), 0 ) : nIndex;
1097 rPropStates.emplace_back( nIndexColor, aAny );
1103 if (!static_cast<const SvxWordLineModeItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1106 rPropStates.emplace_back(nIndex, aAny);
1111 if (!static_cast<const SvxCrossedOutItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1114 rPropStates.emplace_back(nIndex, aAny);
1119 if (!static_cast<const SvxCharReliefItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1122 rPropStates.emplace_back(nIndex, aAny);
1127 if (!static_cast<const SvxContourItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1130 rPropStates.emplace_back(nIndex, aAny);
1135 if (!static_cast<const SvxShadowedItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1138 rPropStates.emplace_back(nIndex, aAny);
1143 if (!static_cast<const SvxKerningItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1146 rPropStates.emplace_back(nIndex, aAny);
1151 if (!static_cast<const SvxAutoKernItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1154 rPropStates.emplace_back(nIndex, aAny);
1159 if (!static_cast<const SvxCharScaleWidthItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1162 rPropStates.emplace_back(nIndex, aAny);
1167 sal_Int32 nIndexEsc = xMapper->FindEntryIndex(
"CharEscapement", XML_NAMESPACE_STYLE, u
"text-position");
1168 if (nIndexEsc == -1 || nIndexEsc > nEntryCount)
1171 sal_Int32 nIndexEscHeight = xMapper->FindEntryIndex(
"CharEscapementHeight", XML_NAMESPACE_STYLE, u
"text-position");
1172 if (nIndexEscHeight == -1 || nIndexEscHeight > nEntryCount)
1178 rPropStates.emplace_back(nIndexEsc, aAny);
1181 rPropStates.emplace_back(nIndexEscHeight, aAny);
1187 if (!static_cast<const SvxEmphasisMarkItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1190 rPropStates.emplace_back(nIndex, aAny);
1197 if (!static_cast<const SvxLanguageItem*>(p)->QueryValue(aAny, pEntry->
mnFlag))
1201 sal_Int32 nIndexLanguage, nIndexCountry, nIndexScript, nIndexTag;
1205 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"language", 0);
1206 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"country", 0);
1207 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_FO, u
"script", 0);
1208 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag", 0);
1211 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"language-asian", 0);
1212 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"country-asian", 0);
1213 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"script-asian", 0);
1214 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag-asian", 0);
1217 nIndexLanguage = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"language-complex", 0);
1218 nIndexCountry = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"country-complex", 0);
1219 nIndexScript = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"script-complex", 0);
1220 nIndexTag = xMapper->GetEntryIndex( XML_NAMESPACE_STYLE, u
"rfc-language-tag-complex", 0);
1223 nIndexLanguage = nIndexCountry = nIndexScript = nIndexTag = -1;
1225 assert( nIndexLanguage >= 0 && nIndexCountry >= 0 && nIndexScript >= 0 && nIndexTag >= 0);
1226 rPropStates.emplace_back( nIndexLanguage, aAny);
1227 rPropStates.emplace_back( nIndexCountry, aAny);
1228 rPropStates.emplace_back( nIndexScript, aAny);
1229 rPropStates.emplace_back( nIndexTag, aAny);
1252 sal_Int32 nCellCount = 0;
1255 std::vector<editeng::Section> aAttrs;
1256 pEdit->GetAllSections(aAttrs);
1260 for (
const auto& rSec : aAttrs)
1262 const std::vector<const SfxPoolItem*>& rSecAttrs = rSec.maAttributes;
1263 if (rSecAttrs.empty())
1267 std::vector<XMLPropertyState> aPropStates;
1268 toXMLPropertyStates(aPropStates, rSecAttrs, xMapper, rAttrMap);
1269 if (!aPropStates.empty())
1270 xStylePool->Add(XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
1280 sal_Int32 nIndex(-1);
1281 #if OSL_DEBUG_LEVEL > 0
1282 sal_Int32 nPrevCol(0);
1285 sal_Int32 nPrevValidationIndex(-1);
1286 bool bIsAutoStyle(
true);
1287 bool bIsFirst(
true);
1290 #if OSL_DEBUG_LEVEL > 0
1291 OSL_ENSURE(bIsFirst || (!bIsFirst && (nPrevCol + nCols == aRange.
nStartColumn)),
"here are some columns missing");
1300 #if OSL_DEBUG_LEVEL > 0
1307 (aRange.
nIndex == nIndex && nIndex == -1)) &&
1314 if (nPrevValidationIndex > -1)
1325 #if OSL_DEBUG_LEVEL > 0
1335 if (nPrevValidationIndex > -1)
1346 const sal_Int32 nIndex,
const sal_Int32 nEqualRows,
1347 bool bHidden,
bool bFiltered)
1377 const sal_Int32 nIndex,
const sal_Int32 nStartRow,
const sal_Int32 nEqualRows,
1378 bool bHidden,
bool bFiltered)
1397 nEquals = nEqualRows;
1399 nOpenRow = nStartRow + nEquals - 1;
1400 if (nEquals < nEqualRows)
1404 nOpenRow = nStartRow + nEqualRows - 1;
1412 const sal_Int32 nIndex,
const sal_Int32 nStartRow,
const sal_Int32 nEqualRows,
1413 bool bHidden,
bool bFiltered)
1415 OpenNewRow(nIndex, nStartRow, nEqualRows, bHidden, bFiltered);
1417 CloseRow(nStartRow + nEqualRows - 1);
1425 sal_Int32 nPrevIndex(0), nIndex;
1426 bool bPrevHidden =
false;
1427 bool bPrevFiltered =
false;
1428 bool bHidden =
false;
1429 bool bFiltered =
false;
1430 sal_Int32 nEqualRows(1);
1431 sal_Int32 nEndRow(nStartRow + nRepeatRow);
1432 sal_Int32 nEndRowHidden = nStartRow - 1;
1433 sal_Int32 nEndRowFiltered = nStartRow - 1;
1435 for (nRow = nStartRow; nRow < nEndRow; ++nRow)
1437 if (nRow == nStartRow)
1439 nPrevIndex =
pRowStyles->GetStyleNameIndex(nTable, nRow);
1442 if (nRow > nEndRowHidden)
1444 bPrevHidden = rRowAttr.
rowHidden(nTable, nRow, nEndRowHidden);
1445 bHidden = bPrevHidden;
1447 if (nRow > nEndRowFiltered)
1449 bPrevFiltered = rRowAttr.
rowFiltered(nTable, nRow, nEndRowFiltered);
1450 bFiltered = bPrevFiltered;
1457 nIndex =
pRowStyles->GetStyleNameIndex(nTable, nRow);
1460 if (nRow > nEndRowHidden)
1461 bHidden = rRowAttr.
rowHidden(nTable, nRow, nEndRowHidden);
1462 if (nRow > nEndRowFiltered)
1463 bFiltered = rRowAttr.
rowFiltered(nTable, nRow, nEndRowFiltered);
1465 if (nIndex == nPrevIndex && bHidden == bPrevHidden && bFiltered == bPrevFiltered &&
1472 assert(nPrevIndex >= 0 &&
"coverity#1438402");
1474 OpenAndCloseRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered);
1477 nPrevIndex = nIndex;
1478 bPrevHidden = bHidden;
1479 bPrevFiltered = bFiltered;
1483 assert(nPrevIndex >= 0 &&
"coverity#1438402");
1484 OpenNewRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered);
1488 sal_Int32 nIndex =
pRowStyles->GetStyleNameIndex(nTable, nStartRow);
1489 bool bHidden =
false;
1490 bool bFiltered =
false;
1493 sal_Int32 nEndRowHidden;
1494 sal_Int32 nEndRowFiltered;
1495 bHidden = rRowAttr.
rowHidden(nTable, nStartRow, nEndRowHidden);
1496 bFiltered = rRowAttr.
rowFiltered(nTable, nStartRow, nEndRowFiltered);
1498 assert(nIndex >= 0 &&
"coverity#1438402");
1499 OpenNewRow(nIndex, nStartRow, 1, bHidden, bFiltered);
1501 nOpenRow = nStartRow + nRepeatRow - 1;
1527 const sal_Int32 nEndCol,
const sal_Int32 nEndRow,
const sal_Int32 nSheet)
1531 if (nStartRow == nEndRow)
1535 OpenRow(nSheet, nStartRow, 1, aRowAttr);
1547 sal_Int32 nTotalRows(nEndRow - nStartRow + 1 - 1);
1548 while (nRows < nTotalRows)
1553 OSL_ENSURE(nMaxRows,
"something went wrong");
1554 if (nMaxRows >= nTotalRows - nRows)
1556 OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr);
1557 nRows += nTotalRows - nRows;
1561 OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr);
1569 if (nTotalRows == 1)
1571 OpenRow(nSheet, nEndRow, 1, aRowAttr);
1579 sal_Int32 nTotalRows(nEndRow - nStartRow + 1 - 1);
1580 while (nRows < nTotalRows)
1584 OSL_ENSURE(nMaxRows,
"something went wrong");
1585 if (nMaxRows >= nTotalRows - nRows)
1587 OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr);
1588 nRows += nTotalRows - nRows;
1592 OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr);
1600 OpenRow(nSheet, nEndRow, 1, aRowAttr);
1609 bool& rHasRowHeader,
ScRange& rRowHeaderRange,
1610 OUString& rPrintRanges)
const
1612 uno::Reference <sheet::XPrintAreas> xPrintAreas (
xCurrentTable, uno::UNO_QUERY);
1613 if (!xPrintAreas.is())
1616 rHasRowHeader = xPrintAreas->getPrintTitleRows();
1617 rHasColumnHeader = xPrintAreas->getPrintTitleColumns();
1618 table::CellRangeAddress rTempRowHeaderRange = xPrintAreas->getTitleRows();
1619 rRowHeaderRange =
ScRange(rTempRowHeaderRange.StartColumn,
1620 rTempRowHeaderRange.StartRow,
1621 rTempRowHeaderRange.Sheet,
1622 rTempRowHeaderRange.EndColumn,
1623 rTempRowHeaderRange.EndRow,
1624 rTempRowHeaderRange.Sheet);
1625 table::CellRangeAddress rTempColumnHeaderRange = xPrintAreas->getTitleColumns();
1626 rColumnHeaderRange =
ScRange(rTempColumnHeaderRange.StartColumn,
1627 rTempColumnHeaderRange.StartRow,
1628 rTempColumnHeaderRange.Sheet,
1629 rTempColumnHeaderRange.EndColumn,
1630 rTempColumnHeaderRange.EndRow,
1631 rTempColumnHeaderRange.Sheet);
1632 uno::Sequence< table::CellRangeAddress > aRangeList( xPrintAreas->getPrintAreas() );
1638 size_t nDepth = pFields->
GetDepth();
1639 for (
size_t i = 0;
i < nDepth; ++
i)
1642 for (
size_t j = 0; j < nFields; ++j)
1647 aGroup.
nLevel =
static_cast<sal_Int16
>(
i);
1680 uno::Sequence<sal_Int8> aPassHash;
1702 if (aBuffer.isEmpty())
1730 const uno::Reference< io::XOutputStream >& xOutput,
1733 const sal_Int32 nBufSize = 16*1024;
1734 uno::Sequence<sal_Int8> aSequence(nBufSize);
1736 sal_Int32 nRemaining = nCount;
1739 while ( nRemaining > 0 )
1741 sal_Int32 nRead = xInput->readBytes( aSequence, std::min( nRemaining, nBufSize ) );
1745 if ( nRead < 1 || aSequence[0] != static_cast<sal_Int8>(
'<') )
1751 if (nRead == nRemaining)
1754 if ( aSequence[nRead-1] != static_cast<sal_Int8>(
'>') )
1760 if ( nRead == nBufSize )
1762 xOutput->writeBytes( aSequence );
1763 nRemaining -= nRead;
1769 uno::Sequence<sal_Int8> aTempBuf( aSequence.getConstArray(), nRead );
1770 xOutput->writeBytes( aTempBuf );
1784 const sal_Int32 nMaxSize = 32*1024;
1786 if ( nBytesToSkip > 0 )
1788 sal_Int32 nRemaining = nBytesToSkip;
1789 while ( nRemaining > 0 )
1791 sal_Int32 nSkip = std::min( nRemaining, nMaxSize );
1792 xInput->skipBytes( nSkip );
1793 nRemaining -= nSkip;
1800 uno::Reference<xml::sax::XDocumentHandler> xHandler =
GetDocHandler();
1801 uno::Reference<io::XActiveDataSource> xDestSource( xHandler, uno::UNO_QUERY );
1802 if ( !xDestSource.is() )
1805 uno::Reference<io::XOutputStream> xDestStream = xDestSource->getOutputStream();
1806 uno::Reference<io::XSeekable> xDestSeek( xDestStream, uno::UNO_QUERY );
1807 if ( !xDestSeek.is() )
1811 xDestSource->setOutputStream( xDestStream );
1815 const OString aOutStr(
"\n ");
1816 uno::Sequence<sal_Int8> aOutSeq( reinterpret_cast<sal_Int8 const *>(aOutStr.getStr()), aOutStr.getLength() );
1817 xDestStream->writeBytes( aOutSeq );
1820 rNewStart =
static_cast<sal_Int32
>(xDestSeek->getPosition());
1830 uno::Sequence<OUString> aEmptySeq;
1835 rNewEnd =
static_cast<sal_Int32
>(xDestSeek->getPosition());
1847 ScFormatSaveData* pFormatData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetFormatSaveData();
1849 for (
const auto& rFormatInfo : pFormatData->
maIDToName)
1851 xAutoStylePool->RegisterDefinedName(XmlStyleFamily::TABLE_CELL, rFormatInfo.second);
1860 SCTAB nTableCount(0);
1861 sal_Int32 nShapesCount(0);
1863 OSL_FAIL(
"no shared data set");
1871 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
1872 if ( !xSpreadDoc.is() )
1875 ScSheetSaveData* pSheetData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetSheetSaveData();
1879 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
1885 sal_Int32 nTableCount(xIndex->getCount());
1901 mpCellsItr->SetEmptyDatabaseRanges( &aEmptyRanges );
1903 mpCellsItr->SetDetectiveOp( &aDetectiveOpContainer );
1905 if (nTableCount > 0)
1908 for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable)
1910 sal_Int32 nStartOffset = -1;
1911 sal_Int32 nEndOffset = -1;
1913 pSheetData->
GetStreamPos( nTable, nStartOffset, nEndOffset );
1915 if ( nStartOffset >= 0 && nEndOffset >= 0 &&
xSourceStream.is() )
1917 sal_Int32 nNewStart = -1;
1918 sal_Int32 nNewEnd = -1;
1922 pSheetData->
AddSavePos( nTable, nNewStart, nNewEnd );
1925 mpCellsItr->SkipTable(static_cast<SCTAB>(nTable));
1929 uno::Reference<sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
1951 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
1952 if (xSpreadDoc.is())
1957 SCTAB nTableCount(0);
1958 sal_Int32 nShapesCount(0);
1964 uno::Reference <lang::XMultiServiceFactory> xMultiServiceFactory(
GetModel(), uno::UNO_QUERY);
1965 if (xMultiServiceFactory.is())
1967 uno::Reference <beans::XPropertySet> xProperties(xMultiServiceFactory->createInstance(
"com.sun.star.sheet.Defaults"), uno::UNO_QUERY);
1968 if (xProperties.is())
1979 aStylesExp->exportStyleFamily(OUString(
"CellStyles"),
1986 const uno::Reference<sheet::XSpreadsheet>& xTable,
1987 sal_Int32 nTable,
const OUString* pOldName)
1989 css::uno::Any aAny = xProperties->getPropertyValue(
"FormatID");
1990 sal_uInt64 nKey = 0;
1994 uno::Reference<sheet::XSheetCellRanges> xCellRanges( xProperties, uno::UNO_QUERY );
1996 OUString sStyleName;
1997 sal_Int32 nNumberFormat(-1);
1998 sal_Int32 nValidationIndex(-1);
2000 std::vector< XMLPropertyState >::iterator aItr(aPropStates.begin());
2001 std::vector< XMLPropertyState >::iterator aEndItr(aPropStates.end());
2003 while (aItr != aEndItr)
2005 if (aItr->mnIndex != -1)
2016 aItr = aPropStates.erase(aItr);
2017 aEndItr = aPropStates.end();
2022 aItr->maValue >>= sStyleName;
2030 if (aItr->maValue >>= nNumberFormat)
2051 aPropStates.clear();
2052 if (nNumberFormat == -1)
2054 if (sStyleName.isEmpty())
2057 if (!aPropStates.empty())
2062 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates))
2072 bool bAdded =
false;
2075 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2076 ScFormatSaveData* pFormatData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetFormatSaveData();
2077 auto itr = pFormatData->
maIDToName.find(nKey);
2080 sName = itr->second;
2081 bAdded =
GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates);
2086 bool bIsAutoStyle(
true);
2087 if (bAdded ||
GetAutoStylePool()->
Add(sName, XmlStyleFamily::TABLE_CELL, sStyleName, aPropStates))
2094 const uno::Sequence<table::CellRangeAddress> aAddresses(xCellRanges->getRangeAddresses());
2095 bool bGetMerge(
true);
2096 for (table::CellRangeAddress
const & address : aAddresses)
2098 pSharedData->SetLastColumn(nTable, address.EndColumn);
2100 pCellStyles->AddRangeStyleName(address, nIndex, bIsAutoStyle, nValidationIndex, nNumberFormat);
2102 bGetMerge =
GetMerged(&address, xTable);
2109 sal_Int32 nIndex(0);
2110 pCellStyles->AddStyleName(sEncodedStyleName, nIndex,
false);
2113 const uno::Sequence<table::CellRangeAddress> aAddresses(xCellRanges->getRangeAddresses());
2114 bool bGetMerge(
true);
2115 for (table::CellRangeAddress
const & address : aAddresses)
2118 bGetMerge =
GetMerged(&address, xTable);
2119 pCellStyles->AddRangeStyleName(address, nIndex,
false, nValidationIndex, nNumberFormat);
2120 if( sStyleName !=
"Default" || nValidationIndex != -1 )
2122 pSharedData->SetLastColumn(nTable, address.EndColumn);
2131 const OUString* pOldName, sal_Int32& rIndex,
bool& rIsVisible)
2134 if(aPropStates.empty())
2137 auto aItr = std::find_if(aPropStates.begin(), aPropStates.end(),
2140 if (aItr != aPropStates.end())
2142 aItr->maValue >>= rIsVisible;
2145 const OUString sParent;
2148 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_COLUMN, sParent, aPropStates))
2168 const OUString* pOldName, sal_Int32& rIndex)
2171 if(aPropStates.empty())
2174 const OUString sParent;
2177 if (
GetAutoStylePool()->AddNamed(*pOldName, XmlStyleFamily::TABLE_ROW, sParent, aPropStates))
2181 rIndex =
pRowStyles->AddStyleName(*pOldName);
2199 uno::Reference<container::XEnumeration> xEnum( xEnumAccess->createEnumeration() );
2202 sal_Int32 nSkip = nIndex;
2205 (
void) xEnum->nextElement();
2208 aRet = xEnum->nextElement();
2210 catch (container::NoSuchElementException&)
2227 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2228 if (!xSpreadDoc.is())
2231 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
2241 ScSheetSaveData* pSheetData = comphelper::getUnoTunnelImplementation<ScModelObj>(xSpreadDoc)->GetSheetSaveData();
2242 if (pSheetData &&
pDoc)
2247 for (
SCTAB nTab=0; nTab<nTabCount; ++nTab)
2252 const std::vector<ScCellStyleEntry>& rCellEntries = pSheetData->
GetCellStyles();
2253 for (
const auto& rCellEntry : rCellEntries)
2256 sal_Int32 nTable = aPos.
Tab();
2260 uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2261 uno::Reference <beans::XPropertySet> xProperties(
2262 xTable->getCellByPosition( aPos.
Col(), aPos.
Row() ), uno::UNO_QUERY );
2269 const std::vector<ScCellStyleEntry>& rColumnEntries = pSheetData->
GetColumnStyles();
2270 for (
const auto& rColumnEntry : rColumnEntries)
2272 ScAddress aPos = rColumnEntry.maCellPos;
2273 sal_Int32 nTable = aPos.
Tab();
2277 uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2278 uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns());
2279 uno::Reference<beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex( aPos.
Col() ), uno::UNO_QUERY);
2281 sal_Int32 nIndex(-1);
2282 bool bIsVisible(
true);
2288 const std::vector<ScCellStyleEntry>& rRowEntries = pSheetData->
GetRowStyles();
2289 for (
const auto& rRowEntry : rRowEntries)
2292 sal_Int32 nTable = aPos.
Tab();
2296 uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2297 uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows());
2298 uno::Reference<beans::XPropertySet> xRowProperties(xTableRows->getByIndex( aPos.
Row() ), uno::UNO_QUERY);
2300 sal_Int32 nIndex(-1);
2306 const std::vector<ScCellStyleEntry>& rTableEntries = pSheetData->
GetTableStyles();
2307 for (
const auto& rTableEntry : rTableEntries)
2310 sal_Int32 nTable = aPos.
Tab();
2315 uno::Reference<beans::XPropertySet> xTableProperties(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2316 if (xTableProperties.is())
2319 OUString
sName( rTableEntry.maName );
2320 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TABLE_TABLE, OUString(), aPropStates);
2331 const std::vector<ScNoteStyleEntry>& rNoteEntries = pSheetData->
GetNoteStyles();
2332 for (
const auto& rNoteEntry : rNoteEntries)
2342 OSL_ENSURE( pNote,
"note not found" );
2347 uno::Reference<beans::XPropertySet> xShapeProperties( pDrawObj->
getUnoShape(), uno::UNO_QUERY );
2348 if (xShapeProperties.is())
2350 if ( !rNoteEntry.maStyleName.isEmpty() )
2352 std::vector<XMLPropertyState> aPropStates(xShapeMapper->Filter(xShapeProperties));
2353 OUString
sName( rNoteEntry.maStyleName );
2354 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::SD_GRAPHICS_ID, OUString(), aPropStates);
2357 if ( !rNoteEntry.maTextStyle.isEmpty() )
2359 std::vector<XMLPropertyState> aPropStates(
2361 OUString
sName( rNoteEntry.maTextStyle );
2362 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_PARAGRAPH, OUString(), aPropStates);
2374 const std::vector<ScTextStyleEntry>& rNoteParaEntries = pSheetData->
GetNoteParaStyles();
2375 for (
const auto& rNoteParaEntry : rNoteParaEntries)
2377 ScAddress aPos = rNoteParaEntry.maCellPos;
2383 OSL_ENSURE( pNote,
"note not found" );
2387 uno::Reference<container::XEnumerationAccess> xCellText(pDrawObj->
getUnoShape(), uno::UNO_QUERY);
2388 uno::Reference<beans::XPropertySet> xParaProp(
2389 lcl_GetEnumerated( xCellText, rNoteParaEntry.maSelection.nStartPara ), uno::UNO_QUERY );
2390 if ( xParaProp.is() )
2392 std::vector<XMLPropertyState> aPropStates(xParaPropMapper->Filter(xParaProp));
2393 OUString
sName( rNoteParaEntry.maName );
2394 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_PARAGRAPH, OUString(), aPropStates);
2405 const std::vector<ScTextStyleEntry>& rNoteTextEntries = pSheetData->
GetNoteTextStyles();
2406 for (
const auto& rNoteTextEntry : rNoteTextEntries)
2408 ScAddress aPos = rNoteTextEntry.maCellPos;
2414 OSL_ENSURE( pNote,
"note not found" );
2418 uno::Reference<text::XSimpleText> xCellText(pDrawObj->
getUnoShape(), uno::UNO_QUERY);
2419 uno::Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY);
2420 ScDrawTextCursor* pCursor = comphelper::getUnoTunnelImplementation<ScDrawTextCursor>( xCursorProp );
2425 std::vector<XMLPropertyState> aPropStates(xTextPropMapper->Filter(xCursorProp));
2426 OUString
sName( rNoteTextEntry.maName );
2427 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
2439 uno::Reference<beans::XPropertySet> xPrevCursorProp;
2440 const std::vector<ScTextStyleEntry>& rTextEntries = pSheetData->
GetTextStyles();
2441 for (
const auto& rTextEntry : rTextEntries)
2444 sal_Int32 nTable = aPos.
Tab();
2452 uno::Reference<beans::XPropertySet> xCursorProp;
2453 if (xPrevCursorProp && aPrevPos == aPos)
2454 xCursorProp = xPrevCursorProp;
2457 uno::Reference<table::XCellRange> xCellRange(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2458 uno::Reference<text::XSimpleText> xCellText(xCellRange->getCellByPosition(aPos.
Col(), aPos.
Row()), uno::UNO_QUERY);
2459 xCursorProp.set(xCellText->createTextCursor(), uno::UNO_QUERY);
2461 ScCellTextCursor* pCursor = comphelper::getUnoTunnelImplementation<ScCellTextCursor>( xCursorProp );
2466 std::vector<XMLPropertyState> aPropStates(xTextPropMapper->Filter(xCursorProp));
2467 OUString
sName( rTextEntry.maName );
2468 GetAutoStylePool()->AddNamed(sName, XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
2470 xPrevCursorProp = xCursorProp;
2479 SCTAB nTableCount(0);
2480 sal_Int32 nShapesCount(0);
2483 sal_Int32 nTableCount(xIndex->getCount());
2488 uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
2493 uno::Reference<beans::XPropertySet> xTableProperties(xTable, uno::UNO_QUERY);
2494 if (xTableProperties.is())
2497 if(!aPropStates.empty())
2500 GetAutoStylePool()->Add(sName, XmlStyleFamily::TABLE_TABLE, OUString(), aPropStates);
2506 uno::Reference<sheet::XUniqueCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY );
2507 if ( xCellFormatRanges.is() )
2509 uno::Reference<container::XIndexAccess> xFormatRangesIndex(xCellFormatRanges->getUniqueCellFormatRanges());
2510 if (xFormatRangesIndex.is())
2512 sal_Int32 nFormatRangesCount(xFormatRangesIndex->getCount());
2514 for (sal_Int32 nFormatRange = 0; nFormatRange < nFormatRangesCount; ++nFormatRange)
2516 uno::Reference< sheet::XSheetCellRanges> xCellRanges(xFormatRangesIndex->getByIndex(nFormatRange), uno::UNO_QUERY);
2517 if (xCellRanges.is())
2519 uno::Reference <beans::XPropertySet> xProperties (xCellRanges, uno::UNO_QUERY);
2520 if (xProperties.is())
2529 uno::Reference<table::XColumnRowRange> xColumnRowRange (xTable, uno::UNO_QUERY);
2530 if (xColumnRowRange.is() &&
pDoc)
2533 uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns());
2534 if (xTableColumns.is())
2538 table::CellRangeAddress aCellAddress(
GetEndAddress(xTable));
2539 if (aCellAddress.EndColumn > nColumns)
2546 sal_Int32 nColumn = 0;
2547 while (nColumn <= pDoc->MaxCol())
2549 sal_Int32 nIndex(-1);
2550 bool bIsVisible(
true);
2551 uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex(nColumn), uno::UNO_QUERY);
2552 if (xColumnProperties.is())
2555 pColumnStyles->AddFieldStyleName(nTable, nColumn, nIndex, bIsVisible);
2557 sal_Int32 nOld(nColumn);
2559 for (sal_Int32
i = nOld + 1;
i < nColumn; ++
i)
2562 if (aCellAddress.EndColumn > nColumns)
2564 bool bIsVisible(
true);
2565 sal_Int32 nIndex(
pColumnStyles->GetStyleNameIndex(nTable, nColumns, bIsVisible));
2566 for (sal_Int32
i = nColumns + 1;
i <= aCellAddress.EndColumn; ++
i)
2570 uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows());
2571 if (xTableRows.is())
2578 while (nRow <= pDoc->MaxRow())
2580 sal_Int32 nIndex = 0;
2581 uno::Reference <beans::XPropertySet> xRowProperties(xTableRows->getByIndex(nRow), uno::UNO_QUERY);
2582 if(xRowProperties.is())
2585 pRowStyles->AddFieldStyleName(nTable, nRow, nIndex);
2587 sal_Int32 nOld(nRow);
2589 if (nRow > nOld + 1)
2590 pRowStyles->AddFieldStyleName(nTable, nOld + 1, nIndex, nRow - 1);
2611 uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc(
GetModel(), uno::UNO_QUERY );
2612 if (!xSpreadDoc.is())
2615 uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY );
2678 pSharedData->AddNoteObj( xShape, pCaptData->maStart );
2682 OSL_ENSURE( pCaptData->maStart.Tab() ==
nCurrentTable,
"invalid table in object data" );
2695 pObject,
nCurrentTable, aPosition, aSourceRange, bRedLine );
2696 pSharedData->GetDetectiveObjContainer()->AddObject( eObjType, static_cast<SCTAB>(
nCurrentTable), aPosition, aSourceRange, bRedLine );
2701 const uno::Reference <sheet::XSpreadsheet>& xTable)
2704 sal_Int32 nRow(pCellAddress->StartRow);
2705 sal_Int32 nCol(pCellAddress->StartColumn);
2706 sal_Int32 nEndRow(pCellAddress->EndRow);
2707 sal_Int32 nEndCol(pCellAddress->EndColumn);
2708 bool bRowInc(nEndRow > nRow);
2709 while(!bReady && nRow <= nEndRow && nCol <= nEndCol)
2711 uno::Reference<sheet::XSheetCellRange> xSheetCellRange(xTable->getCellRangeByPosition(nCol, nRow, nCol, nRow), uno::UNO_QUERY);
2712 if (xSheetCellRange.is())
2714 uno::Reference<sheet::XSheetCellCursor> xCursor(xTable->createCursorByRange(xSheetCellRange));
2717 uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
2718 xCursor->collapseToMergedArea();
2719 table::CellRangeAddress aCellAddress2(xCellAddress->getRangeAddress());
2720 ScRange aScRange( aCellAddress2.StartColumn, aCellAddress2.StartRow, aCellAddress2.Sheet,
2721 aCellAddress2.EndColumn, aCellAddress2.EndRow, aCellAddress2.Sheet );
2723 if ((aScRange.aEnd.Row() > nRow ||
2724 aScRange.aEnd.Col() > nCol) &&
2725 aScRange.aStart.Row() == nRow &&
2726 aScRange.aStart.Col() == nCol)
2729 pSharedData->SetLastColumn(aScRange.aEnd.Tab(), aScRange.aEnd.Col());
2730 pSharedData->SetLastRow(aScRange.aEnd.Tab(), aScRange.aEnd.Row());
2744 OSL_ENSURE(!(!bReady && nEndRow > nRow && nEndCol > nCol),
"should not be possible");
2749 ScRange& aCellAddress,
bool& bIsFirst)
const
2757 aCellAddress = aMatrixRange;
2783 uno::Reference<container::XNamed> xName (xTable, uno::UNO_QUERY );
2788 OUString sOUTableName(xName->getName());
2792 uno::Reference<util::XProtectable> xProtectable (xTable, uno::UNO_QUERY);
2794 if (xProtectable.is() && xProtectable->isProtected())
2823 if (!aBuffer.isEmpty())
2851 OUString sPrintRanges;
2853 bool bHasColumnHeader;
2855 if( !sPrintRanges.isEmpty() )
2890 uno::Reference<document::XEventsSupplier> xSupplier(xTable, uno::UNO_QUERY);
2891 uno::Reference<container::XNameAccess> xEvents = xSupplier->getEvents();
2897 uno::Reference<drawing::XDrawPage> xDrawPage;
2898 if (
pSharedData->HasForm(nTable, xDrawPage) && xDrawPage.is())
2903 OSL_ENSURE( bRet,
"OFormLayerXMLExport::seekPage failed!" );
2911 pSharedData->SetLastColumn(nTable, aRange.EndColumn);
2917 if (bHasColumnHeader)
2926 ExportColumns(nTable, aColumnHeaderRange, bHasColumnHeader);
2927 bool bIsFirst(
true);
2928 sal_Int32 nEqualCells(0);
2979 if (pRangeName && !pRangeName->
empty())
2996 std::unique_ptr<SvXMLElementExport> pElem;
2997 if (!rStyleName.isEmpty())
3000 rExport.
AddAttribute(XML_NAMESPACE_TEXT, XML_STYLE_NAME, rStyleName);
3012 case text::textfield::Type::URL:
3019 rExport.
AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE,
"simple");
3021 if (!aTargetFrame.isEmpty())
3022 rExport.
AddAttribute(XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, aTargetFrame);
3035 OUStringBuffer
aBuf;
3036 sal_Int32 nVal = aDate.GetYear();
3039 nVal = aDate.GetMonth();
3044 nVal = aDate.GetDay();
3048 rExport.
AddAttribute(XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
"N2");
3049 rExport.
AddAttribute(XML_NAMESPACE_TEXT, XML_DATE_VALUE, aBuf.makeStringAndClear());
3057 case text::textfield::Type::DOCINFO_TITLE:
3085 void flushParagraph(
3089 std::vector<editeng::Section>::const_iterator it, std::vector<editeng::Section>::const_iterator
const & itEnd )
3095 for (; it != itEnd; ++it)
3101 std::vector<XMLPropertyState> aPropStates;
3103 OUString aStyleName = xStylePool->Find(XmlStyleFamily::TEXT_TEXT, OUString(), aPropStates);
3104 writeContent(rExport, aStyleName, aContent, pField);
3120 if (bIsFirstMatrixCell)
3127 bool bIsEmpty(
false);
3128 switch (aCell.
nType)
3130 case table::CellContentType_EMPTY :
3135 case table::CellContentType_VALUE :
3144 case table::CellContentType_TEXT :
3149 sCellString, sFormattedString);
3155 case table::CellContentType_FORMULA :
3161 if (!bIsMatrix || bIsFirstMatrixCell)
3170 sal_uInt16 nNamespacePrefix =
3182 if (pFormulaCell->
GetErrCode() != FormulaError::NONE)
3192 else if (pFormulaCell->
IsValue())
3264 bool bPrevCharWasSpace =
true;
3280 std::vector<OUString> aParaTexts;
3282 aParaTexts.reserve(nParaCount);
3283 for (sal_Int32
i = 0;
i < nParaCount; ++
i)
3284 aParaTexts.push_back(pText->
GetText(
i));
3287 std::vector<editeng::Section> aAttrs;
3289 std::vector<editeng::Section>::const_iterator itSec = aAttrs.begin(), itSecEnd = aAttrs.end();
3290 std::vector<editeng::Section>::const_iterator itPara = itSec;
3291 sal_Int32 nCurPara = 0;
3292 for (; itSec != itSecEnd; ++itSec)
3300 flushParagraph(*
this, aParaTexts[nCurPara], xMapper, xStylePool, rAttrMap, itPara, itSec);
3305 flushParagraph(*
this, aParaTexts[nCurPara], xMapper, xStylePool, rAttrMap, itPara, itSecEnd);
3314 const sal_Unicode* pEnd = p +
static_cast<size_t>(aResStr.getLength());
3316 for (; p != pEnd; ++p)
3326 aContent = OUString(pPara, p-pPara);
3338 aContent = OUString(pPara, pEnd-pPara);
3346 uno::Reference < beans::XPropertySet > xShapeProps ( xShape, uno::UNO_QUERY );
3347 bool bIsChart(
false );
3348 if (xShapeProps.is())
3350 sal_Int32 nZOrder = 0;
3351 if (xShapeProps->getPropertyValue(
"ZOrder") >>= nZOrder)
3355 uno::Reference< beans::XPropertySetInfo > xPropSetInfo = xShapeProps->getPropertySetInfo();
3356 OUString sPropCLSID (
"CLSID");
3357 if( xPropSetInfo->hasPropertyByName( sPropCLSID ) )
3360 if (xShapeProps->getPropertyValue( sPropCLSID ) >>= sCLSID)
3362 if ( sCLSID.equalsIgnoreAsciiCase(
GetChartExport()->getChartCLSID()) )
3368 OUString aChartName;
3369 xShapeProps->getPropertyValue(
"PersistName" ) >>= aChartName;
3377 if ( rRangeList.
is() )
3380 if ( !sRanges.isEmpty() )
3384 pAttrList->AddAttribute(
3393 if ( sRanges.isEmpty() )
3395 uno::Reference< frame::XModel > xChartModel;
3396 if( ( xShapeProps->getPropertyValue(
"Model" ) >>= xChartModel ) &&
3399 uno::Reference< chart2::XChartDocument > xChartDoc( xChartModel, uno::UNO_QUERY );
3400 uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartModel, uno::UNO_QUERY );
3401 if( xChartDoc.is() && xReceiver.is() &&
3402 ! xChartDoc->hasInternalDataProvider())
3406 uno::Sequence< OUString > aRepresentations(
3407 xReceiver->getUsedRangeRepresentations());
3409 if(aRepresentations.hasElements())
3414 uno::Reference< chart2::data::XRangeXMLConversion > xRangeConverter( xChartDoc->getDataProvider(), uno::UNO_QUERY );
3415 sRanges = lcl_RangeSequenceToString( aRepresentations, xRangeConverter );
3417 pAttrList->AddAttribute(
3433 uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY );
3437 catch (
const beans::UnknownPropertyException& )
3442 std::unique_ptr< SvXMLElementExport > pDrawA;
3444 if ( !sHlink.isEmpty() )
3481 aPoint.X = aCellRectFull.
Right();
3483 aPoint.X = aCellRectFull.
Left();
3484 aPoint.Y = aCellRectFull.
Top();
3486 for (
const auto& rShape : rMyCell.
aShapeList)
3488 if (rShape.xShape.is())
3493 bool bNeedsRestore =
false;
3496 std::unique_ptr<SdrObjGeoData> pGeoData;
3504 bool bIsShapeTransformed =
false;
3510 if (bIsShapeTransformed && pObjData)
3511 aSnapStartAddress = pObjData->
maStart;
3516 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3517 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
false );
3519 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3520 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
true );
3523 if (pObj && (
abs(nLeftDiff) > 1 ||
abs(nTopDiff) > 1))
3525 bNeedsRestore =
true;
3532 if (rShape.bResizeWithCell && pObjData && pObj)
3540 aSnapStartAddress.
Col(), aSnapStartAddress.
Row(), aSnapStartAddress.
Col(),
3541 aSnapStartAddress.
Row(), aSnapStartAddress.
Tab(),
false );
3543 aSnapEndAddress.
Col(), aSnapEndAddress.
Row(), aSnapEndAddress.
Col(),
3544 aSnapEndAddress.
Row(), aSnapEndAddress.
Tab(),
false );
3547 aRectFull.
SetLeft(aEndCellRect.
Right() - aSnapEndOffset.X());
3548 aRectFull.
SetRight(aStartCellRect.
Right() - aSnapStartOffset.X());
3552 aRectFull.
SetLeft(aStartCellRect.
Left() + aSnapStartOffset.X());
3553 aRectFull.
SetRight(aEndCellRect.
Left() + aSnapEndOffset.X());
3555 aRectFull.
SetTop(aStartCellRect.
Top() + aSnapStartOffset.Y());
3556 aRectFull.
SetBottom(aEndCellRect.
Top() + aSnapEndOffset.Y());
3561 bNeedsRestore =
true;
3563 if (!aScaleWidth.IsValid())
3566 if (!aScaleHeight.IsValid())
3573 if ( rShape.bResizeWithCell &&
3574 rShape.xShape->getShapeType() !=
"com.sun.star.drawing.CaptionShape" )
3576 OUString sEndAddress;
3579 OUStringBuffer sBuffer;
3581 sBuffer, rShape.nEndX);
3584 sBuffer, rShape.nEndY);
3595 if (pObj && bNegativePage
3596 && rShape.xShape->getShapeType() ==
"com.sun.star.drawing.MeasureShape")
3600 aPoint.X = aSnapRect.
Left() + aSnapRect.
Right() - aPoint.X;
3608 awt::Point aMatrixTranslate = rShape.xShape->getPosition();
3609 aPoint.X = aMatrixTranslate.X - pNRObjData->
maStartOffset.X();
3610 aPoint.Y = aMatrixTranslate.Y - pNRObjData->
maStartOffset.Y();
3616 if (bNeedsRestore && pObj && pGeoData)
3625 if (!pTableShapes || (*pTableShapes)[
nCurrentTable].empty())
3628 OSL_ENSURE(pTableShapes->size() >
static_cast<size_t>(
nCurrentTable),
"wrong Table");
3639 uno::Reference<beans::XPropertySet> xShapeProp(rxShape, uno::UNO_QUERY);
3640 awt::Rectangle aFrameRect;
3641 if (xShapeProp.is() && (xShapeProp->getPropertyValue(
"FrameRect") >>= aFrameRect))
3647 awt::Point aRefPoint;
3648 aRefPoint.X = 2 * aFrameRect.X + aFrameRect.Width - 1;
3677 OUStringBuffer sValue;
3679 static_cast<double>(rAreaLink.
nRefresh) / 86400 );
3696 uno::Reference<drawing::XShape> xCurrentShape( pNoteCaption->
getUnoShape(), uno::UNO_QUERY );
3697 if (xCurrentShape.get()!=xShape.get())
3700 const OUString& sAuthor(pNote->
GetAuthor());
3701 if (!sAuthor.isEmpty())
3709 const OUString& aDate(pNote->
GetDate());
3717 OUStringBuffer sBuf;
3755 uno::Reference<drawing::XShape> xShape( pNoteCaption->
getUnoShape(), uno::UNO_QUERY );
3770 sal_Int32 nObjCount(rObjVec.size());
3771 sal_Int32 nOpCount(rOpVec.size());
3772 if( !(nObjCount || nOpCount) )
3777 for(
const auto& rObj : rObjVec)
3788 if( rObj.bHasError )
3795 for(
const auto& rOp : rOpVec)
3808 if (nEqualCellCount > 0)
3810 sal_Int32 nTemp(nEqualCellCount + 1);
3811 OUString sOUEqualCellCount(OUString::number(nTemp));
3825 bool bIsEqual =
false;
3848 switch ( aCell1.
nType )
3850 case table::CellContentType_EMPTY :
3855 case table::CellContentType_VALUE :
3863 case table::CellContentType_TEXT :
3873 case table::CellContentType_FORMULA :
3893 uno::Reference<beans::XPropertySet> xPropertySet(xSpreadDoc, uno::UNO_QUERY);
3894 if (!xPropertySet.is())
3903 if (bUseWildcards && bUseRegularExpressions)
3904 bUseRegularExpressions =
false;
3907 sal_Int32 nIterationCount(100);
3909 double fIterationEpsilon = 0;
3911 util::Date aNullDate;
3913 if (!(bCalcAsShown || bIgnoreCase || !bLookUpLabels || !bMatchWholeCell || !bUseRegularExpressions ||
3915 bIsIterationEnabled || nIterationCount != 100 || !::rtl::math::approxEqual(fIterationEpsilon, 0.001) ||
3916 aNullDate.Day != 30 || aNullDate.Month != 12 || aNullDate.Year != 1899 || nYear2000 != 1930))
3923 if (!bMatchWholeCell)
3927 if (!bUseRegularExpressions)
3931 if (nYear2000 != 1930)
3937 if (aNullDate.Day != 30 || aNullDate.Month != 12 || aNullDate.Year != 1899)
3939 OUStringBuffer sDate;
3944 if (bIsIterationEnabled || nIterationCount != 100 || !::rtl::math::approxEqual(fIterationEpsilon, 0.001))
3946 if (bIsIterationEnabled)
3948 if (nIterationCount != 100)
3952 if (!::rtl::math::approxEqual(fIterationEpsilon, 0.001))
3954 OUStringBuffer sBuffer;
3966 uno::Reference <sheet::XSheetLinkable> xLinkable (
xCurrentTable, uno::UNO_QUERY);
3967 if (!(xLinkable.is() &&
GetModel().is()))
3970 sheet::SheetLinkMode nMode (xLinkable->getLinkMode());
3971 if (nMode == sheet::SheetLinkMode_NONE)
3974 OUString sLink (xLinkable->getLinkUrl());
3975 uno::Reference <beans::XPropertySet> xProps (
GetModel(), uno::UNO_QUERY);
3979 uno::Reference <container::XIndexAccess> xIndex(xProps->getPropertyValue(
SC_UNO_SHEETLINKS), uno::UNO_QUERY);
3983 sal_Int32
nCount(xIndex->getCount());
3988 uno::Reference <beans::XPropertySet> xLinkProps;
3989 for (sal_Int32
i = 0; (
i <
nCount) && !bFound; ++
i)
3991 xLinkProps.set(xIndex->getByIndex(
i), uno::UNO_QUERY);
3992 if (xLinkProps.is())
3996 bFound = sLink == sNewLink;
3999 if (!(bFound && xLinkProps.is()))
4003 OUString sFilterOptions;
4004 OUString sTableName (xLinkable->getLinkSheetName());
4005 sal_Int32 nRefresh(0);
4009 if (sLink.isEmpty())
4014 if (!sTableName.isEmpty())
4016 if (!sFilter.isEmpty())
4018 if (!sFilterOptions.isEmpty())
4020 if (nMode != sheet::SheetLinkMode_NORMAL)
4024 OUStringBuffer sBuffer;
4026 static_cast<double>(nRefresh) / 86400 );
4059 OUString sRangeListStr;
4062 if (!sComment.isEmpty())
4069 uno::Reference< beans::XPropertySet > xDocProp( xSpreadDoc, uno::UNO_QUERY );
4070 if( !xDocProp.is() )
return;
4073 uno::Reference< container::XIndexAccess > xColRangesIAccess(xDocProp->getPropertyValue(
SC_UNO_COLLABELRNG ), uno::UNO_QUERY);
4074 if( xColRangesIAccess.is() )
4075 nCount += xColRangesIAccess->getCount();
4077 uno::Reference< container::XIndexAccess > xRowRangesIAccess(xDocProp->getPropertyValue(
SC_UNO_ROWLABELRNG ), uno::UNO_QUERY);
4078 if( xRowRangesIAccess.is() )
4079 nCount += xRowRangesIAccess->getCount();
4091 if( !xRangesIAccess.is() )
return;
4093 sal_Int32
nCount(xRangesIAccess->getCount());
4094 for( sal_Int32 nIndex = 0; nIndex <
nCount; ++nIndex )
4096 uno::Reference< sheet::XLabelRange > xRange(xRangesIAccess->getByIndex( nIndex ), uno::UNO_QUERY);
4100 table::CellRangeAddress aCellRange( xRange->getLabelArea() );
4103 aCellRange = xRange->getDataArea();
4132 if (rDataSources.empty())
4136 for (
const auto& itr : rDataSources)
4153 for (
auto& itr : aDataTransformations)
4157 switch(aTransformationType)
4163 std::set<SCCOL> aColumns = aDeleteTransformation->
getColumns();
4165 for(
auto& col : aColumns)
4186 std::set<SCCOL> aColumns = aMergeTransformation->
getColumns();
4191 for(
auto& col : aColumns)
4202 std::shared_ptr<sc::SortTransformation> aSortTransformation = std::dynamic_pointer_cast<
sc::SortTransformation>(itr);
4203 ScSortParam aSortParam = aSortTransformation->getSortParam();
4221 std::shared_ptr<sc::TextTransformation> aTextTransformation = std::dynamic_pointer_cast<
sc::TextTransformation>(itr);
4225 switch ( aTextTransformType )
4241 std::set<SCCOL> aColumns = aTextTransformation->getColumns();
4245 for(
auto& col : aColumns)
4256 std::shared_ptr<sc::AggregateFunction> aAggregateFunction = std::dynamic_pointer_cast<
sc::AggregateFunction>(itr);
4257 std::set<SCCOL> aColumns = aAggregateFunction->
getColumns();
4261 switch (aAggregateType)
4279 for(
auto& col : aColumns)
4290 std::shared_ptr<sc::NumberTransformation> aNumberTransformation = std::dynamic_pointer_cast<
sc::NumberTransformation>(itr);
4294 switch ( aNumberTransformType )
4340 std::set<SCCOL> aColumns = aNumberTransformation->getColumn();
4341 for(
auto& col : aColumns)
4353 std::set<SCCOL> aColumns = aReplaceNullTransformation->
getColumn();
4358 for(
auto& col : aColumns)
4369 std::shared_ptr<sc::DateTimeTransformation> aDateTimeTransformation = std::dynamic_pointer_cast<
sc::DateTimeTransformation>(itr);
4373 switch ( aDateTimeTransformationType )