25 #include <string_view>
27 #include <com/sun/star/frame/XModel.hpp>
28 #include <com/sun/star/sheet/XAreaLinks.hpp>
29 #include <com/sun/star/sheet/XAreaLink.hpp>
30 #include <com/sun/star/sheet/TableValidationVisibility.hpp>
31 #include <com/sun/star/beans/XPropertySet.hpp>
37 #include <document.hxx>
39 #include <unonames.hxx>
42 #include <tokenarray.hxx>
43 #include <stlpool.hxx>
55 #include <oox/token/namespaces.hxx>
59 using namespace ::
oox;
61 using ::com::sun::star::uno::Reference;
62 using ::com::sun::star::uno::UNO_QUERY;
63 using ::com::sun::star::table::CellRangeAddress;
64 using ::com::sun::star::sheet::XAreaLinks;
65 using ::com::sun::star::sheet::XAreaLink;
72 struct XclExpHashEntry
75 sal_uInt32 mnSstIndex;
76 explicit XclExpHashEntry(
const XclExpString* pString, sal_uInt32 nSstIndex ) :
77 mpString( pString ), mnSstIndex( nSstIndex ) {}
81 struct XclExpHashEntrySWO
83 bool operator()(
const XclExpHashEntry& rLeft,
const XclExpHashEntry& rRight )
const
84 {
return *rLeft.mpString < *rRight.mpString; }
108 std::vector< XclExpHashVec >
125 OSL_ENSURE( xString,
"XclExpSstImpl::Insert - empty pointer not allowed" );
130 sal_uInt32 nSstIndex = 0;
133 sal_uInt16 nHash = xString->GetHash();
137 XclExpHashEntry aEntry( xString.get(),
mnSize );
138 XclExpHashVec::iterator aIt = ::std::lower_bound( rVec.begin(), rVec.end(), aEntry, XclExpHashEntrySWO() );
139 if( (aIt == rVec.end()) || (*aIt->mpString != *xString) )
143 rVec.insert( aIt, aEntry );
148 nSstIndex = aIt->mnSstIndex;
161 sal_uInt32 nBucket =
mnSize;
162 while( nBucket > 0x0100 )
165 sal_uInt16 nPerBucket =
llimit_cast< sal_uInt16 >( nBucket, 8 );
166 sal_uInt16 nBucketIndex = 0;
178 sal_uInt32 nStrmPos =
static_cast< sal_uInt32
>( rStrm.
GetSvStreamPos() );
187 if( ++nBucketIndex == nPerBucket )
211 "xl/sharedStrings.xml",
214 "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",
218 pSst->startElement( XML_sst,
220 XML_count, OString::number(
mnTotal),
221 XML_uniqueCount, OString::number(
mnSize) );
225 pSst->startElement(XML_si);
226 elem->WriteXml( rStrm );
227 pSst->endElement( XML_si );
230 pSst->endElement( XML_sst );
246 return mxImpl->Insert( xString );
278 ScfUInt32Vec::const_iterator aIt =
maBaseXFIds.begin();
280 for (
size_t i = 0, nRanges = rNCRanges.
size();
i < nRanges; ++
i, ++aIt )
282 const ScRange & rScRange = rNCRanges[
i ];
283 if( rScRange.
In( rPos ) )
296 size_t nFirstRange = 0;
297 size_t nRemainingRanges = aXclRanges.
size();
298 while( nRemainingRanges > 0 )
302 aXclRanges.
WriteSubList( rStrm, nFirstRange, nRangeCount );
304 nFirstRange += nRangeCount;
305 nRemainingRanges -= nRangeCount;
315 rWorksheet->startElement(XML_mergeCells, XML_count, OString::number(nCount));
316 for(
size_t i = 0;
i < nCount; ++
i )
319 rWorksheet->singleElement(XML_mergeCell, XML_ref,
322 rWorksheet->endElement( XML_mergeCells );
333 const OUString& rUrl = rUrlField.
GetURL();
337 bool bWithRepr = !rRepr.isEmpty();
344 aXclStrm << sal_uInt32( aDescr.
Len() + 1 );
346 aXclStrm << sal_uInt16( 0 );
353 if( eProtocol == INetProtocol::File || eProtocol == INetProtocol::Smb )
360 if( eProtocol == INetProtocol::Smb )
364 aFileName = aFileName.copy(4);
365 aFileName = aFileName.replace(
'/',
'\\');
377 << sal_uInt32( aAsciiLink.getLength() + 1 );
378 aXclStrm.
Write( aAsciiLink.getStr(), aAsciiLink.getLength() );
380 << sal_uInt32( 0xDEADFFFF );
384 << sal_uInt16( 0x0003 );
394 for(
int i = 0;
i < nLevel; ++
i )
404 else if( eProtocol != INetProtocol::NotValid )
408 << sal_uInt32( aUrl.GetBufferSize() + 2 );
409 aUrl.WriteBuffer( aXclStrm );
410 aXclStrm << sal_uInt16( 0 );
418 else if( !rUrl.isEmpty() && rUrl[0] ==
'#' )
420 OUString aTextMark( rUrl.copy( 1 ) );
422 sal_Int32 nSepPos = aTextMark.lastIndexOf(
'!' );
423 sal_Int32 nPointPos = aTextMark.lastIndexOf(
'.' );
425 if(nSepPos < nPointPos)
428 aTextMark = aTextMark.replaceAt( nSepPos, 1,
"!" );
433 OUString aSheetName( aTextMark.copy(0, nSepPos));
435 if ( aSheetName.indexOf(
' ') != -1 && aSheetName[0] !=
'\'')
437 aTextMark =
"'" + aTextMark.replaceAt(nSepPos, 0,
"'");
450 aXclStrm << sal_uInt32(
mxTextMark->Len() + 1 );
452 aXclStrm << sal_uInt16( 0 );
457 if (!location.isEmpty() &&
msTarget.endsWith(OUString(
"#" + location)))
469 sal_uInt16& rnLevel,
bool& rbRel,
const OUString& rUrl,
const XclExpRoot& rRoot,
bool bEncoded )
480 OUString aTmpName( aDosName );
491 else if (aDosName.startsWith(
"./"))
493 aDosName = aDosName.copy(2);
497 while (aDosName.startsWith(
"../"))
499 aDosName = aDosName.copy(3);
509 sal_uInt16 nXclCol =
static_cast< sal_uInt16
>(
maScPos.
Col() );
510 sal_uInt16 nXclRow =
static_cast< sal_uInt16
>(
maScPos.
Row() );
511 rStrm << nXclRow << nXclRow << nXclCol << nXclCol;
530 std::optional<OString> sTextMark;
536 XML_location, sTextMark,
563 for (
size_t i = 0, nPairs = xLabelRangesRef->
size();
i < nPairs; ++
i )
578 if( !aRowXclRanges.
empty() || !aColXclRanges.
empty() )
581 rStrm << aRowXclRanges << aColXclRanges;
624 mrFormatEntry( rFormatEntry ),
631 mbHeightUsed( false ),
632 mbWeightUsed( false ),
633 mbColorUsed( false ),
634 mbUnderlUsed( false ),
635 mbItalicUsed( false ),
636 mbStrikeUsed( false ),
637 mbBorderUsed( false ),
650 const SfxItemSet& rItemSet = pStyleSheet->GetItemSet();
717 OSL_FAIL(
"XclExpCF::WriteBody - unknown condition type" );
743 sal_uInt16 nFmlaSize1 = mxTokArr1 ? mxTokArr1->GetSize() : 0;
745 rStrm << nFmlaSize1 << nFmlaSize2;
761 rStrm << nFlags << sal_uInt16( 0 );
768 sal_uInt32 nStyle = 0;
793 rStrm << sal_uInt16( 1 );
798 sal_uInt16 nLineStyle = 0;
799 sal_uInt32 nLineColor = 0;
802 rStrm << nLineStyle << nLineColor << sal_uInt16( 0 );
807 sal_uInt16 nPattern = 0, nColor = 0;
810 rStrm << nPattern << nColor;
816 rStrm << sal_uInt32( 0 ) << sal_uInt16( 0 );
822 mxTokArr1->WriteArray( rStrm );
831 const char *pRet =
nullptr;
841 pRet =
"greaterThan";
844 pRet =
"lessThanOrEqual";
847 pRet =
"greaterThanOrEqual";
873 pRet =
"containsText";
876 pRet =
"notContains";
902 return "aboveAverage";
904 return "uniqueValues";
906 return "duplicateValues";
908 return "containsErrors";
910 return "notContainsErrors";
916 return "containsText";
918 return "notContainsText";
958 if (IsTopBottomRule(eMode))
960 else if (IsTextRule(eMode))
999 OString aPos = aBuffer.makeStringAndClear();
1003 return OString(
"ISERROR(" + aPos +
")") ;
1005 return OString(
"NOT(ISERROR(" + aPos +
"))") ;
1007 return OString(
"LEFT(" + aPos +
",LEN(\"" + rText +
"\"))=\"" + rText +
"\"");
1009 return OString(
"RIGHT(" + aPos +
",LEN(\"" + rText +
"\"))=\"" + rText +
"\"");
1011 return OString(OString::Concat(
"NOT(ISERROR(SEARCH(\"") + rText +
"\"," + aPos +
")))");
1013 return OString(OString::Concat(
"ISERROR(SEARCH(\"") + rText +
"\"," + aPos +
"))");
1025 bool bFmla2 =
false;
1035 OUString aRank(
"0");
1036 if(IsTopBottomRule(eOperation))
1043 if(IsTextRule(eOperation))
1049 if(pTokenArray->GetLen())
1050 aText = pTokenArray->FirstToken()->GetString().getString().toUtf8();
1054 rWorksheet->startElement( XML_cfRule,
1056 XML_priority, OString::number(
mnPriority + 1),
1058 XML_aboveAverage, ToPsz10(bAboveAverage),
1059 XML_equalAverage, ToPsz10(bEqualAverage),
1060 XML_bottom, ToPsz10(bBottom),
1061 XML_percent, ToPsz10(bPercent),
1066 if (RequiresFixedFormula(eOperation))
1068 rWorksheet->startElement(XML_formula);
1069 OString aFormula = GetFixedFormula(eOperation,
maOrigin, aText);
1070 rWorksheet->writeEscaped(aFormula.getStr());
1071 rWorksheet->endElement( XML_formula );
1073 else if(RequiresFormula(eOperation))
1075 rWorksheet->startElement(XML_formula);
1078 pTokenArray.get()));
1079 rWorksheet->endElement( XML_formula );
1082 rWorksheet->startElement(XML_formula);
1085 pTokenArray2.get()));
1086 rWorksheet->endElement( XML_formula );
1090 rWorksheet->endElement( XML_cfRule );
1096 mxImpl( new
XclExpCFImpl( rRoot, rFormatEntry, nPriority, aOrigin ) )
1106 mxImpl->WriteBody( rStrm );
1111 mxImpl->SaveXml( rStrm );
1117 mrFormatEntry(rFormatEntry),
1168 rWorksheet->startElement( XML_cfRule,
1169 XML_type,
"timePeriod",
1170 XML_priority, OString::number(
mnPriority + 1),
1171 XML_timePeriod, sTimePeriod,
1173 rWorksheet->endElement( XML_cfRule);
1205 return "percentile";
1231 rWorksheet->startElement( XML_cfvo,
1235 rWorksheet->endElement( XML_cfvo );
1255 rWorksheet->endElement( XML_color );
1260 OString createHexStringFromDigit(
sal_uInt8 nDigit)
1262 OString aString = OString::number( nDigit, 16 );
1263 if(aString.getLength() == 1)
1264 aString += OString::number(0);
1268 OString createGuidStringFromInt(
sal_uInt8 nGuid[16])
1270 OStringBuffer aBuffer;
1271 aBuffer.append(
'{');
1272 for(
size_t i = 0;
i < 16; ++
i)
1274 aBuffer.append(createHexStringFromDigit(nGuid[i]));
1275 if(i == 3|| i == 5 || i == 7 || i == 9 )
1276 aBuffer.append(
'-');
1278 aBuffer.append(
'}');
1279 OString aString = aBuffer.makeStringAndClear();
1280 return aString.toAsciiUpperCase();
1286 rtl_createUuid(nGuid,
nullptr,
true);
1287 return createGuidStringFromInt(nGuid);
1301 std::vector<XclExpExtCondFormatData> aExtEntries;
1314 aExtEntry.
pEntry = &rFormat;
1315 aExtEntries.push_back(aExtEntry);
1325 aExtEntry.
pEntry = &rFormat;
1326 aExtEntries.push_back(aExtEntry);
1334 bool bNeedsExt =
false;
1357 aExtEntry.
pEntry = &rIconSet;
1358 aExtEntries.push_back(aExtEntry);
1368 if(!aExtEntries.empty() && xExtLst)
1411 OSL_ENSURE( !
maCFList.
IsEmpty(),
"XclExpCondfmt::WriteBody - no CF records to write" );
1412 OSL_ENSURE( !
maXclRanges.
empty(),
"XclExpCondfmt::WriteBody - no cell ranges found" );
1426 rWorksheet->startElement( XML_conditionalFormatting,
1433 rWorksheet->endElement( XML_conditionalFormatting );
1443 for(
const auto& rxColorScaleEntry : rFormat)
1458 rWorksheet->startElement( XML_cfRule,
1459 XML_type,
"colorScale",
1460 XML_priority, OString::number(
mnPriority + 1) );
1462 rWorksheet->startElement(XML_colorScale);
1467 rWorksheet->endElement( XML_colorScale );
1469 rWorksheet->endElement( XML_cfRule );
1475 mrFormat( rFormat ),
1494 rWorksheet->startElement( XML_cfRule,
1495 XML_type,
"dataBar",
1496 XML_priority, OString::number(
mnPriority + 1) );
1498 rWorksheet->startElement( XML_dataBar,
1505 mpCol->SaveXml(rStrm);
1507 rWorksheet->endElement( XML_dataBar );
1510 rWorksheet->startElement(XML_extLst);
1511 rWorksheet->startElement(XML_ext,
1513 XML_uri,
"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}");
1515 rWorksheet->startElementNS( XML_x14, XML_id );
1516 rWorksheet->write(
maGUID);
1517 rWorksheet->endElementNS( XML_x14, XML_id );
1519 rWorksheet->endElement( XML_ext );
1520 rWorksheet->endElement( XML_extLst );
1522 rWorksheet->endElement( XML_cfRule );
1528 mrFormat( rFormat ),
1533 for (
auto const& itr : rFormat)
1546 rWorksheet->startElement( XML_cfRule,
1547 XML_type,
"iconSet",
1548 XML_priority, OString::number(
mnPriority + 1) );
1551 rWorksheet->startElement( XML_iconSet,
1552 XML_iconSet, pIconSetName,
1558 rWorksheet->endElement( XML_iconSet );
1559 rWorksheet->endElement( XML_cfRule );
1568 for(
const auto& rxCondFmt : *pCondFmtList)
1571 if( xCondfmtRec->IsValidForXml() )
1594 sal_uInt16 nFmlaSize = pXclTokArr ? pXclTokArr->
GetSize() : 0;
1595 rStrm << nFmlaSize << sal_uInt16( 0 );
1604 rStrm << static_cast< sal_uInt16 >( rString.
GetSize() + 1 )
1610 const char* lcl_GetValidationType( sal_uInt32 nFlags )
1626 const char* lcl_GetOperatorType( sal_uInt32 nFlags )
1642 const char* lcl_GetErrorType( sal_uInt32 nFlags )
1653 void lcl_SetValidationText(
const OUString& rText,
XclExpString& rValidationText)
1655 if ( !rText.isEmpty() )
1658 if ( rText.getLength() > 255 )
1660 OUStringBuffer
aBuf( rText );
1665 rValidationText.
Assign( rText );
1668 rValidationText.
Assign(
'\0' );
1677 mnScHandle( nScHandle )
1682 OUString aTitle, aText;
1683 bool bShowPrompt = pValData->GetInput( aTitle, aText );
1689 bool bShowError = pValData->GetErrMsg( aTitle, aText, eScErrorStyle );
1694 switch( pValData->GetDataMode() )
1704 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown mode" );
1707 switch( pValData->GetOperation() )
1718 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown condition" );
1720 switch( eScErrorStyle )
1730 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown error style" );
1741 std::unique_ptr< ScTokenArray > xScTokArr = pValData->CreateFlatCopiedTokenArray( 0 );
1750 OUStringBuffer sListBuf;
1751 OUStringBuffer sFormulaBuf;
1752 sFormulaBuf.append(
'"' );
1757 if (!aString.isEmpty())
1759 sal_Int32 nStringIx = 0;
1762 const OUString aToken( aString.getToken( 0,
'\n', nStringIx ) );
1763 if (aToken.indexOf(
",") != -1)
1765 sListBuf.append(
'"');
1766 sListBuf.append(aToken);
1767 sListBuf.append(
'"');
1771 sListBuf.append(aToken);
1773 sFormulaBuf.append( aToken );
1777 sFormulaBuf.append(
',' );
1778 sListBuf.append(
',' );
1786 sal_uInt32 nLen = sFormulaBuf.getLength();
1790 if( sFormulaBuf[nLen - 1] ==
',' )
1792 sFormulaBuf.truncate(nLen);
1795 sFormulaBuf.append(
'"' );
1796 msFormula1 = sFormulaBuf.makeStringAndClear();
1798 msList = sListBuf.makeStringAndClear();
1800 sListBuf.remove(0, sListBuf.getLength());
1832 xScTokArr = pValData->CreateFlatCopiedTokenArray( 1 );
1844 OSL_FAIL(
"XclExpDV::XclExpDV - missing core data" );
1872 lclWriteDvFormula( rStrm,
mxTokArr1.get() );
1873 lclWriteDvFormula( rStrm,
mxTokArr2.get() );
1881 rWorksheet->startElement( XML_dataValidation,
1884 XML_errorStyle, lcl_GetErrorType(
mnFlags),
1887 XML_operator, lcl_GetOperatorType(
mnFlags ),
1895 XML_type, lcl_GetValidationType(
mnFlags) );
1898 rWorksheet->startElement(
FSNS(XML_mc, XML_AlternateContent),
1901 rWorksheet->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"x12ac");
1902 rWorksheet->startElement(
FSNS(XML_x12ac, XML_list));
1903 rWorksheet->writeEscaped(
msList);
1904 rWorksheet->endElement(
FSNS(XML_x12ac, XML_list));
1905 rWorksheet->endElement(
FSNS(XML_mc, XML_Choice));
1906 rWorksheet->startElement(
FSNS(XML_mc, XML_Fallback));
1907 rWorksheet->startElement(XML_formula1);
1909 rWorksheet->endElement(XML_formula1);
1910 rWorksheet->endElement(
FSNS(XML_mc, XML_Fallback));
1911 rWorksheet->endElement(
FSNS(XML_mc, XML_AlternateContent));
1915 rWorksheet->startElement(XML_formula1);
1917 rWorksheet->endElement( XML_formula1 );
1921 rWorksheet->startElement(XML_formula2);
1923 rWorksheet->endElement( XML_formula2 );
1925 rWorksheet->endElement( XML_dataValidation );
1955 if( !xDVRec->Finalize() )
1973 rWorksheet->startElement( XML_dataValidations,
1980 rWorksheet->endElement( XML_dataValidations );
1990 size_t nCurrPos = 0;
1993 size_t nFirstPos = 0;
1996 sal_uLong nCurrScHandle = ::std::numeric_limits< sal_uLong >::max();
1997 while( (nFirstPos <= nLastPos) && bLoop )
1999 nCurrPos = (nFirstPos + nLastPos) / 2;
2002 if( nCurrScHandle == nScHandle )
2004 else if( nCurrScHandle < nScHandle )
2005 nFirstPos = nCurrPos + 1;
2007 nLastPos = nCurrPos - 1;
2011 if( nCurrScHandle == nScHandle )
2013 else if( nCurrScHandle < nScHandle )
2026 rStrm << EXC_DVAL_NOOBJ << static_cast< sal_uInt32 >(
maDVList.
GetSize() );
2032 const OUString& rRangeName,
2033 const OUString& rUrl,
2034 const OUString& rSource,
2035 sal_Int32 nRefrSecs ) :
2036 maDestRange( rRangeName ),
2039 mnRefresh(
ulimit_cast< sal_Int16 >( (nRefrSecs + 59) / 60 ) ),
2040 mbEntireDoc( false )
2043 OUString aNewTables;
2044 OUString aAppendTable;
2045 bool bExitLoop =
false;
2046 if (!rSource.isEmpty())
2048 sal_Int32 nStringIx = 0;
2051 OUString aToken( rSource.getToken( 0,
';', nStringIx ) );
2057 while (nStringIx>0 && !bExitLoop);
2062 if( !aNewTables.isEmpty() )
2081 << sal_uInt16( 0x0010 )
2082 << sal_uInt16( 0x0012 )
2083 << sal_uInt32( 0x00000000 )
2094 << sal_uInt16( 0x0000 )
2095 << sal_uInt16( 0x0001 );
2108 rStrm << sal_uInt16( 0x0003 )
2109 << sal_uInt32( 0x00000000 )
2110 << sal_uInt16( 0x0010 )
2118 << sal_uInt16( 0x0000 )
2119 << sal_uInt16( 0x0004 )
2120 << sal_uInt16( 0x0000 )
2126 << sal_uInt16( 0x0000 );
2134 << sal_uInt16( 0x0000 )
2144 if( !pShell )
return;
2146 if( !aModelProp.Is() )
return;
2148 Reference< XAreaLinks > xAreaLinks;
2150 if( !xAreaLinks.is() )
return;
2154 Reference< XAreaLink > xAreaLink( xAreaLinks->getByIndex(
nIndex ), UNO_QUERY );
2155 if( xAreaLink.is() )
2157 CellRangeAddress aDestRange( xAreaLink->getDestArea() );
2158 if( static_cast< SCTAB >( aDestRange.Sheet ) == nScTab )
2167 sal_Int32 nRefresh = 0;
2175 OUString aWebQueryUrl( aUrlObj.
getFSysPath( FSysStyle::Dos ) );
2176 if( aWebQueryUrl.isEmpty() )
2177 aWebQueryUrl = aAbsDoc;
2180 OUString aRangeName;
2185 aRangeName = pRangeData->GetName();
2199 if( !aRangeName.isEmpty() )
2201 aRangeName, aWebQueryUrl, xAreaLink->getSourceArea(), nRefresh ) );
const sal_uInt16 EXC_ID_WQSETT
const sal_uInt32 EXC_DV_COND_NOTBETWEEN
void ConvertRangeList(XclRangeList &rXclRanges, const ScRangeList &rScRanges, bool bWarn)
Converts the passed Calc cell range list to an Excel cell range list.
void FillFromVclFont(const vcl::Font &rFont)
Fills all members (except color and escapement) from the passed font.
XclTokenArrayRef mxTokArr2
Formula for first condition.
XclExpCfvoList maCfvoList
This class stores an unformatted or formatted string for Excel export.
const sal_uInt16 EXC_WQSETT_SPECTABLES
All tables or entire document.
const sal_uInt32 EXC_DV_MODE_DECIMAL
bool mbHeightUsed
true = Any font attribute used.
virtual void Save(XclExpStream &rStrm) override
Writes the complete record list.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpWebQuery(const OUString &rRangeName, const OUString &rUrl, const OUString &rSource, sal_Int32 nRefrSecs)
Constructs a web query record container with settings from Calc.
std::size_t Write(const void *pData, std::size_t nBytes)
Writes nBytes bytes from memory.
static OString ToOString(const Color &rColor)
const sal_uInt16 EXC_ID_CONDFMT
const sal_uInt16 EXC_ID_LABELRANGES
sal_Int16 mnRefresh
List of source range names.
XclExpRecordList< XclExpRecord > maCFList
rtl_TextEncoding GetTextEncoding() const
Returns the text encoding to import/export byte strings.
const sal_uInt8 EXC_CF_CMP_LESS
const sal_uInt32 EXC_DV_ERROR_STOP
bool mbBorderUsed
true = Font strikeout used.
const sal_uInt32 EXC_DV_COND_EQGREATER
const sal_uInt32 EXC_DV_COND_GREATER
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the DV record.
XclExpDV(const XclExpRoot &rRoot, sal_uLong nScHandle)
bool mbFontUsed
Priority of this entry; needed for oox export.
ScRangeName & GetNamedRanges() const
Returns the defined names container of the Calc document.
sal_uInt8 mnOperator
Type of the condition (cell/formula).
const XclExpRoot & GetRoot() const
Returns the filter root data.
XclExpStringRef mxQryTables
Source document URL.
constexpr TypedWhichId< SvxBoxItem > ATTR_BORDER(150)
SvStream & WriteUInt16(sal_uInt16 nUInt16)
This class is used to export Excel record streams.
static OUString BuildFileName(sal_uInt16 &rnLevel, bool &rbRel, const OUString &rUrl, const XclExpRoot &rRoot, bool bEncoded)
Builds file name from the passed file URL.
virtual void SaveXml(XclExpXmlStream &rStrm) override
void WriteBuffer(XclExpStream &rStrm) const
Writes the raw character buffer.
const sal_uInt16 EXC_ID_PQRY
const sal_uInt32 EXC_HLINK_BODY
sal_uInt16 GetRawRecPos() const
Returns the position inside of current record (starts by 0 in every CONTINUE).
virtual ~XclExpColScaleCol() override
const sal_uInt16 EXC_ID_EXTSST
void AppendRecord(RecType *pRec)
Appends a record to the list.
const sal_uInt8 EXC_CF_TYPE_NONE
static OUString ToOUString(const char *s)
void Format(OUString &, ScRefFlags nFlags, const ScDocument &, formula::FormulaGrammar::AddressConvention eConv=formula::FormulaGrammar::CONV_OOO, sal_Unicode cDelimiter=0, bool bFullAddressNotation=false) const
OUString getBase(sal_Int32 nIndex=LAST_SEGMENT, bool bIgnoreFinalSlash=true, DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
sal_uInt32 mnFlags
Buffer stream with variable data.
XclExpDVRef mxLastFoundDV
List of DV records.
constexpr TypedWhichId< SvxCrossedOutItem > ATTR_FONT_CROSSEDOUT(106)
const sal_uInt32 EXC_HLINK_ABS
Contains file link or URL.
XclExpString maUrl
Destination range.
const sal_uInt8 EXC_CF_CMP_EQUAL
This struct helps reading and writing Excel fonts.
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, bool bStyle)
Fills the area attributes from the passed item set.
const sal_uInt32 EXC_DV_MODE_TIME
bool mbStrikeUsed
true = Font posture used.
const OUString & GetStyle() const
XclExpFormulaCompiler & GetFormulaCompiler() const
Returns the formula compiler to produce formula token arrays.
void SetRecSize(std::size_t nRecSize)
Sets a new record size prediction.
static bool GetStringList(OUString &rStringList, const ScTokenArray &rScTokArr, sal_Unicode cSep)
Parses the passed formula and tries to find a string token list, i.e.
XclExpHyperlink(const XclExpRoot &rRoot, const SvxURLField &rUrlField, const ScAddress &rScPos)
Constructs the HLINK record from a URL text field.
sal_uInt32 Insert(XclExpStringRef xString)
Inserts the passed string, if not already inserted, and returns the unique SST index.
sal_uInt16 mnHeight
Font color.
const sal_uInt8 EXC_CF_CMP_BETWEEN
sal_uInt64 Seek(sal_uInt64 nPos)
condformat::ScCondFormatDateType GetDateType() const
const sal_uInt32 EXC_DV_SHOWERROR
bool mbEntireDoc
Refresh time in minutes.
bool IsValidForBinary() const
Returns true, if this conditional format contains at least one cell range and CF record.
XclFontData maFontData
Top left cell of the combined range.
bool mbColorUsed
true = Font weight used.
Represents a CF record that contains one condition of a conditional format.
const sal_uInt32 EXC_DV_STRINGLIST
static OUString GetRelURL(OUString const &rTheBaseURIRef, OUString const &rTheAbsURIRef, EncodeMechanism eEncodeMechanism=EncodeMechanism::WasEncoded, DecodeMechanism eDecodeMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
sal_uInt16 GetSize() const
Returns the size of the token array in bytes.
const sal_uInt32 EXC_DV_COND_NOTEQUAL
const ScColorScaleEntry & mrEntry
css::uno::Reference< css::frame::XModel > GetModel() const
const sal_uInt8 EXC_CF_CMP_LESS_EQUAL
sal_uLong mnScHandle
Miscellaneous flags.
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
const sal_uInt32 EXC_DV_COND_LESS
const sal_uInt32 EXC_DV_COND_EQLESS
virtual ~XclExpDval() override
const sal_uInt32 EXC_CF_ALLDEFAULT
Any area attribute modified?
XclExpStringRef mxString1
The error text.
ScConditionMode GetOperation() const
const sal_uInt8 EXC_CF_CMP_NONE
Extends the XclCellArea struct for export.
const sal_uInt32 EXC_DV_COND_BETWEEN
const sal_uInt16 EXC_PQRYTYPE_WEBQUERY
Source type: ODBC.
const sal_uInt16 EXC_ID_DV
Base class for ext entries.
SvStreamPtr mxVarData
Cell representation text.
bool mbItalicUsed
true = Font underline type used.
XclExpString maErrorTitle
The prompt text.
const ScTokenArray * GetFormula() const
const sal_uInt32 EXC_DV_MODE_DATE
virtual void SaveXml(XclExpXmlStream &rStrm) override
void InsertCellRange(const ScRange &rRange, sal_uLong nScHandle)
Inserts the cell range into the range list of the DV record with the specified handle.
Access to global data from other classes.
const sal_uInt32 EXC_DV_MODE_CUSTOM
OUString getNamespaceURL(sal_Int32 nNSID) const
void SaveXml(XclExpXmlStream &rStrm)
XclExpColScaleCol(const XclExpRoot &rRoot, const Color &rColor)
void SaveXml(XclExpXmlStream &rStrm)
sal_uInt16 InsertUniqueName(const OUString &rName, const XclTokenArrayRef &xTokArr, SCTAB nScTab)
Inserts a new defined name.
const sal_uInt16 EXC_ID_MERGEDCELLS
virtual void SaveXml(XclExpXmlStream &rStrm) override
const sal_uInt8 EXC_CF_TYPE_CELL
void WriteArray(XclExpStream &rStrm) const
Writes the tokens of the token array (without size field).
OUString msFormula2
Formula for second condition.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the HLINK record.
ScColorScaleEntryType GetType() const
const sal_uInt16 EXC_ID_WQTABLES
void PushStream(sax_fastparser::FSHelperPtr const &aStream)
void push_back(const ScRange &rRange)
const sal_uInt16 EXC_FONTESC_NONE
SvStream & WriteUInt32(sal_uInt32 nUInt32)
const ScCondFormatEntry & mrFormatEntry
const sal_uInt32 EXC_CF_BLOCK_AREA
Border block present?
sal_uInt32 InsertColor(const Color &rColor, XclExpColorType eType, sal_uInt16 nAutoDefault=0)
Inserts the color into the list and updates weighting.
virtual void SaveXml(XclExpXmlStream &rStrm) override
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
XclExpDataBar(const XclExpRoot &rRoot, const ScDataBarFormat &rFormat, sal_Int32 nPriority, const OString &rGUID)
bool mbItalic
Underline style.
sax_fastparser::FSHelperPtr & GetCurrentStream()
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpCfvo(const XclExpRoot &rRoot, const ScColorScaleEntry &rFormatEntry, const ScAddress &rPos, bool bFirst=true)
OUString getRelationship(Relationship eRelationship)
XclExpIconSet(const XclExpRoot &rRoot, const ScIconSetFormat &rFormat, sal_Int32 nPriority)
XclExpDxfs & GetDxfs() const
Returns the differential formatting list.
virtual void SaveXml(XclExpXmlStream &rStrm) override
#define SC_UNONAME_FILTER
void SetSliceSize(sal_uInt16 nSize)
Sets data slice length.
constexpr TypedWhichId< SvxUnderlineItem > ATTR_FONT_UNDERLINE(104)
const sal_uInt16 EXC_PQRY_WEBQUERY
ODBC connection.
sal_uInt32 mnFlags
OOXML Formula for second condition.
virtual ~XclExpSst() override
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
ScAddress maOrigin
Calc conditional format entry.
void Save(XclExpStream &rStrm)
Writes the complete SST and EXTSST records.
const sal_uInt32 EXC_CF_AREA_ALL
Background color modified?
bool mbWeightUsed
true = Font height used.
ScAddress GetValidSrcPos() const
Return a position that's adjusted to allow textual representation of expressions if possible...
std::vector< XclExpStringRef > maStringVector
const sal_uInt32 EXC_CF_FONT_STRIKEOUT
Font posture or weight modified?
sal_uInt32 mnFontColorId
Formula for second condition.
const sal_uInt16 EXC_ID_DVAL
Font escapement type modified?
const sal_uInt32 EXC_DV_MODE_LIST
const sal_uInt32 EXC_CF_BLOCK_BORDER
Alignment block present?
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the DVAL record.
::std::vector< XclExpHashEntry > XclExpHashVec
static SC_DLLPUBLIC OUString GetAbsDocName(const OUString &rFileName, const SfxObjectShell *pShell)
OUString m_Repr
Position of the hyperlink.
virtual void SaveXml(XclExpXmlStream &rStrm) override
constexpr TypedWhichId< SvxPostureItem > ATTR_FONT_POSTURE(103)
const sal_uInt32 EXC_CF_FONT_STYLE
NumberFormat String or Id?
XclExpCfvoList maCfvoList
bool IsValidForXml() const
SC_DLLPUBLIC const ScRangeData * findByRange(const ScRange &rRange) const
MS Excel 5.0, MS Excel 7.0 (95)
OUString getFSysPath(FSysStyle eStyle, sal_Unicode *pDelimiter=nullptr) const
bool mbUnderlUsed
true = Font color used.
Extends the XclCellBorder struct for export.
static void GetFont(vcl::Font &rFont, const SfxItemSet &rItemSet, ScAutoFontColorMode eAutoMode, const OutputDevice *pOutDev=nullptr, const Fraction *pScale=nullptr, const SfxItemSet *pCondSet=nullptr, SvtScriptType nScript=SvtScriptType::NONE, const Color *pBackConfigColor=nullptr, const Color *pTextConfigColor=nullptr)
Static helper function to fill a font object from the passed item set.
const sal_uInt8 EXC_CF_CMP_GREATER_EQUAL
void Assign(const OUString &rString, XclStrFlags nFlags=XclStrFlags::NONE, sal_uInt16 nMaxLen=EXC_STR_MAXLEN)
Assigns an unformatted string, converts this object to a BIFF8 Unicode string.
Represents a CONDFMT record that contains all conditions of a conditional format. ...
XclOutput GetOutput() const
Returns the current output format of the importer/exporter.
sal_uInt8 mnUnderline
Windows character set.
XclExpAddressConverter & GetAddressConverter() const
Returns the address converter.
OUString msFormula1
Formula for first condition.
sal_uInt64 GetSvStreamPos() const
Returns the absolute position of the system stream.
sal_uInt16 GetColorIndex(sal_uInt32 nColorId) const
Returns the Excel palette index of the color with passed color ID.
const sal_uInt16 EXC_PQRY_TABLES
Web query.
virtual void Save(XclExpStream &rStrm) override
Writes the CONDFMT record with following CF records, if there is valid data.
OUStringBuffer & truncateToLength(OUStringBuffer &rBuffer, sal_Int32 nLength)
OUString GetURLNoMark(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
XclExpDV & SearchOrCreateDv(sal_uLong nScHandle)
Searches for or creates a XclExpDV record object with the specified handle.
Manager that stores all internal defined names (NAME records) of the document.
#define STREAM_SEEK_TO_BEGIN
Contains all records for a web query (linked tables in an HTML document).
OUString GetExpression(const ScAddress &rCursor, sal_uInt16 nPos, sal_uInt32 nNumFmt=0, const formula::FormulaGrammar::Grammar eGrammar=formula::FormulaGrammar::GRAM_DEFAULT) const
std::unique_ptr< XclExpColScaleCol > mpCol
const sal_uInt32 EXC_DV_ERROR_WARNING
XclExpPalette & GetPalette() const
Returns the color buffer.
void RemoveRecord(size_t nPos)
Removes the record at the specified position from the list.
const OUString & GetOrigName(sal_uInt16 nNameIdx) const
Returns the Calc sheet of a local defined name, or SCTAB_GLOBAL for global defined names...
const sal_uInt32 EXC_DV_MODE_TEXTLEN
const sal_uInt32 EXC_CF_BLOCK_FONT
Font block present?
ScRangeList maColRanges
Cell range list for row labels.
A 2D cell range address list with Excel column and row indexes.
void InsertRecord(RecType *pRec, size_t nPos)
Inserts a record at the specified position into the list.
const ScRange & GetRange(sal_uInt16 n) const
const sal_uInt32 EXC_HLINK_MARK
Description.
const sal_uInt32 EXC_DV_IGNOREBLANK
void EndRecord()
Checks and corrects real record length.
virtual ~XclExpCF() override
const OUString & GetRepresentation() const
XclExpNameManager & GetNameManager() const
Returns the buffer that contains internal defined names.
XclExpWebQueryBuffer(const XclExpRoot &rRoot)
virtual void Save(XclExpStream &rStrm) override
Writes all needed records for this web query.
const sal_uInt8 EXC_CF_TYPE_FMLA
const sal_uInt32 EXC_DV_COND_MASK
const sal_uInt8 EXC_CF_CMP_GREATER
bool In(const ScAddress &) const
is Address& in Range?
void FillToCF8(sal_uInt16 &rnPattern, sal_uInt16 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
OString generateGUIDString()
#define XESTRING_TO_PSZ(s)
virtual void SaveXml(XclExpXmlStream &rStrm) override
void CopyFromStream(SvStream &rInStrm, sal_uInt64 nBytes=STREAM_SEEK_TO_END)
Copies nBytes bytes from current position of the stream rInStrm.
void WriteEmbeddedData(XclExpStream &rStrm)
std::shared_ptr< FastSerializerHelper > FSHelperPtr
virtual ~XclExpDV() override
void AppendNewRecord(RecType *pRec)
Appends a newly created record to the list.
const sal_uInt32 EXC_CF_FONT_UNDERL
Default flags.
static void FillRangeList(ScRangeList &rScRanges, const ScRangePairListRef &xLabelRangesRef, SCTAB nScTab)
Fills the specified range list with all label headers of the current sheet.
const sal_uInt32 EXC_CF_BORDER_ALL
Bottom border line modified?
void FillToCF8(sal_uInt16 &rnLine, sal_uInt32 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
XclExpColScaleColList maColList
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
SCTAB GetCurrScTab() const
Returns the current Calc sheet index.
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, XclBiff eBiff, bool bStyle=false)
Fills the border attributes from the passed item set.
const sal_uInt32 EXC_DV_SUPPRESSDROPDOWN
const ScIconSetFormat & mrFormat
const sal_uInt16 EXC_QSI_DEFAULTFLAGS
const OUString & GetURL() const
XclExpString maErrorText
The error title.
const sal_uInt32 EXC_XFID_NOTFOUND
Special index for "not found" state.
const sal_uInt16 EXC_ID_SST
Provides functions to convert Calc cell addresses to Excel cell addresses.
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
const sal_uInt32 EXC_DV_COND_EQUAL
virtual void Save(XclExpStream &rStrm) override
Writes the record, if it contains at least one merged cell range.
RecType * GetRecord(size_t nPos) const
Returns reference to an existing record or empty reference on error.
Binary representation of an Excel token array.
A wrapper for a UNO property set.
OUString addRelation(const OUString &rType, const OUString &rTarget)
void InsertCellRange(const ScRange &rPos)
Inserts a new cell range into the cell range list.
std::unique_ptr< char[]> aBuffer
const sal_uInt32 EXC_DV_ERROR_MASK
void WriteZeroBytesToRecord(std::size_t nBytes)
sal_uInt16 Len() const
Returns the character count of the string.
bool mbPattUsed
true = Border attribute used.
XclExpCellBorder maBorder
Font formatting attributes.
OUString msSeqRef
Cell ranges for this conditional format.
virtual ~XclExpHyperlink() override
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
#define SC_UNONAME_LINKURL
#define SAL_WARN_IF(condition, area, stream)
XclRangeList maXclRanges
Calc range list with all affected cells.
void Join(const ScRange &, bool bIsInList=false)
static SC_DLLPUBLIC OUString addToken(const OUString &rTokenList, const OUString &rToken, sal_Unicode cSep, sal_Int32 nSepCount=1, bool bForceSep=false)
Adds the string rToken to rTokenList, using a list separator character.
virtual ~XclExpCondfmt() override
const sal_uInt16 EXC_WQSETT_FORMATFULL
const OUString & GetStyleName() const
void AppendRange(const ScRange &rRange, sal_uInt32 nBaseXFId)
Appends a new range to the list of merged cell ranges.
XclExpColorScale(const XclExpRoot &rRoot, const ScColorScaleFormat &rFormat, sal_Int32 nPriority)
std::size_t GetSize() const
Returns the byte count the whole string will take on export.
virtual ~XclExpWebQuery() override
sal_Int32 mnPriority
Comparison operator for cell type.
const sal_uInt16 EXC_ID_QSI
All tables.
XclRangeList maXclRanges
List of CF records.
XclExpStringRef mxTextMark
Option flags.
INetProtocol GetProtocol() const
virtual void SaveXml(XclExpXmlStream &rStrm) override
Always use UCS-2 characters (default: try to compress). BIFF8 only.
sax_fastparser::FSHelperPtr CreateOutputStream(const OUString &sFullStream, const OUString &sRelativeStream, const css::uno::Reference< css::io::XOutputStream > &xParentRelation, const char *sContentType, std::u16string_view sRelationshipType, OUString *pRelationshipId=nullptr)
ScRangeList maMergedRanges
Represents a CF record that contains one condition of a conditional format.
sal_uInt16 mnWeight
Font height in twips (1/20 of a point).
virtual void SaveXml(XclExpXmlStream &rStrm) override
constexpr TypedWhichId< SvxWeightItem > ATTR_FONT_WEIGHT(102)
XclExpCellArea maArea
Border formatting attributes.
virtual void Save(XclExpStream &rStrm) override
Writes the LABELRANGES record if it contains at least one range.
XclExpCondfmt(const XclExpRoot &rRoot, const ScConditionalFormat &rCondFormat, const XclExtLstRef &xExtLst, sal_Int32 &rIndex)
XclRange GetEnclosingRange() const
const sal_uInt16 EXC_MERGEDCELLS_MAXCOUNT
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
const sal_uInt8 EXC_CF_CMP_NOT_BETWEEN
const sal_uInt16 EXC_ID_HLINK
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the CF record.
bool mbFormula2
true = Pattern attribute used.
XclTokenArrayRef mxTokArr1
String for first condition formula.
const sal_uInt16 EXC_WQSETT_ALL
SC_DLLPUBLIC ScStyleSheetPool * GetStyleSheetPool() const
const sal_uInt8 EXC_CF_CMP_NOT_EQUAL
ScfUInt32Vec maBaseXFIds
All merged cell ranges of the sheet.
constexpr sal_Int32 FSNS(sal_Int32 namespc, sal_Int32 element)
sal_uInt32 Insert(const XclExpStringRef &xString)
Inserts a new string into the table.
XclExpLabelranges(const XclExpRoot &rRoot)
Fills the cell range lists with all ranges of the current sheet.
std::vector< XclExpHashVec > maHashTab
List of unique strings (in SST ID order).
XclTokenArrayRef mxTokArr1
Pattern formatting attributes.
void StartRecord(sal_uInt16 nRecId, std::size_t nRecSize)
Starts a new record: writes header data, stores calculated record size.
const sal_uInt32 EXC_CF_FONT_ALLDEFAULT
Font cancellation modified?
sal_uInt32 mnTotal
Hashed table that manages string pointers.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the CONDFMT record.
void WriteBody(XclExpStream &rStrm)
Writes the body of the CF record.
const sal_uInt16 EXC_ID_WQSTRING
const sal_uInt32 EXC_DV_MODE_MASK
XclExpCF(const XclExpRoot &rRoot, const ScCondFormatEntry &rFormatEntry, sal_Int32 nPriority, ScAddress aOrigin)
XclExpMergedcells(const XclExpRoot &rRoot)
OUString GetMark(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
const OUString & GetBasePath() const
Returns the base path of the imported/exported file.
Provides export of the data of a DV record.
Color maColor
String with styles (bold, italic).
#define EXC_WEBQRY_FILTER
UNC path.
#define SC_UNONAME_REFDELAY
std::unique_ptr< ScTokenArray > CreateFlatCopiedTokenArray(sal_uInt16 nPos) const
Create a flat copy using ScTokenArray copy-ctor with shared tokens.
XclExpString maPromptTitle
Excel range list with all affected cells.
XclExpCFImpl(const XclExpRoot &rRoot, const ScCondFormatEntry &rFormatEntry, sal_Int32 nPriority, ScAddress aOrigin)
SfxObjectShell * GetDocShell() const
Returns the object shell of the Calc document.
XclTokenArrayRef mxTokArr2
x12ac:list for first condition.
const sal_uInt16 EXC_ID_CF
std::shared_ptr< XclExpString > XclExpStringRef
virtual void Save(XclExpStream &rStrm) override
Writes the DVAL record and the DV record list.
const sal_uInt32 EXC_DV_MODE_ANY
const sal_uInt32 EXC_HLINK_DESCR
Absolute path.
virtual void Save(XclExpStream &rStrm) override
Writes the complete SST and EXTSST records.
sal_uInt8 mnType
Font color ID.
static void FillScRange(ScRange &rScRange, const css::table::CellRangeAddress &rApiRange)
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
const sal_uInt32 EXC_SST_HASHTABLE_SIZE
bool mbStrikeout
true = Italic.
XclExpString maPromptText
The prompt title.
virtual SfxStyleSheetBase * Find(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All)
const sal_uInt32 EXC_DV_ERROR_INFO
const char * UseIf(const char *s, bool bUse)
const sal_uInt16 EXC_ID_0802
Flags for export.
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
XclExpDval(const XclExpRoot &rRoot)
void WriteSubList(XclExpStream &rStrm, size_t nBegin, size_t nCount, bool bCol16Bit=true, sal_uInt16 nCountInStream=0) const
constexpr TypedWhichId< SvxFontHeightItem > ATTR_FONT_HEIGHT(101)
bool IsRelUrl() const
Returns true, if URLs should be stored relative to the document location.
bool GetProperty(Type &rValue, const OUString &rPropName) const
Gets the specified property from the property set.
sc::CompileFormulaContext & GetCompileFormulaContext() const
OUString msList
OOXML Formula for first condition.
bool Finalize()
Converts the Calc range list to the Excel range list.
OUString msTarget
Location within m_Repr.
std::size_t GetBufferSize() const
Returns the byte count the character buffer will take on export.
ScRangePairListRef & GetRowNameRangesRef()
sal_uInt32 GetBaseXFId(const ScAddress &rPos) const
Returns the XF identifier of the top-left cell in a merged range.
const sal_uInt32 EXC_DV_MODE_WHOLE
const ScDataBarFormat & mrFormat
Base class for single records with any content.
const sal_uInt32 EXC_DV_SHOWPROMPT
virtual void SaveXml(XclExpXmlStream &rStrm) override
Implementation of the SST export.
const sal_uInt16 EXC_WQSETT_DEFAULTFLAGS
Specific tables.
void WriteZeroBytes(std::size_t nBytes)
Writes a sequence of nBytes zero bytes (respects slice setting).
std::unique_ptr< XclExpCfvo > mpCfvoUpperLimit
ScRangePairListRef & GetColNameRangesRef()
virtual void SaveXml(XclExpXmlStream &rStrm) override
sal_uInt32 mnSize
Total count of strings (including doubles).
const sal_uInt32 EXC_CF_FONT_ESCAPEM
Font underline type modified?
std::unique_ptr< XclExpCfvo > mpCfvoLowerLimit