22 #include <string_view>
24 #include <com/sun/star/i18n/XBreakIterator.hpp>
25 #include <com/sun/star/i18n/ScriptType.hpp>
27 #include <vcl/font.hxx>
41 #include <editeng/editids.hrc>
43 #include <document.hxx>
50 #include <globstr.hrc>
57 using ::com::sun::star::uno::Reference;
58 using ::com::sun::star::i18n::XBreakIterator;
64 mxProgress( new
ScfProgressBar( rRoot.GetDocShell(), STR_SAVE_DOC ) ),
65 mpSubProgress( nullptr ),
66 mpSubRowCreate( nullptr ),
67 mpSubRowFinal( nullptr ),
85 sal_Int32 nSegRowCreate =
mxProgress->AddSegment( 2000 );
89 for(
SCTAB nScTab = 0; nScTab < nScTabCount; ++nScTab )
95 rDoc.
GetTableArea( nScTab, nLastUsedScCol, nLastUsedScRow );
96 std::size_t nSegSize =
static_cast< std::size_t
>( nLastUsedScRow + 1 );
115 "XclExpProgressBar::ActivateCreateRowsSegment - invalid sheet" );
117 OSL_ENSURE( nSeg !=
SCF_INV_SEGMENT,
"XclExpProgressBar::ActivateCreateRowsSegment - invalid segment" );
152 rXclPos.
mnCol =
static_cast< sal_uInt16
>( nScCol );
153 rXclPos.
mnRow =
static_cast< sal_uInt32
>( nScRow );
172 bool bValid = bValidCol && bValidRow && bValidTab;
178 if( !bValid && bWarn )
191 lclFillAddress( rXclPos, rScPos.
Col(), rScPos.
Row() );
232 const ScRange& rScRange,
bool bWarn )
248 lclFillAddress( rXclRange.
maLast, nScCol2, nScRow2 );
257 for (
size_t nRange = rScRanges.
size(); nRange > 0; )
259 ScRange & rScRange = rScRanges[ --nRange ];
282 OUString lclGetUrlRepresentation(
const SvxURLField& rUrlField )
286 return aRepr.isEmpty() ? rUrlField.
GetURL() : aRepr;
294 mbMultipleUrls( false )
313 if(
const OUString* pRepr =
mxLinkRec->GetRepr() )
321 return aUrlRepr.isEmpty() ? lclGetUrlRepresentation(rUrlField) : aUrlRepr;
363 namespace ApiScriptType = ::com::sun::star::i18n::ScriptType;
372 sal_Int32 nPortionPos = 0;
373 sal_Int32 nTextLen = rText.getLength();
374 while( nPortionPos < nTextLen )
377 sal_Int16 nScript = xBreakIt->getScriptType( rText, nPortionPos );
378 sal_Int32 nPortionEnd = xBreakIt->endOfScript( rText, nPortionPos, nScript );
381 if( nScript == ApiScriptType::WEAK )
382 nScript = nLastScript;
388 sal_Int32 nXclPortionStart = xString->Len();
391 if( nXclPortionStart < xString->Len() )
396 xString->AppendFormat( nXclPortionStart, nFontIdx );
400 nLastScript = nScript;
401 nPortionPos = nPortionEnd;
435 namespace ApiScriptType = ::com::sun::star::i18n::ScriptType;
441 for( sal_Int32 nPara = 0; nPara < nParaCount; ++nPara )
444 OUString aParaText( rEE.
GetText( nPara ) );
446 std::vector<sal_Int32> aPosList;
450 for(
const auto& rPos : aPosList )
453 OUString aXclPortionText = aParaText.copy( aSel.nStartPos, aSel.nEndPos - aSel.nStartPos );
455 aItemSet.ClearItem();
460 short nEsc = aEditSet.Get( EE_CHAR_ESCAPEMENT ).GetEsc();
463 bool bIsHyperlink =
false;
464 if( aSel.nStartPos + 1 == aSel.nEndPos )
468 if( aEditSet.GetItemState( EE_FEATURE_FIELD,
false, &pItem ) == SfxItemState::SET )
471 if(
const SvxURLField* pUrlField = dynamic_cast<const SvxURLField*>( pField ) )
474 aXclPortionText = pLinkHelper ?
476 lclGetUrlRepresentation( *pUrlField );
481 OSL_FAIL(
"lclCreateFormattedString - unknown text field" );
482 aXclPortionText.clear();
488 sal_Int32 nXclPortionStart = xString->Len();
491 if( (nXclPortionStart < xString->Len()) || (aParaText.isEmpty()) )
495 sal_Int16 nScript = xBreakIt->getScriptType( aXclPortionText, 0 );
496 if( nScript == ApiScriptType::WEAK )
497 nScript = nLastScript;
499 nLastScript = nScript;
502 aFont.SetEscapement( nEsc );
505 aFont.SetColor( COL_LIGHTBLUE );
510 xString->AppendFormat( nXclPortionStart, nFontIdx );
513 aSel.nStartPos = aSel.nEndPos;
517 if( nPara + 1 < nParaCount )
531 xString->Assign( rString, nFlags, nMaxLen );
533 xString->AssignByte( rString, rRoot.
GetTextEncoding(), nFlags, nMaxLen );
548 rXclString.
Append( rString );
556 rXclString.
Append( OUString(cChar) );
565 return lclCreateFormattedString(rRoot, rString, pCellAttr, nFlags, nMaxLen);
581 auto pEEItemSet = std::make_unique<SfxItemSet>( rEE.
GetEmptyItemSet() );
587 xString = lclCreateFormattedString( rRoot, rEE, &rLinkHelper, nFlags, nMaxLen );
604 rEE.
SetText( pParaObj->GetTextObject() );
605 xString = lclCreateFormattedString( rRoot, rEE,
nullptr, nFlags,
EXC_STR_MAXLEN );
608 if( !xString->IsEmpty() )
616 OSL_FAIL(
"XclExpStringHelper::CreateString - textbox without para object" );
632 xString = lclCreateFormattedString( rRoot, rEE,
nullptr, nFlags,
EXC_STR_MAXLEN );
635 if( !xString->IsEmpty() )
645 namespace ApiScriptType = ::com::sun::star::i18n::ScriptType;
647 sal_Int32 nStrPos = 0;
648 sal_Int32 nStrLen = rString.getLength();
649 sal_Int16 nScript = ApiScriptType::WEAK;
650 while( (nStrPos < nStrLen) && (nScript == ApiScriptType::WEAK) )
652 nScript = xBreakIt->getScriptType( rString, nStrPos );
653 nStrPos = xBreakIt->endOfScript( rString, nStrPos, nScript );
655 return (nScript == ApiScriptType::WEAK) ? rRoot.
GetDefApiScript() : nScript;
662 mrEE( rRoot.GetHFEditEngine() ),
681 if( !pTextObj )
return;
684 sal_Int32 nHeight = 0;
696 aFontData = pFirstFont->GetFontData();
702 const FontList* pFontList =
nullptr;
705 if(
const SvxFontListItem* pInfoItem = static_cast< const SvxFontListItem* >(
706 pDocShell->GetItem( SID_ATTR_CHAR_FONTLIST ) ) )
707 pFontList = pInfoItem->GetFontList();
711 for( sal_Int32 nPara = 0; nPara < nParaCount; ++nPara )
714 OUStringBuffer aParaText;
715 sal_Int32 nParaHeight = 0;
716 std::vector<sal_Int32> aPosList;
719 for(
const auto& rPos : aPosList )
728 aItemSet.ClearItem();
740 if( bNewFont || (bNewStyle && pFontList) )
742 aParaText.append(
"&\"").append(aNewData.
maName);
750 if( !aNewData.
maStyle.isEmpty() )
751 aParaText.append(
",").append(aNewData.
maStyle);
753 aParaText.append(
"\"");
763 aParaText.append(
"&").append(OUString::number( aNewData.
mnHeight ));
765 nParaHeight = ::std::max< sal_Int32 >( nParaHeight, aNewData.
mnHeight * 20 );
793 aParaText.append(
"&S");
810 aFontData = aNewData;
816 (aEditSet.GetItemState(
EE_FEATURE_FIELD,
false, &pItem ) == SfxItemState::SET) )
818 if(
const SvxFieldData* pFieldData = static_cast< const SvxFieldItem* >( pItem )->GetField() )
820 if( dynamic_cast<const SvxPageField*>( pFieldData) != nullptr )
821 aParaText.append(
"&P");
822 else if( dynamic_cast<const SvxPagesField*>( pFieldData) !=
nullptr )
823 aParaText.append(
"&N");
824 else if( dynamic_cast<const SvxDateField*>( pFieldData) !=
nullptr )
825 aParaText.append(
"&D");
826 else if( dynamic_cast<const SvxTimeField*>( pFieldData) !=
nullptr || dynamic_cast<const SvxExtTimeField*>( pFieldData) !=
nullptr )
827 aParaText.append(
"&T");
828 else if( dynamic_cast<const SvxTableField*>( pFieldData) !=
nullptr )
829 aParaText.append(
"&A");
830 else if( dynamic_cast<const SvxFileField*>( pFieldData) !=
nullptr )
831 aParaText.append(
"&F");
832 else if(
const SvxExtFileField* pFileField = dynamic_cast<const SvxExtFileField*>( pFieldData ) )
834 switch( pFileField->GetFormat() )
836 case SvxFileFormat::NameAndExt:
837 case SvxFileFormat::NameOnly:
838 aParaText.append(
"&F");
840 case SvxFileFormat::PathOnly:
841 aParaText.append(
"&Z");
843 case SvxFileFormat::PathFull:
844 aParaText.append(
"&Z&F");
847 OSL_FAIL(
"XclExpHFConverter::AppendPortion - unknown file field" );
855 aPortionText = aPortionText.replaceAll(
"&",
"&&" );
857 if( bFontHtChanged && aParaText.getLength() && !aPortionText.isEmpty() )
859 sal_Unicode cLast = aParaText[ aParaText.getLength() - 1 ];
861 if( (
'0' <= cLast) && (cLast <=
'9') && (
'0' <= cFirst) && (cFirst <=
'9') )
862 aParaText.append(
" ");
864 aParaText.append(aPortionText);
872 if( nParaHeight == 0 )
873 nParaHeight = aFontData.
mnHeight * 20;
874 nHeight += nParaHeight;
879 if( !aText.isEmpty() )
881 maHFString +=
"&" + OUStringChar(cPortionCode) + aText;
892 OUString lclEncodeDosUrl(
893 XclBiff eBiff,
const OUString& rUrl, std::u16string_view rBase,
const OUString* pTableName)
899 OUString aOldUrl = rUrl;
902 if ( aOldUrl.getLength() > 2 && aOldUrl.startsWith(
"\\\\") )
906 aOldUrl = aOldUrl.copy(2);
908 else if ( aOldUrl.getLength() > 2 && aOldUrl.match(
":\\", 1) )
911 sal_Unicode cThisDrive = rBase.empty() ?
' ' : rBase[0];
913 if (cThisDrive == cDrive)
918 aOldUrl = aOldUrl.copy(3);
928 while((nPos = aOldUrl.indexOf(
'\\')) != -1)
930 if ( aOldUrl.startsWith(
"..") )
937 aOldUrl = aOldUrl.copy(nPos + 1);
942 aBuf.append(
'[').append(aOldUrl).append(
']');
944 aBuf.append(aOldUrl);
954 DBG_ASSERT( pTableName,
"lclEncodeDosUrl - sheet name required for BIFF8" );
955 aBuf.append(EXC_URLSTART_SELF);
964 aBuf.append(*pTableName);
968 if (aBuf.getLength() > 255)
971 return aBuf.makeStringAndClear();
980 return lclEncodeDosUrl(rRoot.
GetBiff(), aDosUrl, aDosBase, pTableName);
991 : mrMatrix( rMatrix )
1004 OSL_ENSURE( nCols && nRows,
"XclExpCachedMatrix::GetDimensions - empty matrix" );
1005 OSL_ENSURE( nCols <= 256,
"XclExpCachedMatrix::GetDimensions - too many columns" );
1017 return 3 + 9 * (nCols * nRows);
1028 rStrm << static_cast< sal_uInt8 >( nCols ) <<
static_cast< sal_uInt16
>( nRows );
1031 rStrm << static_cast< sal_uInt8 >( nCols - 1 ) << static_cast< sal_uInt16 >( nRows - 1 );
1033 for(
SCSIZE nRow = 0; nRow < nRows; ++nRow )
1035 for(
SCSIZE nCol = 0; nCol < nCols; ++nCol )
1059 else if( (nScError = nMatVal.
GetError()) != FormulaError::NONE )
void ActivateSegment(sal_Int32 nSegment)
Starts the progress bar or activates another segment.
OUString AsRGBHexString() const
rtl::Reference< XclExpHyperlink > XclExpHyperlinkRef
static bool IsNonValueType(ScMatValType nType)
String, empty or empty path, but not value nor boolean.
ScAddress maMaxPos
Tracer for invalid addresses.
Matrix data type that can store values of mixed types.
const sal_Unicode EXC_URLSTART_SELF
Encoded URL.
static OUString EncodeUrl(const XclExpRoot &rRoot, const OUString &rAbsUrl, const OUString *pTableName=nullptr)
Encodes and returns the URL passed in rAbsUrl to an Excel like URL.
void ConvertRangeList(XclRangeList &rXclRanges, const ScRangeList &rScRanges, bool bWarn)
Converts the passed Calc cell range list to an Excel cell range list.
SC_DLLPUBLIC const css::uno::Reference< css::i18n::XBreakIterator > & GetBreakIterator()
This class stores an unformatted or formatted string for Excel export.
EditEngine & GetDrawEditEngine() const
Returns the edit engine for import/export of drawing text boxes.
OUString GetText(LineEnd eEnd=LINEEND_LF) const
const sal_uInt16 EXC_STR_MAXLEN
const sal_Unicode EXC_URL_PARENTDIR
Directory name delimiter.
vcl::Font GetFontFromItemSet(const XclExpRoot &rRoot, const SfxItemSet &rItemSet, sal_Int16 nScript)
Returns a VCL font object filled from the passed item set.
XclExpHyperlinkRef mxLinkRec
sal_Int32 mnSegRowFinal
Sub progress bar for finalizing ROW records.
rtl_TextEncoding GetTextEncoding() const
Returns the text encoding to import/export byte strings.
OUString getString() const
XclBiff
An enumeration for all Excel file format types (BIFF types).
void SetDefaults(const SfxItemSet &rDefaults, bool bRememberCopy=true)
Creates a copy of SfxItemSet if bRememberCopy set.
bool ConvertRange(XclRange &rXclRange, const ScRange &rScRange, bool bWarn)
Converts the passed Calc cell range to an Excel cell range.
XclExpAddressConverter(const XclExpRoot &rRoot)
const OUString & GetFamilyName() const
bool IsExportTab(SCTAB nScTab) const
Returns true, if the specified Calc sheet will be exported.
void ActivateCreateRowsSegment()
Activates the progress segment to create ROW records.
This class is used to export Excel record streams.
XclStrFlags
Flags used to specify import/export mode of strings.
const SfxItemSet & GetEmptyItemSet() const
void SetUpdateMode(bool bUpdate, bool bRestoring=false)
void Initialize()
Initializes all segments and sub progress bars.
void push_back(const XclRange &rRange)
bool mbTabTrunc
Flag for "rows truncated" warning box.
ScAddress maScPos
Created HLINK record.
void Progress()
Increases the currently activated (sub) progress bar by 1 step.
sal_uInt16 Insert(const XclFontData &rFontData, XclExpColorType eColorType, bool bAppFont=false)
Inserts a new font with the passed font data into the buffer if not present.
constexpr::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
This struct helps reading and writing Excel fonts.
bool CheckRange(const ScRange &rScRange, bool bWarn)
Checks if the passed cell range is valid (checks start and end position).
ScMatrixValue Get(SCSIZE nC, SCSIZE nR) const
: If bString the ScMatrixValue->pS may still be NULL to indicate an empty string! ...
Provides export of hyperlink data.
ScfProgressBarPtr mxProgress
const SfxItemSet & GetItemSet() const
sal_uInt16 mnHeight
Font color.
ScfProgressBar * mpSubRowCreate
Current sub progress bar.
const sal_uInt16 EXC_MAXRECSIZE_BIFF8
const sal_uInt8 EXC_CACHEDVAL_ERROR
const sal_Unicode EXC_URLSTART_ENCODED
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
void ActivateFinalRowsSegment()
Activates the progress segment to finalize ROW records.
static void FillToEditItemSet(SfxItemSet &rEditSet, const SfxItemSet &rSrcSet, const SfxItemSet *pCondSet=nullptr)
Converts all Calc items contained in rSrcSet to edit engine items and puts them into rEditSet...
XclExpHFConverter(const XclExpHFConverter &)=delete
delete copy constructor
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT(EE_CHAR_START+2)
SfxItemSet GetAttribs(sal_Int32 nPara, sal_Int32 nStart, sal_Int32 nEnd, GetAttribsFlags nFlags=GetAttribsFlags::ALL) const
Try NOT to use this struct.
XclExpCachedMatrix(const ScMatrix &rMatrix)
Constructs and fills a new matrix.
const sal_uInt16 EXC_FONTESC_SUB
SC_DLLPUBLIC ScDocumentPool * GetPool()
const sal_uInt16 EXC_FONTWGHT_BOLD
const sal_Unicode EXC_DDE_DELIM
Sheet name starts here (BIFF4).
Access to global data from other classes.
const sal_uInt16 EXC_FONT_APP
bool GetBoolean() const
Only valid if ScMatrix methods indicate that this is a boolean.
void SetText(const OUString &rStr)
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
Helper to create HLINK records during creation of formatted cell strings.
bool mbMultipleUrls
List with all processed URLs.
bool IsFull() const
Returns true, if the current progress segment is already full.
FontMetric Get(const OUString &rName, const OUString &rStyleName) const
const sal_uInt16 EXC_FONTESC_NONE
ScfInt32Vec maSubSegRowCreate
Sub progress bar for creating table rows.
void GenerateString(const EditTextObject *pLeftObj, const EditTextObject *pCenterObj, const EditTextObject *pRightObj)
Generates the header/footer string from the passed edit engine text objects.
XclAddress CreateValidAddress(const ScAddress &rScPos, bool bWarn)
Returns a valid cell address by moving it into allowed dimensions.
bool mbItalic
Underline style.
const OUString & GetStyleName(FontWeight eWeight, FontItalic eItalic) const
void Append(const OUString &rString)
Appends a string.
void GetDimensions(SCSIZE &nCols, SCSIZE &nRows) const
const sal_Int32 SCF_INV_SEGMENT
void SetSliceSize(sal_uInt16 nSize)
Sets data slice length.
const sal_Unicode EXC_URLSTART_SELFENCODED
Reference to own workbook.
void Progress(std::size_t nDelta=1)
Increase current segment by the passed value.
FormulaError GetError() const
Only valid if ScMatrix methods indicate that this is no string!
std::size_t GetSize() const
Returns the byte count of all contained data.
sal_uInt16 mnEscapem
Boldness: 400=normal, 700=bold.
void SetScEscapement(short nScEscapem)
Sets the Calc escapement style.
Stores all data of an Excel font and provides export of FONT records.
MS Excel 5.0, MS Excel 7.0 (95)
OUString getFSysPath(FSysStyle eStyle, sal_Unicode *pDelimiter=nullptr) const
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.
OUString maStyle
Font name.
void Activate()
Starts the progress bar (with first segment).
sal_uInt8 mnUnderline
Windows character set.
void SetTextCurrentDefaults(const EditTextObject &rTextObject)
SetText and apply defaults already set.
void IncRowRecordCount()
Increases the number of existing ROW records by 1.
#define DBG_ASSERT(sCon, aError)
XclExpHyperlinkHelper(const XclExpRoot &rRoot, const ScAddress &rScPos)
void GetDimensions(SCSIZE &rC, SCSIZE &rR) const
OUString maHFString
The header/footer edit engine.
static void GetFromEditItemSet(SfxItemSet &rDestSet, const SfxItemSet &rEditSet)
Converts all edit engine items contained in rEditSet to Calc items and puts them into rDestSet...
bool mbColTrunc
Maximum row index.
const sal_Unicode EXC_URL_DOSDRIVE
Reference to own workbook (BIFF5/BIFF7).
XclExpHyperlinkRef GetLinkRecord() const
Returns the created single HLINk record, or an empty reference.
A 2D cell range address list with Excel column and row indexes.
Stores the correct Excel sheet index for each Calc sheet.
const sal_uInt8 EXC_CACHEDVAL_BOOL
const ScMatrix & mrMatrix
static sal_Int16 GetLeadingScriptType(const XclExpRoot &rRoot, const OUString &rString)
Returns the script type first text portion different to WEAK, or the system default script type...
FontStrikeout GetStrikeout() const
const OUString & GetRepresentation() const
const sal_Unicode EXC_URL_SUBDIR
Root directory of current drive.
XclExpTabInfo & GetTabInfo() const
Returns the buffer for Calc->Excel sheet index conversion.
OUString maUrlList
Cell position to set at the HLINK record.
A 2D cell address struct with Excel column and row indexes.
static SC_DLLPUBLIC OUString addToken(const OUString &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.
bool IsRGBEqual(const Color &rColor) const
bool HasLinkRecord() const
Returns true, if a single HLINK record has been created.
const sal_uInt8 EXC_FONTUNDERL_SINGLE
Progress bar for complex progress representation.
static void AppendString(XclExpString &rXclString, const XclExpRoot &rRoot, const OUString &rString)
Appends an unformatted string to an Excel string object.
const sal_uInt8 EXC_CACHEDVAL_EMPTY
const sal_uInt16 EXC_FONTWGHT_NORMAL
bool ValidateRange(ScRange &rScRange, bool bWarn)
Checks and eventually crops the cell range to valid dimensions.
virtual ~XclExpProgressBar() override
sal_Int16 GetDefApiScript() const
Returns the default script type, e.g.
sal_Int32 GetParagraphCount() const
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
SCTAB GetCurrScTab() const
Returns the current Calc sheet index.
const OUString & GetURL() const
ScfProgressBar * mpSubProgress
Progress bar implementation.
SCTAB GetScTabCount() const
Returns the number of Calc sheets.
const svl::SharedString & GetString() const
Only valid if ScMatrix methods indicate so!
const sal_uInt8 EXC_CACHEDVAL_DOUBLE
const sal_uInt16 EXC_FONTESC_SUPER
SC_DLLPUBLIC void PutInOrder()
const Color & GetColor() const
ScEditEngineDefaulter & GetEditEngine() const
Returns the edit engine for import/export of rich strings etc.
std::size_t mnRowCount
Progress segment for finalizing ROW records.
sal_Int32 mnTotalHeight
The last generated header/footer string.
SC_DLLPUBLIC bool GetTableArea(SCTAB nTab, SCCOL &rEndCol, SCROW &rEndRow, bool bCalcHiddens=false) const
static XclExpStringRef CreateCellString(const XclExpRoot &rRoot, const OUString &rString, const ScPatternAttr *pCellAttr, XclStrFlags nFlags=XclStrFlags::NONE, sal_uInt16 nMaxLen=EXC_STR_MAXLEN)
Creates a new formatted string from a Calc string cell.
const sal_uInt8 EXC_CACHEDVAL_STRING
virtual OutlinerParaObject * GetOutlinerParaObject() const override
constexpr TypedWhichId< SvxEscapementItem > EE_CHAR_ESCAPEMENT(EE_CHAR_START+10)
bool GetUpdateMode() const
XclExpProgressBar(const XclExpRoot &rRoot)
static OUString EncodeDde(std::u16string_view rApplic, std::u16string_view rTopic)
Encodes and returns the passed DDE link to an Excel like DDE link.
void GetPortions(sal_Int32 nPara, std::vector< sal_Int32 > &rList)
Stores the data of all fonts used in the document.
sal_uInt16 mnWeight
Font height in twips (1/20 of a point).
void AppendPortion(const EditTextObject *pTextObj, sal_Unicode cPortionCode)
Converts the text object contents and stores it in the passed string.
static void AppendChar(XclExpString &rXclString, const XclExpRoot &rRoot, sal_Unicode cChar)
Appends a character to an Excel string object.
void Save(XclExpStream &rStrm) const
Writes the complete matrix to stream.
SC_DLLPUBLIC ScPatternAttr * GetDefPattern() const
bool mbRowTrunc
Flag for "columns truncated" warning box.
const sal_uInt8 EXC_FONTUNDERL_NONE
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
Base class for import/export address converters.
OUString ProcessUrlField(const SvxURLField &rUrlField)
Processes the passed URL field (tries to create a HLINK record).
void TraceInvalidAddress(const ScAddress &rPos, const ScAddress &rMaxPos)
const sal_Unicode EXC_URL_DRIVEROOT
DOS drive letter or UNC server name.
void AppendByte(std::u16string_view rString, rtl_TextEncoding eTextEnc)
Appends a string.
FontLineStyle GetUnderline() const
void ValidateRangeList(ScRangeList &rScRanges, bool bWarn)
Checks and eventually crops the cell ranges to valid dimensions.
static XclExpStringRef CreateString(const XclExpRoot &rRoot, const OUString &rString, XclStrFlags nFlags=XclStrFlags::NONE, sal_uInt16 nMaxLen=EXC_STR_MAXLEN)
Creates a new unformatted string from the passed string.
const OUString & GetBasePath() const
Returns the base path of the imported/exported file.
constexpr sal_uInt16 EE_FEATURE_FIELD(EE_FEATURE_NOTCONV+1)
Color maColor
String with styles (bold, italic).
SfxObjectShell * GetDocShell() const
Returns the object shell of the Calc document.
std::shared_ptr< XclExpString > XclExpStringRef
const XclExpRoot & GetRoot() const
Returns the filter root data.
ScfProgressBar * mpSubRowFinal
Segment ID's for all sheets in sub progress bar.
const sal_uInt8 EXC_FONTUNDERL_DOUBLE
bool mbStrikeout
true = Italic.
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
XclExpFontBuffer & GetFontBuffer() const
Returns the font buffer.
virtual ~XclExpHyperlinkHelper() override
bool CheckAddress(const ScAddress &rScPos, bool bWarn)
Checks if the passed Calc cell address is valid.
bool ConvertAddress(XclAddress &rXclPos, const ScAddress &rScPos, bool bWarn)
Converts the passed Calc cell address to an Excel cell address.
A 2D cell range address struct with Excel column and row indexes.
sal_Int32 AddSegment(std::size_t nSize)
Adds a new segment to the progress bar.
void WriteZeroBytes(std::size_t nBytes)
Writes a sequence of nBytes zero bytes (respects slice setting).