28#include <com/sun/star/frame/XModel.hpp>
29#include <com/sun/star/sheet/XAreaLinks.hpp>
30#include <com/sun/star/sheet/XAreaLink.hpp>
31#include <com/sun/star/sheet/TableValidationVisibility.hpp>
32#include <com/sun/star/beans/XPropertySet.hpp>
38#include <document.hxx>
40#include <unonames.hxx>
43#include <tokenarray.hxx>
56#include <oox/token/namespaces.hxx>
63using ::com::sun::star::uno::Reference;
64using ::com::sun::star::uno::UNO_QUERY;
65using ::com::sun::star::table::CellRangeAddress;
66using ::com::sun::star::sheet::XAreaLinks;
67using ::com::sun::star::sheet::XAreaLink;
77 sal_uInt32 mnSstIndex;
78 explicit XclExpHashEntry(
const XclExpString* pString, sal_uInt32 nSstIndex ) :
79 mpString( pString ), mnSstIndex( nSstIndex ) {}
83struct XclExpHashEntrySWO
85 bool operator()(
const XclExpHashEntry& rLeft,
const XclExpHashEntry& rRight )
const
86 {
return *rLeft.mpString < *rRight.mpString; }
110 std::vector< XclExpHashVec >
127 OSL_ENSURE( xString,
"XclExpSstImpl::Insert - empty pointer not allowed" );
132 sal_uInt32 nSstIndex = 0;
135 sal_uInt16 nHash = xString->GetHash();
139 XclExpHashEntry aEntry( xString.get(),
mnSize );
140 XclExpHashVec::iterator aIt = ::std::lower_bound( rVec.begin(), rVec.end(), aEntry, XclExpHashEntrySWO() );
141 if( (aIt == rVec.end()) || (*aIt->mpString != *xString) )
145 rVec.insert( aIt, aEntry );
150 nSstIndex = aIt->mnSstIndex;
163 sal_uInt32 nBucket =
mnSize;
164 while( nBucket > 0x0100 )
167 sal_uInt16 nPerBucket = llimit_cast< sal_uInt16 >( nBucket, 8 );
168 sal_uInt16 nBucketIndex = 0;
180 sal_uInt32 nStrmPos =
static_cast< sal_uInt32
>(
rStrm.GetSvStreamPos() );
181 sal_uInt16 nRecPos =
rStrm.GetRawRecPos() + 4;
189 if( ++nBucketIndex == nPerBucket )
200 rStrm.SetSliceSize( 8 );
202 rStrm.CopyFromStream( aExtSst );
213 "xl/sharedStrings.xml",
214 u"sharedStrings.xml",
215 rStrm.GetCurrentStream()->getOutputStream(),
216 "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",
218 rStrm.PushStream( pSst );
220 pSst->startElement( XML_sst,
221 XML_xmlns,
rStrm.getNamespaceURL(OOX_NS(xls)),
222 XML_count, OString::number(
mnTotal),
223 XML_uniqueCount, OString::number(
mnSize) );
227 pSst->startElement(XML_si);
228 elem->WriteXml(
rStrm );
229 pSst->endElement( XML_si );
232 pSst->endElement( XML_sst );
248 return mxImpl->Insert( xString );
280 ScfUInt32Vec::const_iterator aIt =
maBaseXFIds.begin();
282 for (
size_t i = 0, nRanges = rNCRanges.
size();
i < nRanges; ++
i, ++aIt )
284 const ScRange & rScRange = rNCRanges[
i ];
298 size_t nFirstRange = 0;
299 size_t nRemainingRanges = aXclRanges.
size();
300 while( nRemainingRanges > 0 )
306 nFirstRange += nRangeCount;
307 nRemainingRanges -= nRangeCount;
317 rWorksheet->startElement(XML_mergeCells, XML_count, OString::number(
nCount));
321 rWorksheet->singleElement(XML_mergeCell, XML_ref,
324 rWorksheet->endElement( XML_mergeCells );
335 const OUString& rUrl = rUrlField.
GetURL();
339 bool bWithRepr = !rRepr.isEmpty();
346 aXclStrm << sal_uInt32( aDescr.
Len() + 1 );
348 aXclStrm << sal_uInt16( 0 );
355 if( eProtocol == INetProtocol::File || eProtocol == INetProtocol::Smb )
362 if( eProtocol == INetProtocol::Smb )
366 aFileName = aFileName.copy(4);
367 aFileName = aFileName.replace(
'/',
'\\');
379 << sal_uInt32( aAsciiLink.getLength() + 1 );
380 aXclStrm.
Write( aAsciiLink.getStr(), aAsciiLink.getLength() );
382 << sal_uInt32( 0xDEADFFFF );
386 << sal_uInt16( 0x0003 );
396 for(
int i = 0;
i < nLevel; ++
i )
406 else if( eProtocol != INetProtocol::NotValid )
412 aXclStrm << sal_uInt16( 0 );
420 else if( !rUrl.isEmpty() && rUrl[0] ==
'#' )
422 OUString aTextMark( rUrl.copy( 1 ) );
424 sal_Int32 nSepPos = aTextMark.lastIndexOf(
'!' );
425 sal_Int32 nPointPos = aTextMark.lastIndexOf(
'.' );
427 if(nSepPos < nPointPos)
430 aTextMark = aTextMark.replaceAt( nSepPos, 1,
u"!" );
435 std::u16string_view aSheetName(aTextMark.subView(0, nSepPos));
437 if (aSheetName.find(
' ') != std::u16string_view::npos && aSheetName[0] !=
'\'')
439 aTextMark =
"'" + aTextMark.replaceAt(nSepPos, 0,
u"'");
458 aXclStrm << sal_uInt32(
mxTextMark->Len() + 1 );
460 aXclStrm << sal_uInt16( 0 );
465 if (!location.isEmpty() &&
msTarget.endsWith(Concat2View(
"#" + location)))
477 sal_uInt16& rnLevel,
bool& rbRel,
const OUString& rUrl,
const XclExpRoot& rRoot,
bool bEncoded )
488 OUString aTmpName( aDosName );
499 else if (aDosName.startsWith(
"./"))
501 aDosName = aDosName.copy(2);
505 while (aDosName.startsWith(
"../"))
507 aDosName = aDosName.copy(3);
517 sal_uInt16 nXclCol =
static_cast< sal_uInt16
>(
maScPos.
Col() );
518 sal_uInt16 nXclRow =
static_cast< sal_uInt16
>(
maScPos.
Row() );
519 rStrm << nXclRow << nXclRow << nXclCol << nXclCol;
538 std::optional<OString> sTextMark;
541 rStrm.GetCurrentStream()->singleElement( XML_hyperlink,
544 XML_location, sTextMark,
571 for (
size_t i = 0, nPairs = xLabelRangesRef->size();
i < nPairs; ++
i )
586 if( !aRowXclRanges.
empty() || !aColXclRanges.
empty() )
589 rStrm << aRowXclRanges << aColXclRanges;
632 mrFormatEntry( rFormatEntry ),
639 mbHeightUsed( false ),
640 mbWeightUsed( false ),
641 mbColorUsed( false ),
642 mbUnderlUsed( false ),
643 mbItalicUsed( false ),
644 mbStrikeUsed( false ),
645 mbBorderUsed( false ),
658 const SfxItemSet& rItemSet = pStyleSheet->GetItemSet();
727 OSL_FAIL(
"XclExpCF::WriteBody - unknown condition type" );
755 rStrm << nFmlaSize1 << nFmlaSize2;
771 rStrm << nFlags << sal_uInt16( 0 );
778 sal_uInt32 nStyle = 0;
790 rStrm.WriteZeroBytesToRecord( 64 );
796 rStrm.WriteZeroBytesToRecord( 3 );
802 rStrm.WriteZeroBytesToRecord( 16 );
803 rStrm << sal_uInt16( 1 );
808 sal_uInt16 nLineStyle = 0;
809 sal_uInt32 nLineColor = 0;
812 rStrm << nLineStyle << nLineColor << sal_uInt16( 0 );
817 sal_uInt16 nPattern = 0, nColor = 0;
820 rStrm << nPattern << nColor;
826 rStrm << sal_uInt32( 0 ) << sal_uInt16( 0 );
841 const char *pRet =
nullptr;
851 pRet =
"greaterThan";
854 pRet =
"lessThanOrEqual";
857 pRet =
"greaterThanOrEqual";
883 pRet =
"containsText";
886 pRet =
"notContains";
912 return "aboveAverage";
914 return "uniqueValues";
916 return "duplicateValues";
918 return "containsErrors";
920 return "notContainsErrors";
926 return "containsText";
928 return "notContainsText";
968 if (IsTopBottomRule(eMode))
970 else if (IsTextRule(eMode))
1009 OString aPos =
aBuffer.makeStringAndClear();
1013 return OString(
"ISERROR(" + aPos +
")") ;
1015 return OString(
"NOT(ISERROR(" + aPos +
"))") ;
1017 return OString(
"LEFT(" + aPos +
",LEN(\"" + rText +
"\"))=\"" + rText +
"\"");
1019 return OString(
"RIGHT(" + aPos +
",LEN(\"" + rText +
"\"))=\"" + rText +
"\"");
1021 return OString(OString::Concat(
"NOT(ISERROR(SEARCH(\"") + rText +
"\"," + aPos +
")))");
1023 return OString(OString::Concat(
"ISERROR(SEARCH(\"") + rText +
"\"," + aPos +
"))");
1035 bool bFmla2 =
false;
1045 OUString aRank(
"0");
1046 if(IsTopBottomRule(eOperation))
1053 if(IsTextRule(eOperation))
1059 if(pTokenArray->GetLen())
1060 aText = pTokenArray->FirstToken()->GetString().getString().toUtf8();
1064 rWorksheet->startElement( XML_cfRule,
1066 XML_priority, OString::number(
mnPriority + 1),
1068 XML_aboveAverage, ToPsz10(bAboveAverage),
1069 XML_equalAverage, ToPsz10(bEqualAverage),
1070 XML_bottom, ToPsz10(bBottom),
1071 XML_percent, ToPsz10(bPercent),
1076 if (RequiresFixedFormula(eOperation))
1078 rWorksheet->startElement(XML_formula);
1079 OString aFormula = GetFixedFormula(eOperation,
maOrigin, aText);
1080 rWorksheet->writeEscaped(aFormula.getStr());
1081 rWorksheet->endElement( XML_formula );
1083 else if(RequiresFormula(eOperation))
1085 rWorksheet->startElement(XML_formula);
1088 pTokenArray.get()));
1089 rWorksheet->endElement( XML_formula );
1092 rWorksheet->startElement(XML_formula);
1095 pTokenArray2.get()));
1096 rWorksheet->endElement( XML_formula );
1100 rWorksheet->endElement( XML_cfRule );
1106 mxImpl( new
XclExpCFImpl( rRoot, rFormatEntry, nPriority, aOrigin ) )
1127 mrFormatEntry(rFormatEntry),
1178 rWorksheet->startElement( XML_cfRule,
1180 XML_priority, OString::number(
mnPriority + 1),
1181 XML_timePeriod, sTimePeriod,
1183 rWorksheet->endElement( XML_cfRule);
1214 return "percentile";
1240 rWorksheet->startElement( XML_cfvo,
1244 rWorksheet->endElement( XML_cfvo );
1263 rWorksheet->endElement( XML_color );
1268OString createHexStringFromDigit(
sal_uInt8 nDigit)
1270 OString aString = OString::number( nDigit, 16 );
1271 if(aString.getLength() == 1)
1272 aString += OString::number(0);
1276OString createGuidStringFromInt(
sal_uInt8 nGuid[16])
1279 for(
size_t i = 0;
i < 16; ++
i)
1281 aBuffer.append(createHexStringFromDigit(nGuid[i]));
1282 if(i == 3|| i == 5 || i == 7 || i == 9 )
1286 OString aString =
aBuffer.makeStringAndClear();
1287 return aString.toAsciiUpperCase();
1293 rtl_createUuid(nGuid,
nullptr,
true);
1294 return createGuidStringFromInt(nGuid);
1308 std::vector<XclExpExtCondFormatData> aExtEntries;
1321 aExtEntry.
pEntry = &rFormat;
1322 aExtEntries.push_back(aExtEntry);
1332 aExtEntry.
pEntry = &rFormat;
1333 aExtEntries.push_back(aExtEntry);
1341 bool bNeedsExt =
false;
1364 aExtEntry.
pEntry = &rIconSet;
1365 aExtEntries.push_back(aExtEntry);
1375 if(!aExtEntries.empty() && xExtLst)
1418 OSL_ENSURE( !
maCFList.
IsEmpty(),
"XclExpCondfmt::WriteBody - no CF records to write" );
1419 OSL_ENSURE( !
maXclRanges.
empty(),
"XclExpCondfmt::WriteBody - no cell ranges found" );
1433 rWorksheet->startElement( XML_conditionalFormatting,
1440 rWorksheet->endElement( XML_conditionalFormatting );
1449 for(
const auto& rxColorScaleEntry : rFormat)
1464 rWorksheet->startElement( XML_cfRule,
1466 XML_priority, OString::number(
mnPriority + 1) );
1468 rWorksheet->startElement(XML_colorScale);
1473 rWorksheet->endElement( XML_colorScale );
1475 rWorksheet->endElement( XML_cfRule );
1480 mrFormat( rFormat ),
1482 maGUID(
std::move(aGUID))
1499 rWorksheet->startElement( XML_cfRule,
1501 XML_priority, OString::number(
mnPriority + 1) );
1503 rWorksheet->startElement( XML_dataBar,
1512 rWorksheet->endElement( XML_dataBar );
1515 rWorksheet->startElement(XML_extLst);
1516 rWorksheet->startElement(XML_ext,
1517 FSNS(XML_xmlns, XML_x14),
rStrm.getNamespaceURL(OOX_NS(xls14Lst)),
1518 XML_uri,
"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}");
1520 rWorksheet->startElementNS( XML_x14, XML_id );
1521 rWorksheet->write(
maGUID);
1522 rWorksheet->endElementNS( XML_x14, XML_id );
1524 rWorksheet->endElement( XML_ext );
1525 rWorksheet->endElement( XML_extLst );
1527 rWorksheet->endElement( XML_cfRule );
1532 mrFormat( rFormat ),
1537 for (
auto const& itr : rFormat)
1550 rWorksheet->startElement( XML_cfRule,
1552 XML_priority, OString::number(
mnPriority + 1) );
1555 rWorksheet->startElement( XML_iconSet,
1556 XML_iconSet, pIconSetName,
1562 rWorksheet->endElement( XML_iconSet );
1563 rWorksheet->endElement( XML_cfRule );
1572 for(
const auto& rxCondFmt : *pCondFmtList)
1575 if( xCondfmtRec->IsValidForXml() )
1598 sal_uInt16 nFmlaSize = pXclTokArr ? pXclTokArr->
GetSize() : 0;
1599 rStrm << nFmlaSize << sal_uInt16( 0 );
1608 rStrm << static_cast< sal_uInt16 >( rString.
GetSize() + 1 )
1614const char* lcl_GetValidationType( sal_uInt32 nFlags )
1630const char* lcl_GetOperatorType( sal_uInt32 nFlags )
1646const char* lcl_GetErrorType( sal_uInt32 nFlags )
1657void lcl_SetValidationText(
const OUString& rText,
XclExpString& rValidationText)
1659 if ( !rText.isEmpty() )
1662 if ( rText.getLength() > 255 )
1664 OUStringBuffer
aBuf( rText );
1669 rValidationText.
Assign( rText );
1672 rValidationText.
Assign(
'\0' );
1681 mnScHandle( nScHandle )
1686 OUString aTitle, aText;
1687 bool bShowPrompt = pValData->GetInput( aTitle, aText );
1693 bool bShowError = pValData->GetErrMsg( aTitle, aText, eScErrorStyle );
1698 switch( pValData->GetDataMode() )
1708 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown mode" );
1711 switch( pValData->GetOperation() )
1722 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown condition" );
1724 switch( eScErrorStyle )
1734 default: OSL_FAIL(
"XclExpDV::XclExpDV - unknown error style" );
1745 std::unique_ptr< ScTokenArray > xScTokArr = pValData->CreateFlatCopiedTokenArray( 0 );
1754 OUStringBuffer sListBuf;
1755 OUStringBuffer sFormulaBuf(
"\"");
1760 if (!aString.isEmpty())
1762 sal_Int32 nStringIx = 0;
1765 const std::u16string_view aToken(
o3tl::getToken(aString, 0,
'\n', nStringIx ) );
1766 if (aToken.find(
',') != std::u16string_view::npos)
1768 sListBuf.append(OUString::Concat(
"\"") + aToken +
"\"");
1772 sListBuf.append(aToken);
1774 sFormulaBuf.append( aToken );
1778 mxString1->Append( std::u16string_view(&cUnicodeChar, 1) );
1779 sFormulaBuf.append(
',' );
1780 sListBuf.append(
',' );
1788 sal_uInt32 nLen = sFormulaBuf.getLength();
1792 if( sFormulaBuf[nLen - 1] ==
',' )
1794 sFormulaBuf.truncate(nLen);
1797 sFormulaBuf.append(
'"' );
1798 msFormula1 = sFormulaBuf.makeStringAndClear();
1800 msList = sListBuf.makeStringAndClear();
1802 sListBuf.remove(0, sListBuf.getLength());
1834 xScTokArr = pValData->CreateFlatCopiedTokenArray( 1 );
1846 OSL_FAIL(
"XclExpDV::XclExpDV - missing core data" );
1883 rWorksheet->startElement( XML_dataValidation,
1886 XML_errorStyle, lcl_GetErrorType(
mnFlags),
1889 XML_operator, lcl_GetOperatorType(
mnFlags ),
1900 rWorksheet->startElement(
FSNS(XML_mc, XML_AlternateContent),
1901 FSNS(XML_xmlns, XML_x12ac),
rStrm.getNamespaceURL(OOX_NS(x12ac)),
1902 FSNS(XML_xmlns, XML_mc),
rStrm.getNamespaceURL(OOX_NS(mce)));
1903 rWorksheet->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"x12ac");
1904 rWorksheet->startElement(
FSNS(XML_x12ac, XML_list));
1905 rWorksheet->writeEscaped(
msList);
1906 rWorksheet->endElement(
FSNS(XML_x12ac, XML_list));
1907 rWorksheet->endElement(
FSNS(XML_mc, XML_Choice));
1908 rWorksheet->startElement(
FSNS(XML_mc, XML_Fallback));
1909 rWorksheet->startElement(XML_formula1);
1911 rWorksheet->endElement(XML_formula1);
1912 rWorksheet->endElement(
FSNS(XML_mc, XML_Fallback));
1913 rWorksheet->endElement(
FSNS(XML_mc, XML_AlternateContent));
1917 rWorksheet->startElement(XML_formula1);
1919 rWorksheet->endElement( XML_formula1 );
1923 rWorksheet->startElement(XML_formula2);
1925 rWorksheet->endElement( XML_formula2 );
1927 rWorksheet->endElement( XML_dataValidation );
1957 if( !xDVRec->Finalize() )
1975 rWorksheet->startElement( XML_dataValidations,
1982 rWorksheet->endElement( XML_dataValidations );
1992 size_t nCurrPos = 0;
1995 size_t nFirstPos = 0;
1998 sal_uInt32 nCurrScHandle = ::std::numeric_limits< sal_uInt32 >::max();
1999 while( (nFirstPos <= nLastPos) && bLoop )
2001 nCurrPos = (nFirstPos + nLastPos) / 2;
2004 if( nCurrScHandle == nScHandle )
2006 else if( nCurrScHandle < nScHandle )
2007 nFirstPos = nCurrPos + 1;
2009 nLastPos = nCurrPos - 1;
2013 if( nCurrScHandle == nScHandle )
2015 else if( nCurrScHandle < nScHandle )
2027 rStrm.WriteZeroBytes( 10 );
2028 rStrm << EXC_DVAL_NOOBJ << static_cast< sal_uInt32 >(
maDVList.
GetSize() );
2034 const OUString& rRangeName,
2035 const OUString& rUrl,
2036 std::u16string_view rSource,
2037 sal_Int32 nRefrSecs ) :
2038 maDestRange( rRangeName ),
2041 mnRefresh(
ulimit_cast< sal_Int16 >( (nRefrSecs + 59) / 60 ) ),
2042 mbEntireDoc( false )
2045 OUString aNewTables;
2046 OUString aAppendTable;
2047 bool bExitLoop =
false;
2048 if (!rSource.empty())
2050 sal_Int32 nStringIx = 0;
2059 while (nStringIx>0 && !bExitLoop);
2064 if( !aNewTables.isEmpty() )
2083 << sal_uInt16( 0x0010 )
2084 << sal_uInt16( 0x0012 )
2085 << sal_uInt32( 0x00000000 )
2096 << sal_uInt16( 0x0000 )
2097 << sal_uInt16( 0x0001 );
2098 rStrm.WriteZeroBytes( 6 );
2109 rStrm.WriteZeroBytes( 6 );
2110 rStrm << sal_uInt16( 0x0003 )
2111 << sal_uInt32( 0x00000000 )
2112 << sal_uInt16( 0x0010 )
2120 << sal_uInt16( 0x0000 )
2121 << sal_uInt16( 0x0004 )
2122 << sal_uInt16( 0x0000 )
2125 rStrm.WriteZeroBytes( 10 );
2128 << sal_uInt16( 0x0000 );
2136 << sal_uInt16( 0x0000 )
2146 if( !pShell )
return;
2148 if( !aModelProp.
Is() )
return;
2150 Reference< XAreaLinks > xAreaLinks;
2152 if( !xAreaLinks.is() )
return;
2156 Reference< XAreaLink > xAreaLink( xAreaLinks->getByIndex(
nIndex ), UNO_QUERY );
2157 if( xAreaLink.is() )
2159 CellRangeAddress aDestRange( xAreaLink->getDestArea() );
2160 if(
static_cast< SCTAB >( aDestRange.Sheet ) == nScTab )
2169 sal_Int32 nRefresh = 0;
2177 OUString aWebQueryUrl( aUrlObj.
getFSysPath( FSysStyle::Dos ) );
2178 if( aWebQueryUrl.isEmpty() )
2179 aWebQueryUrl = aAbsDoc;
2182 OUString aRangeName;
2187 aRangeName = pRangeData->GetName();
2201 if( !aRangeName.isEmpty() )
2203 aRangeName, aWebQueryUrl, xAreaLink->getSourceArea(), nRefresh ) );
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString GetMark(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString GetURLNoMark(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString getBase(sal_Int32 nIndex=LAST_SEGMENT, bool bIgnoreFinalSlash=true, DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
static OUString GetRelURL(std::u16string_view rTheBaseURIRef, OUString const &rTheAbsURIRef, EncodeMechanism eEncodeMechanism=EncodeMechanism::WasEncoded, DecodeMechanism eDecodeMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
INetProtocol GetProtocol() const
OUString getFSysPath(FSysStyle eStyle, sal_Unicode *pDelimiter=nullptr) const
const ScTokenArray * GetFormula() const
ScColorScaleEntryType GetType() const
condformat::ScCondFormatDateType GetDateType() const
const OUString & GetStyleName() const
const OUString & GetStyle() const
ScAddress GetValidSrcPos() const
Return a position that's adjusted to allow textual representation of expressions if possible.
ScConditionMode GetOperation() const
std::unique_ptr< ScTokenArray > CreateFlatCopiedTokenArray(sal_uInt16 nPos) const
Create a flat copy using ScTokenArray copy-ctor with shared tokens.
OUString GetExpression(const ScAddress &rCursor, sal_uInt16 nPos, sal_uInt32 nNumFmt=0, const formula::FormulaGrammar::Grammar eGrammar=formula::FormulaGrammar::GRAM_DEFAULT) const
SC_DLLPUBLIC bool GetTable(const OUString &rName, SCTAB &rTab) const
ScRangePairListRef & GetRowNameRangesRef()
ScRangePairListRef & GetColNameRangesRef()
static SC_DLLPUBLIC OUString addToken(std::u16string_view rTokenList, std::u16string_view rToken, sal_Unicode cSep, sal_Int32 nSepCount=1, bool bForceSep=false)
Adds the string rToken to rTokenList, using a list separator character.
static SC_DLLPUBLIC OUString GetAbsDocName(const OUString &rFileName, const SfxObjectShell *pShell)
static void fillColor(model::ComplexColor &rComplexColor, const SfxItemSet &rItemSet, ScAutoFontColorMode eAutoMode, const SfxItemSet *pCondSet=nullptr, const Color *pBackConfigColor=nullptr, const Color *pTextConfigColor=nullptr)
static void fillFontOnly(vcl::Font &rFont, const SfxItemSet &rItemSet, const OutputDevice *pOutDev=nullptr, const Fraction *pScale=nullptr, const SfxItemSet *pCondSet=nullptr, SvtScriptType nScript=SvtScriptType::NONE)
Static helper function to fill a font object from the passed item set.
void Format(OUString &, ScRefFlags nFlags, const ScDocument &, formula::FormulaGrammar::AddressConvention eConv=formula::FormulaGrammar::CONV_OOO, sal_Unicode cDelimiter=0, bool bFullAddressNotation=false) const
void Join(const ScRange &, bool bIsInList=false)
void push_back(const ScRange &rRange)
SC_DLLPUBLIC const ScRangeData * findByRange(const ScRange &rRange) const
const ScRange & GetRange(sal_uInt16 n) const
bool Contains(const ScAddress &) const
is Address& fully in Range?
static void FillScRange(ScRange &rScRange, const css::table::CellRangeAddress &rApiRange)
A wrapper for a UNO property set.
bool GetProperty(Type &rValue, const OUString &rPropName) const
Gets the specified property from the property set.
bool Is() const
Returns true, if the contained XPropertySet interface is valid.
css::uno::Reference< css::frame::XModel3 > GetModel() const
SvStream & WriteUInt16(sal_uInt16 nUInt16)
SvStream & WriteUInt32(sal_uInt32 nUInt32)
sal_uInt64 Seek(sal_uInt64 nPos)
const OUString & GetRepresentation() const
const OUString & GetURL() const
Provides functions to convert Calc cell addresses to Excel cell addresses.
void ConvertRangeList(XclRangeList &rXclRanges, const ScRangeList &rScRanges, bool bWarn)
Converts the passed Calc cell range list to an Excel cell range list.
Represents a CF record that contains one condition of a conditional format.
bool mbColorUsed
true = Font weight used.
bool mbPattUsed
true = Border attribute used.
const ScCondFormatEntry & mrFormatEntry
XclTokenArrayRef mxTokArr1
Pattern formatting attributes.
void SaveXml(XclExpXmlStream &rStrm)
void WriteBody(XclExpStream &rStrm)
Writes the body of the CF record.
bool mbUnderlUsed
true = Font color used.
bool mbHeightUsed
true = Any font attribute used.
bool mbFontUsed
Priority of this entry; needed for oox export.
XclTokenArrayRef mxTokArr2
Formula for first condition.
XclExpCellBorder maBorder
Font formatting attributes.
bool mbFormula2
true = Pattern attribute used.
bool mbBorderUsed
true = Font strikeout used.
sal_uInt32 mnFontColorId
Formula for second condition.
XclExpCFImpl(const XclExpRoot &rRoot, const ScCondFormatEntry &rFormatEntry, sal_Int32 nPriority, ScAddress aOrigin)
sal_uInt8 mnType
Font color ID.
bool mbStrikeUsed
true = Font posture used.
sal_uInt8 mnOperator
Type of the condition (cell/formula).
bool mbWeightUsed
true = Font height used.
bool mbItalicUsed
true = Font underline type used.
ScAddress maOrigin
Calc conditional format entry.
XclExpCellArea maArea
Border formatting attributes.
sal_Int32 mnPriority
Comparison operator for cell type.
XclFontData maFontData
Top left cell of the combined range.
Represents a CF record that contains one condition of a conditional format.
XclExpCF(const XclExpRoot &rRoot, const ScCondFormatEntry &rFormatEntry, sal_Int32 nPriority, ScAddress aOrigin)
virtual void SaveXml(XclExpXmlStream &rStrm) override
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the CF record.
virtual ~XclExpCF() override
virtual void SaveXml(XclExpXmlStream &rStrm) override
const ScColorScaleEntry & mrEntry
XclExpCfvo(const XclExpRoot &rRoot, const ScColorScaleEntry &rFormatEntry, const ScAddress &rPos, bool bFirst=true)
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpColScaleCol(const XclExpRoot &rRoot, const Color &rColor)
virtual ~XclExpColScaleCol() override
XclExpColorScale(const XclExpRoot &rRoot, const ScColorScaleFormat &rFormat, sal_Int32 nPriority)
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpCfvoList maCfvoList
XclExpColScaleColList maColList
Represents a CONDFMT record that contains all conditions of a conditional format.
bool IsValidForBinary() const
Returns true, if this conditional format contains at least one cell range and CF record.
XclExpCondfmt(const XclExpRoot &rRoot, const ScConditionalFormat &rCondFormat, const XclExtLstRef &xExtLst, sal_Int32 &rIndex)
XclRangeList maXclRanges
List of CF records.
virtual void SaveXml(XclExpXmlStream &rStrm) override
virtual void Save(XclExpStream &rStrm) override
Writes the CONDFMT record with following CF records, if there is valid data.
bool IsValidForXml() const
XclExpRecordList< XclExpRecord > maCFList
OUString msSeqRef
Cell ranges for this conditional format.
virtual ~XclExpCondfmt() override
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the CONDFMT record.
Provides export of the data of a DV record.
XclExpString maPromptText
The prompt title.
sal_uInt32 mnFlags
OOXML Formula for second condition.
void InsertCellRange(const ScRange &rPos)
Inserts a new cell range into the cell range list.
XclRangeList maXclRanges
Calc range list with all affected cells.
XclExpString maErrorTitle
The prompt text.
XclTokenArrayRef mxTokArr2
x12ac:list for first condition.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the DV record.
XclExpStringRef mxString1
The error text.
OUString msFormula1
Formula for first condition.
XclExpDV(const XclExpRoot &rRoot, sal_uInt32 nScHandle)
OUString msFormula2
Formula for second condition.
sal_uInt32 mnScHandle
Miscellaneous flags.
virtual void SaveXml(XclExpXmlStream &rStrm) override
bool Finalize()
Converts the Calc range list to the Excel range list.
XclExpString maPromptTitle
Excel range list with all affected cells.
XclTokenArrayRef mxTokArr1
String for first condition formula.
XclExpString maErrorText
The error title.
OUString msList
OOXML Formula for first condition.
virtual ~XclExpDV() override
std::unique_ptr< XclExpColScaleCol > mpCol
XclExpDataBar(const XclExpRoot &rRoot, const ScDataBarFormat &rFormat, sal_Int32 nPriority, OString aGUID)
std::unique_ptr< XclExpCfvo > mpCfvoUpperLimit
virtual void SaveXml(XclExpXmlStream &rStrm) override
const ScDataBarFormat & mrFormat
std::unique_ptr< XclExpCfvo > mpCfvoLowerLimit
void InsertCellRange(const ScRange &rRange, sal_uInt32 nScHandle)
Inserts the cell range into the range list of the DV record with the specified handle.
virtual void Save(XclExpStream &rStrm) override
Writes the DVAL record and the DV record list.
virtual ~XclExpDval() override
XclExpDval(const XclExpRoot &rRoot)
XclExpDVRef mxLastFoundDV
List of DV records.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpDV & SearchOrCreateDv(sal_uInt32 nScHandle)
Searches for or creates a XclExpDV record object with the specified handle.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the DVAL record.
Base class for ext entries.
XclExpHyperlink(const XclExpRoot &rRoot, const SvxURLField &rUrlField, const ScAddress &rScPos)
Constructs the HLINK record from a URL text field.
void WriteEmbeddedData(XclExpStream &rStrm)
OUString msTarget
Location within m_Repr.
SvStreamPtr mxVarData
Cell representation text.
sal_uInt32 mnFlags
Buffer stream with variable data.
OUString m_Repr
Position of the hyperlink.
virtual void SaveXml(XclExpXmlStream &rStrm) override
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the HLINK record.
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 ~XclExpHyperlink() override
XclExpStringRef mxTextMark
Option flags.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpIconSet(const XclExpRoot &rRoot, const ScIconSetFormat &rFormat, sal_Int32 nPriority)
const ScIconSetFormat & mrFormat
XclExpCfvoList maCfvoList
XclExpLabelranges(const XclExpRoot &rRoot)
Fills the cell range lists with all ranges of the current sheet.
static void FillRangeList(ScRangeList &rScRanges, const ScRangePairListRef &xLabelRangesRef, SCTAB nScTab)
Fills the specified range list with all label headers of the current sheet.
ScRangeList maColRanges
Cell range list for row labels.
virtual void Save(XclExpStream &rStrm) override
Writes the LABELRANGES record if it contains at least one range.
virtual void Save(XclExpStream &rStrm) override
Writes the record, if it contains at least one merged cell range.
void AppendRange(const ScRange &rRange, sal_uInt32 nBaseXFId)
Appends a new range to the list of merged cell ranges.
virtual void SaveXml(XclExpXmlStream &rStrm) override
ScfUInt32Vec maBaseXFIds
All merged cell ranges of the sheet.
XclExpMergedcells(const XclExpRoot &rRoot)
sal_uInt32 GetBaseXFId(const ScAddress &rPos) const
Returns the XF identifier of the top-left cell in a merged range.
ScRangeList maMergedRanges
Manager that stores all internal defined names (NAME records) of the document.
sal_uInt16 InsertUniqueName(const OUString &rName, const XclTokenArrayRef &xTokArr, SCTAB nScTab)
Inserts a new defined name.
OUString GetOrigName(sal_uInt16 nNameIdx) const
Returns the Calc sheet of a local defined name, or SCTAB_GLOBAL for global defined names.
sal_uInt32 InsertColor(const Color &rColor, XclExpColorType eType, sal_uInt16 nAutoDefault=0)
Inserts the color into the list and updates weighting.
sal_uInt16 GetColorIndex(sal_uInt32 nColorId) const
Returns the Excel palette index of the color with passed color ID.
virtual void SaveXml(XclExpXmlStream &rStrm) override
void AppendNewRecord(RecType *pRec)
Appends a newly created record to the list.
void RemoveRecord(size_t nPos)
Removes the record at the specified position from the list.
void InsertRecord(RecType *pRec, size_t nPos)
Inserts a record at the specified position into the list.
virtual void Save(XclExpStream &rStrm) override
Writes the complete record list.
void AppendRecord(RecType *pRec)
Appends a record to the list.
RecType * GetRecord(size_t nPos) const
Returns reference to an existing record or empty reference on error.
Base class for single records with any content.
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
void SetRecSize(std::size_t nRecSize)
Sets a new record size prediction.
Access to global data from other classes.
XclExpNameManager & GetNameManager() const
Returns the buffer that contains internal defined names.
XclExpFormulaCompiler & GetFormulaCompiler() const
Returns the formula compiler to produce formula token arrays.
XclExpDxfs & GetDxfs() const
Returns the differential formatting list.
XclExpAddressConverter & GetAddressConverter() const
Returns the address converter.
sc::CompileFormulaContext & GetCompileFormulaContext() const
bool IsRelUrl() const
Returns true, if URLs should be stored relative to the document location.
XclExpPalette & GetPalette() const
Returns the color buffer.
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
Implementation of the SST export.
sal_uInt32 mnSize
Total count of strings (including doubles).
std::vector< XclExpHashVec > maHashTab
List of unique strings (in SST ID order).
sal_uInt32 mnTotal
Hashed table that manages string pointers.
void SaveXml(XclExpXmlStream &rStrm)
std::vector< XclExpStringRef > maStringVector
sal_uInt32 Insert(XclExpStringRef xString)
Inserts the passed string, if not already inserted, and returns the unique SST index.
void Save(XclExpStream &rStrm)
Writes the complete SST and EXTSST records.
::std::vector< XclExpHashEntry > XclExpHashVec
virtual ~XclExpSst() override
virtual void Save(XclExpStream &rStrm) override
Writes the complete SST and EXTSST records.
sal_uInt32 Insert(const XclExpStringRef &xString)
Inserts a new string into the table.
virtual void SaveXml(XclExpXmlStream &rStrm) override
This class is used to export Excel record streams.
void WriteZeroBytes(std::size_t nBytes)
Writes a sequence of nBytes zero bytes (respects slice setting).
std::size_t Write(const void *pData, std::size_t nBytes)
Writes nBytes bytes from memory.
This class stores an unformatted or formatted string for Excel export.
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.
std::size_t GetSize() const
Returns the byte count the whole string will take on export.
std::size_t GetBufferSize() const
Returns the byte count the character buffer will take on export.
void WriteBuffer(XclExpStream &rStrm) const
Writes the raw character buffer.
sal_uInt16 Len() const
Returns the character count of the string.
XclExpWebQueryBuffer(const XclExpRoot &rRoot)
Contains all records for a web query (linked tables in an HTML document).
virtual void Save(XclExpStream &rStrm) override
Writes all needed records for this web query.
XclExpStringRef mxQryTables
Source document URL.
virtual ~XclExpWebQuery() override
bool mbEntireDoc
Refresh time in minutes.
sal_Int16 mnRefresh
List of source range names.
XclExpWebQuery(const OUString &rRangeName, const OUString &rUrl, std::u16string_view rSource, sal_Int32 nRefrSecs)
Constructs a web query record container with settings from Calc.
XclExpString maUrl
Destination range.
A 2D cell range address list with Excel column and row indexes.
XclRange GetEnclosingRange() const
void WriteSubList(XclExpStream &rStrm, size_t nBegin, size_t nCount, bool bCol16Bit=true, sal_uInt16 nCountInStream=0) const
SfxObjectShell * GetDocShell() const
Returns the object shell of the Calc document.
XclOutput GetOutput() const
Returns the current output format of the importer/exporter.
const OUString & GetBasePath() const
Returns the base path of the imported/exported file.
rtl_TextEncoding GetTextEncoding() const
Returns the text encoding to import/export byte strings.
SCTAB GetCurrScTab() const
Returns the current Calc sheet index.
ScStyleSheetPool & GetStyleSheetPool() const
Returns the style sheet pool of the Calc document.
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
ScRangeName & GetNamedRanges() const
Returns the defined names container of the Calc document.
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
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.
Binary representation of an Excel token array.
sal_uInt16 GetSize() const
Returns the size of the token array in bytes.
void WriteArray(XclExpStream &rStrm) const
Writes the tokens of the token array (without size field).
static OString ToOString(const Color &rColor)
static OUString ToOUString(const char *s)
Color const & getFinalColor() const
constexpr sal_Int32 FSNS(sal_Int32 namespc, sal_Int32 element)
#define SAL_WARN_IF(condition, area, stream)
OUStringBuffer & truncateToLength(OUStringBuffer &rBuffer, sal_Int32 nLength)
OString generateGUIDString()
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
OUString getRelationship(Relationship eRelationship)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
const char * UseIf(const char *s, bool bUse)
std::shared_ptr< FastSerializerHelper > FSHelperPtr
@ Raw
COL_AUTO is returned.
constexpr TypedWhichId< SvxFontHeightItem > ATTR_FONT_HEIGHT(101)
constexpr TypedWhichId< SvxPostureItem > ATTR_FONT_POSTURE(103)
constexpr TypedWhichId< SvxWeightItem > ATTR_FONT_WEIGHT(102)
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
constexpr TypedWhichId< SvxBoxItem > ATTR_BORDER(150)
constexpr TypedWhichId< SvxCrossedOutItem > ATTR_FONT_CROSSEDOUT(106)
constexpr TypedWhichId< SvxUnderlineItem > ATTR_FONT_UNDERLINE(104)
#define STREAM_SEEK_TO_BEGIN
Extends the XclCellArea struct for export.
void FillToCF8(sal_uInt16 &rnPattern, sal_uInt16 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, bool bStyle)
Fills the area attributes from the passed item set.
Extends the XclCellBorder struct for export.
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, XclBiff eBiff, bool bStyle=false)
Fills the border attributes from the passed item set.
void FillToCF8(sal_uInt16 &rnLine, sal_uInt32 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
This struct helps reading and writing Excel fonts.
void FillFromVclFont(const vcl::Font &rFont, model::ComplexColor const &rComplexColor)
Fills all members (except color and escapement) from the passed font.
sal_uInt16 mnHeight
String with styles (bold, italic).
sal_uInt16 mnWeight
Font height in twips (1/20 of a point).
bool mbItalic
Underline style.
sal_uInt8 mnUnderline
Windows character set.
bool mbStrikeout
true = Italic.
model::ComplexColor maComplexColor
true = Shadowed.
constexpr OUStringLiteral SC_UNONAME_FILTER
constexpr OUStringLiteral SC_UNONAME_REFDELAY
constexpr OUStringLiteral SC_UNONAME_LINKURL
constexpr OUStringLiteral SC_UNO_AREALINKS
constexpr OUStringLiteral INET_FILE_SCHEME
std::unique_ptr< char[]> aBuffer
const sal_uInt32 EXC_SST_HASHTABLE_SIZE
std::shared_ptr< XclExpString > XclExpStringRef
#define XESTRING_TO_PSZ(s)
@ EXC_BIFF8
MS Excel 5.0, MS Excel 7.0 (95)
@ EXC_OUTPUT_XML_2007
MS Excel binary .xls.
const sal_uInt32 EXC_DV_COND_NOTBETWEEN
const sal_uInt16 EXC_ID_DV
const sal_uInt16 EXC_WQSETT_SPECTABLES
All tables or entire document.
const sal_uInt32 EXC_DV_ERROR_INFO
const sal_uInt32 EXC_DV_IGNOREBLANK
const sal_uInt32 EXC_DV_COND_BETWEEN
const sal_uInt32 EXC_DV_COND_NOTEQUAL
const sal_uInt16 EXC_MERGEDCELLS_MAXCOUNT
const sal_uInt32 EXC_HLINK_DESCR
Absolute path.
const sal_uInt32 EXC_DV_MODE_ANY
const sal_uInt16 EXC_ID_LABELRANGES
const sal_uInt16 EXC_ID_CF
constexpr OUStringLiteral EXC_WEBQRY_FILTER
UNC path.
const sal_uInt16 EXC_QSI_DEFAULTFLAGS
const sal_uInt32 EXC_DV_SHOWPROMPT
const sal_uInt16 EXC_PQRYTYPE_WEBQUERY
Source type: ODBC.
const sal_uInt16 EXC_WQSETT_DEFAULTFLAGS
Specific tables.
const sal_uInt16 EXC_WQSETT_FORMATFULL
const sal_uInt32 EXC_DV_MODE_WHOLE
const sal_uInt32 EXC_CF_BLOCK_AREA
Border block present?
const sal_uInt16 EXC_ID_0802
Flags for export.
const sal_uInt16 EXC_ID_QSI
All tables.
const sal_uInt8 EXC_CF_CMP_NOT_BETWEEN
const sal_uInt16 EXC_WQSETT_ALL
const sal_uInt16 EXC_ID_WQSTRING
const sal_uInt32 EXC_CF_ALLDEFAULT
Any area attribute modified?
const sal_uInt32 EXC_HLINK_BODY
const sal_uInt32 EXC_CF_FONT_ESCAPEM
Font underline type modified?
const sal_uInt32 EXC_DV_MODE_MASK
const sal_uInt16 EXC_ID_HLINK
const sal_uInt32 EXC_CF_AREA_ALL
Background color modified?
const sal_uInt16 EXC_ID_SST
const sal_uInt32 EXC_DV_ERROR_WARNING
const sal_uInt32 EXC_CF_BLOCK_BORDER
Alignment block present?
const sal_uInt32 EXC_CF_FONT_STYLE
NumberFormat String or Id?
const sal_uInt32 EXC_DV_COND_MASK
const sal_uInt8 EXC_CF_TYPE_FMLA
const sal_uInt32 EXC_CF_BLOCK_FONT
Font block present?
const sal_uInt32 EXC_DV_SUPPRESSDROPDOWN
const sal_uInt32 EXC_DV_SHOWERROR
const sal_uInt32 EXC_DV_COND_LESS
const sal_uInt16 EXC_ID_WQTABLES
const sal_uInt16 EXC_ID_EXTSST
const sal_uInt32 EXC_DV_MODE_TIME
const sal_uInt8 EXC_CF_TYPE_CELL
const sal_uInt32 EXC_CF_BORDER_ALL
Bottom border line modified?
const sal_uInt8 EXC_CF_CMP_LESS
const sal_uInt8 EXC_CF_CMP_GREATER
const sal_uInt32 EXC_DV_MODE_TEXTLEN
const sal_uInt16 EXC_PQRY_WEBQUERY
ODBC connection.
const sal_uInt8 EXC_CF_TYPE_NONE
const sal_uInt32 EXC_DV_MODE_LIST
const sal_uInt16 EXC_ID_PQRY
const sal_uInt8 EXC_CF_CMP_LESS_EQUAL
const sal_uInt32 EXC_CF_FONT_ALLDEFAULT
Font cancellation modified?
const sal_uInt32 EXC_DV_COND_EQGREATER
const sal_uInt16 EXC_ID_CONDFMT
const sal_uInt8 EXC_CF_CMP_NONE
const sal_uInt32 EXC_DV_MODE_DATE
const sal_uInt32 EXC_DV_COND_EQUAL
const sal_uInt32 EXC_DV_MODE_DECIMAL
const sal_uInt8 EXC_CF_CMP_GREATER_EQUAL
const sal_uInt32 EXC_DV_ERROR_STOP
const sal_uInt32 EXC_DV_ERROR_MASK
const sal_uInt32 EXC_DV_MODE_CUSTOM
const sal_uInt16 EXC_ID_DVAL
Font escapement type modified?
const sal_uInt8 EXC_CF_CMP_NOT_EQUAL
const sal_uInt16 EXC_ID_MERGEDCELLS
const sal_uInt32 EXC_DV_STRINGLIST
const sal_uInt32 EXC_CF_FONT_STRIKEOUT
Font posture or weight modified?
const sal_uInt8 EXC_CF_CMP_EQUAL
const sal_uInt16 EXC_ID_WQSETT
const sal_uInt32 EXC_DV_COND_EQLESS
const sal_uInt32 EXC_HLINK_MARK
Description.
const sal_uInt16 EXC_PQRY_TABLES
Web query.
const sal_uInt32 EXC_DV_COND_GREATER
const sal_uInt8 EXC_CF_CMP_BETWEEN
const sal_uInt32 EXC_CF_FONT_UNDERL
Default flags.
const sal_uInt32 EXC_HLINK_ABS
Contains file link or URL.
@ EightBitLength
Always use UCS-2 characters (default: try to compress). BIFF8 only.
@ ForceUnicode
Default string settings.
const sal_uInt16 EXC_FONTESC_NONE
const sal_uInt32 EXC_XFID_NOTFOUND
Special index for "not found" state.