31 #include <rtl/math.hxx>
53 #include <document.hxx>
58 #include <com/sun/star/embed/Aspects.hpp>
59 #include <com/sun/star/chart/XChartDocument.hpp>
60 #include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
61 #include <com/sun/star/chart2/XChartTypeContainer.hpp>
62 #include <com/sun/star/chart2/XChartDocument.hpp>
65 #include <oox/token/tokens.hxx>
66 #include <oox/token/namespaces.hxx>
76 using ::com::sun::star::uno::Reference;
77 using ::com::sun::star::uno::UNO_QUERY;
78 using ::com::sun::star::beans::XPropertySet;
79 using ::com::sun::star::drawing::XShape;
80 using ::oox::drawingml::ShapeExport;
81 using ::oox::vml::VMLExport;
86 mnScTab( rRoot.GetCurrScTab() ),
87 mrEscherEx( rEscherEx )
106 OSL_ENSURE(
maObjs.size() < 0xFFFF,
"XclExpObjList::Add: too much for Xcl" );
108 size_t nSize =
maObjs.size();
110 if ( nSize < 0xFFFF )
112 pObj->SetId( nSize+1 );
114 maObjs.push_back(std::move(pObj));
127 auto ret = std::move(
maObjs.back());
147 for (
const auto& rxObj :
maObjs )
148 rxObj->Save( rStrm );
156 bool IsFormControlObject(
const XclObj *rObj )
167 bool IsVmlObject(
const XclObj *rObj )
180 return static_cast<sal_Int32
>(std::count_if(rList.
begin(), rList.
end(),
181 [](
const std::unique_ptr<XclObj>& rxObj) {
return IsVmlObject( rxObj.get() ); }));
184 bool IsValidObject(
const XclObj& rObj )
193 uno::Reference<chart2::XChartDocument> xChartDoc(rChartObj.
GetChartDoc(), uno::UNO_QUERY);
197 uno::Reference<chart2::XDiagram> xDiagram = xChartDoc->getFirstDiagram();
201 uno::Reference<chart2::XCoordinateSystemContainer> xCooSysContainer(xDiagram, uno::UNO_QUERY);
202 if (!xCooSysContainer.is())
205 const uno::Sequence<uno::Reference<chart2::XCoordinateSystem>> xCooSysSeq = xCooSysContainer->getCoordinateSystems();
206 for (
const auto& rCooSys : xCooSysSeq)
208 Reference<chart2::XChartTypeContainer> xChartTypeCont(rCooSys, uno::UNO_QUERY);
209 if (!xChartTypeCont.is())
212 uno::Sequence<uno::Reference<chart2::XChartType>> xChartTypeSeq = xChartTypeCont->getChartTypes();
213 if (!xChartTypeSeq.hasElements())
224 std::vector<XclObj*> aList;
225 aList.reserve(rList.
size());
226 for (
const auto& rxObj : rList)
228 if (IsVmlObject(rxObj.get()) || !IsValidObject(*rxObj))
231 aList.push_back(rxObj.get());
237 sal_Int32 nDrawing = drawingml::DrawingML::getNewDrawingUniqueId();
243 "application/vnd.openxmlformats-officedocument.drawing+xml",
250 pDrawing->startElement(
FSNS( XML_xdr, XML_wsDr ),
255 sal_Int32 nShapeId = 1000;
256 for (
const auto& rpObj : aList)
259 if ( IsFormControlObject( rpObj ) )
262 if (pXclExpTbxControlObj)
268 rpObj->SaveXml(rStrm);
271 pDrawing->endElement(
FSNS( XML_xdr, XML_wsDr ) );
278 bool hasControls =
false;
279 for (
const auto& rxObj : rList)
281 if (IsFormControlObject(rxObj.get()))
295 rWorksheet->startElement(
FSNS(XML_mc, XML_AlternateContent),
297 rWorksheet->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"x14");
298 rWorksheet->startElement(XML_controls);
300 for (
const auto& rxObj : rList)
302 if (IsFormControlObject(rxObj.get()))
305 if (pXclExpTbxControlObj)
308 pXclExpTbxControlObj->
SaveSheetXml(rStrm, aIdFormControlPr);
313 rWorksheet->endElement(XML_controls);
314 rWorksheet->endElement(
FSNS(XML_mc, XML_Choice));
315 rWorksheet->endElement(
FSNS(XML_mc, XML_AlternateContent));
320 if( GetVmlObjectCount( rList ) == 0 )
323 sal_Int32 nDrawing = drawingml::DrawingML::getNewVMLUniqueId();
329 "application/vnd.openxmlformats-officedocument.vmlDrawing",
336 pVmlDrawing->startElement( XML_xml,
342 for (
const auto& rxObj : rList )
344 if( !IsVmlObject( rxObj.get() ) )
346 rxObj->SaveXml( rStrm );
349 pVmlDrawing->endElement( XML_xml );
364 SaveDrawingMLObjects( *
this, rStrm );
365 SaveVmlObjects( *
this, rStrm );
366 SaveFormControlObjects( *
this, rStrm );
373 mrEscherEx( rObjMgr.GetEscherEx() ),
374 mnObjType( nObjType ),
378 bFirstOnSheet( !rObjMgr.HasObj() ),
379 mbOwnEscher( bOwnEscher )
462 pXclStrm->WriteZeroBytes( 12 );
463 pXclStrm->EndRecord();
470 pXclStrm->EndRecord();
501 rtl_createUuid( aGUID,
nullptr,
false );
504 for(
int i = 0;
i < 16;
i++ )
508 rStrm << sal_uInt16(0);
528 if(
nullptr != pSdrCaptionObj)
536 , maScPos( rAddress )
537 , mpCaption( pCaption )
565 rPropOpt.
AddOpt( 0x0158, 0x00000000 );
586 sal_uInt32 nFlags = 0x000A0000;
587 ::set_flag( nFlags, sal_uInt32(2), !bVisible );
629 class VmlCommentExporter :
public VMLExport
641 using VMLExport::StartShape;
642 virtual sal_Int32 StartShape()
override;
643 using VMLExport::EndShape;
644 virtual void EndShape( sal_Int32 nShapeElement )
override;
653 , mpCaption( pCaption )
663 rProps.
AddOpt( ESCHER_Prop_fHidden, sal_uInt32(mbVisible) );
676 rProps.
AddOpt( ESCHER_Prop_fshadowObscured, 0x00030003 );
678 VMLExport::Commit( rProps, rRect );
681 sal_Int32 VmlCommentExporter::StartShape()
683 AddShapeAttribute( XML_type,
"#_x0000_t202" );
685 sal_Int32
nId = VMLExport::StartShape();
694 case SvxAdjust::Center:
696 case SvxAdjust::Right:
698 case SvxAdjust::Block:
721 void VmlCommentExporter::EndShape( sal_Int32 nShapeElement )
725 snprintf( pAnchor, 100,
"%" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64
", %" SAL_PRIdINT64,
727 sal_Int64(
maTo.Left()), sal_Int64(
maTo.Top()), sal_Int64(
maTo.Right()), sal_Int64(
maTo.Bottom()) );
733 pVmlDrawing->startElement(
FSNS(XML_x, XML_ClientData), XML_ObjectType,
"Note");
734 pVmlDrawing->singleElement(
FSNS(XML_x, XML_MoveWithCells));
735 pVmlDrawing->singleElement(
FSNS(XML_x, XML_SizeWithCells));
743 pVmlDrawing->singleElement(
FSNS(XML_x, XML_Visible));
744 pVmlDrawing->endElement(
FSNS( XML_x, XML_ClientData ) );
746 VMLExport::EndShape( nShapeElement );
752 aCommentExporter.AddSdrObject( *mpCaption );
798 sal_uInt16 nDropDownFlags = 0;
802 rStrm << sal_uInt32(0) << sal_uInt16(0) << sal_uInt16(0x0301) << sal_uInt16(0)
803 << nDropDownFlags << sal_uInt16( 20 ) << sal_uInt16( 130 );
848 mpString->AppendFormat( 0, nFontIx );
870 if( (4500_deg100 < nAngle) && (nAngle < 13500_deg100) )
872 else if( (22500_deg100 < nAngle) && (nAngle < 31500_deg100) )
890 OUString aParaText( rEditObj.
GetText( 0 ) );
891 if( !aParaText.isEmpty() )
895 if( aSet.GetItemState(
EE_PARA_JUST,
true, &pItem ) == SfxItemState::SET )
911 if( rItem.
GetValue() == css::text::WritingMode_TB_RL )
917 OSL_ENSURE(
mpString,
"XclTxo::SaveCont - missing string" );
920 sal_uInt16 nRunLen =
mpString->IsEmpty() ? 0 : (8 *
mpString->GetFormatsCount());
922 sal_uInt16 nFlags = 0;
928 rStrm <<
mpString->Len() << nRunLen << sal_uInt32( 0 );
949 for(
const auto& rFormat : rFormats )
950 rStrm << rFormat.mnChar << rFormat.mnFontIdx << sal_uInt32( 0 );
969 pRootStorage( rObjMgr.GetRoot().GetRootStorage().
get() )
980 OUString aStorageName(
"MBD" );
981 char aBuf[
sizeof(sal_uInt32) * 2 + 1 ];
983 sal_uInt32 nPictureId = sal_uInt32(reinterpret_cast<sal_uIntPtr>(
this) >> 2);
984 sprintf(
aBuf,
"%08X", static_cast< unsigned int >( nPictureId ) );
985 aStorageName += OUString::createFromAscii(
aBuf);
990 uno::Reference < embed::XEmbeddedObject > xObj( static_cast<const SdrOle2Obj&>(
rOleObj).GetObjRef() );
1015 rStrm << sal_uInt16(0x0002);
1027 sal_uInt16 nPadLen =
static_cast<sal_uInt16
>(
aName.GetSize() & 0x01);
1028 sal_uInt16 nFmlaLen =
static_cast< sal_uInt16
>( 12 +
aName.GetSize() + nPadLen );
1029 sal_uInt16 nSubRecLen = nFmlaLen + 6;
1033 << sal_uInt16( 5 ) << sal_uInt32( 0 ) <<
sal_uInt8( 2 )
1038 rStrm << nPictureId;
1091 awt::Point aTopLeft = rShape->getPosition();
1092 awt::Size aSize = rShape->getSize();
1101 sal_Int16 nHalfWidth = aSize.Width / 2;
1102 sal_Int16 nHalfHeight = aSize.Height / 2;
1105 aTopLeft.X = aSnapRect.
getX() + (aSnapRect.GetWidth() / 2) - nHalfWidth;
1106 aTopLeft.Y = aSnapRect.getY() + (aSnapRect.GetHeight() / 2) - nHalfHeight;
1111 if ((nRotation >= 4500_deg100 && nRotation < 13500_deg100) || (nRotation >= 22500_deg100 && nRotation < 31500_deg100))
1113 aTopLeft.X = aTopLeft.X - nHalfHeight + nHalfWidth;
1114 aTopLeft.Y = aTopLeft.Y - nHalfWidth + nHalfHeight;
1116 std::swap(aSize.Width, aSize.Height);
1121 tools::Rectangle aLocation( aTopLeft.X, aTopLeft.Y, aTopLeft.X + aSize.Width, aTopLeft.Y + aSize.Height );
1127 pDrawing->startElement(
FSNS(XML_xdr, XML_from));
1134 pDrawing->endElement(
FSNS( XML_xdr, XML_from ) );
1136 pDrawing->startElement(
FSNS(XML_xdr, XML_to));
1143 pDrawing->endElement(
FSNS( XML_xdr, XML_to ) );
1181 nResult = rRange.
Parse(rString, rDoc);
1182 if ( nResult & ScRefFlags::VALID )
1187 if ( nResult & ScRefFlags::VALID )
1199 if ( nResult & ScRefFlags::VALID )
1203 nResult = rAddress.
Parse(rString, rDoc);
1204 if ( nResult & ScRefFlags::VALID )
1209 if ( nResult & ScRefFlags::VALID )
1216 void transformURL(
const OUString& rOldURL, OUString& rNewURL,
const ScDocument& rDoc)
1218 if (rOldURL.startsWith(
"#"))
1223 OUString aAddressString = aURL.copy(1);
1226 ScRefFlags nResult = parseRange(aAddressString, aRange, rDoc);
1227 if ( nResult & ScRefFlags::VALID )
1230 rNewURL =
"#" + aString;
1236 nResult = parseAddress(aAddressString, aAddress, rDoc);
1237 if( nResult & ScRefFlags::VALID )
1240 rNewURL =
"#" + aString;
1259 transformURL(rURL, aNewURL,
mrDoc);
1265 return !rURL.startsWith(
"#");
1272 if( !
mxShape.is() ||
mxShape->getShapeType() ==
"com.sun.star.drawing.GroupShape" )
1293 ShapeExport aDML(XML_xdr, pDrawing,
nullptr, &rStrm, drawingml::DOCUMENT_XLSX);
1294 auto pURLTransformer = std::make_shared<ScURLTransformer>(*mpDoc);
1295 aDML.SetURLTranslator(pURLTransformer);
1297 pDrawing->startElement(
FSNS( XML_xdr, XML_twoCellAnchor ),
1306 pDrawing->singleElement(
FSNS( XML_xdr, XML_clientData)
1310 pDrawing->endElement(
FSNS( XML_xdr, XML_twoCellAnchor ) );
1318 << sal_uInt32(0x06) ;
1349 sUnicodeName( rRootData.pER->GetTabInfo().GetScTabName( _nTab ) )
1355 sUnicodeName( rString )
1364 rStrm << sal_uInt32(0);
1381 "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",
1387 XML_sheetId, OString::number( ( nTab+1 ) ),
1388 XML_state,
nGrbit == 0x0000 ?
"visible" :
"hidden",
1389 FSNS( XML_r, XML_id ), sId.toUtf8() );
1482 bool bContLoop =
true;
1488 for(
size_t nRange = 0; (nRange < pRList->
size()) && bContLoop; nRange++ )
1490 const ScRange & rRange = (*pRList)[nRange];
1491 for( nRow = rRange.
aStart.
Row(); (nRow <= rRange.
aEnd.
Row()) && bContLoop; nRow++ )
1492 for( nCol = rRange.
aStart.
Col(); (nCol <= rRange.
aEnd.
Col()) && bContLoop; nCol++ )
1496 rDoc.
GetValue( nCol, nRow, nTab, fVal );
1497 sText = ::rtl::math::doubleToUString( fVal,
1498 rtl_math_StringFormat_Automatic,
1499 rtl_math_DecimalPlaces_Max,
1504 sText = rDoc.
GetString(nCol, nRow, nTab);
1505 bContLoop =
Append( static_cast<sal_uInt16>(nCol),
1506 static_cast<sal_uInt16>(nRow), sText );
1540 for(
const auto& rCell :
aCells )
1541 rCell.WriteAddress( rStrm );
1542 for(
const auto& rCell : aCells )
1543 rCell.WriteText( rStrm );
1561 rWorkbook->startElement( XML_scenario,
1565 XML_count, OString::number(
aCells.size() ).getStr(),
1569 for(
const auto& rCell :
aCells )
1570 rCell.SaveXml( rStrm );
1572 rWorkbook->endElement( XML_scenario );
1582 SCTAB nFirstTab = nTab + 1;
1583 SCTAB nNewTab = nFirstTab;
1587 aScenes.emplace_back( rRoot, nNewTab );
1590 nActive = static_cast<sal_uInt16>(nNewTab - nFirstTab);
1601 rStrm << static_cast<sal_uInt16>(
aScenes.size())
1613 rScenario.Save( rStrm );
1622 rWorkbook->startElement( XML_scenarios,
1623 XML_current, OString::number(
nActive ),
1624 XML_show, OString::number(
nActive )
1629 rScenario.SaveXml( rStrm );
1631 rWorkbook->endElement( XML_scenarios );
1646 struct XclExpTabProtectOption
1657 static const XclExpTabProtectOption aTable[] =
1684 for (
int i = 0; aTable[
i].nMask != 0x0000; ++
i)
1693 sal_uInt16 nBytes = 0x0867;
1696 for (
int i = 0;
i < 9; ++
i)
1697 rStrm << static_cast<unsigned char>(0);
1704 rStrm << nBytes << nBytes;
1715 maEnhancedProtection( rProt )
1721 sal_uInt16
const nRecordType = 0x0868;
1722 rStrm << nRecordType;
1733 aRefs.
Write( rStrm,
true, nCref);
1741 SAL_WARN_IF( bSDContainer && nCbSD < 20,
"sc.filter",
1742 "XclExpSheetEnhancedProtection A flag indicates container but cbSD < 20");
1743 SAL_WARN_IF( !bSDContainer && nCbSD > 0,
"sc.filter",
1744 "XclExpSheetEnhancedProtection A flag indicates no container but cbSD > 0");
1841 rStrm << static_cast<sal_uInt16>(0x0001);
1845 sal_uInt16 nStdEnc = 0x0001;
1846 rStrm << nStdEnc << nStdEnc;
1852 xEnc->GetDocId(pnDocId);
1853 xEnc->GetSalt(pnSalt);
1854 xEnc->GetSaltDigest(pnSaltHash);
1856 rStrm.
Write(pnDocId, 16);
1857 rStrm.
Write(pnSalt, 16);
1858 rStrm.
Write(pnSaltHash, 16);
1897 0x04, 0x00, 0x00,
'C',
'a',
'l',
'c', 0x20,
1898 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1899 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1900 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1901 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1902 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1903 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1904 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1905 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1906 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1907 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1908 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1909 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
1910 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
1912 for (std::size_t
i = 0;
i <
sizeof(aData); ++
i)
1918 mnPasswordHash( nPasswordHash ),
1919 mbRecommendReadOnly( bRecommendReadOnly )
1949 rStrm << static_cast<sal_uInt16>(0x0000);
1963 rStrm << static_cast<sal_uInt16>(0x0000);
1967 0xC1, 0x01, 0x00, 0x00, 0x54, 0x8D, 0x01, 0x00
1976 0x63, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1977 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
void WriteAttributes(sal_Int32 nAttribute, Str &&value, Args &&...rest)
void ConvertRangeList(XclRangeList &rXclRanges, const ScRangeList &rScRanges, bool bWarn)
Converts the passed Calc cell range list to an Excel cell range list.
#define ESCHER_DgContainer
This class stores an unformatted or formatted string for Excel export.
virtual sal_uInt16 GetNum() const override
virtual sal_uInt16 GetNum() const override
std::unique_ptr< XclObj > pop_back()
Remove last element in the list.
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
std::size_t Write(const void *pData, std::size_t nBytes)
Writes nBytes bytes from memory.
static OString ToOString(const Color &rColor)
const size_t count(pCandidateA->getBorderLines().size())
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
virtual void SaveXml(XclExpXmlStream &rStrm) override
const sal_uInt16 EXC_ID_OBJSBS
Radio button group data.
rtl_TextEncoding GetTextEncoding() const
Returns the text encoding to import/export byte strings.
sal_uInt16 mnPasswordHash
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
XclIteration(const ScDocument &)
const sal_uInt16 EXC_ID_OBJEND
const sal_uInt16 EXC_OBJ_ORIENT_90CCW
Stacked top to bottom.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record.
const sal_uInt16 EXC_ID_INTERFACEHDR
#define ESCHER_Prop_fshadowObscured
virtual sal_uInt16 GetNum() const override
void SetEncrypter(XclExpEncrypterRef const &xEncrypter)
const XclExpRoot & GetRoot() const
Returns the filter root data.
static sax_fastparser::FSHelperPtr WriteElement(sax_fastparser::FSHelperPtr pStream, sal_Int32 nElement, const T &value)
std::unique_ptr< XclExpMsoDrawing > pClientTextbox
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
Represents the position (anchor) of a note object.
SvxAdjust GetAdjust() const
const sal_uInt16 EXC_OBJTYPE_UNKNOWN
This class is used to export Excel record streams.
XclExpDffAnchorBase * CreateDffAnchor(const SdrObject &rSdrObj) const
Creates a new DFF client anchor object and calculates the anchor position of the passed object...
ScRangeListRef maRangeList
void WriteBuffer(XclExpStream &rStrm) const
Writes the raw character buffer.
XclStrFlags
Flags used to specify import/export mode of strings.
sal_uInt8 mnHorAlign
Text rotation.
const sal_uInt16 EXC_OBJ_ORIENT_NONE
#define OLE_STARIMPRESS_2_POWERPOINT
virtual ~XclExpProt4Rev() override
void SetVerAlign(sal_uInt8 nVerAlign)
XclTxo(const OUString &rString, sal_uInt16 nFontIx)
const sal_uInt16 EXC_OBJ_PIC_SYMBOL
virtual void SaveCont(XclExpStream &rStrm) override
const sal_uInt16 EXC_ID_TXO
SC_DLLPUBLIC bool IsActiveScenario(SCTAB nTab) const
virtual void SaveXml(XclExpXmlStream &rStrm) override
sheet protection state container
XclExpString GetName() const
const Type & GetValue() const
Returns the value of the record.
virtual void WriteSubRecs(XclExpStream &rStrm) override
SotStorage * pRootStorage
const sal_uInt16 EXC_ID_OBJPICTFMLA
Option flags.
XclExpFileEncryption(const XclExpRoot &rRoot)
static SdrObject * getSdrObjectFromXShape(const css::uno::Reference< css::uno::XInterface > &xInt)
void SetText(const XclExpRoot &rRoot, const SdrTextObj &rObj)
actually writes ESCHER_ClientTextbox
void Commit(SvStream &rSt, sal_uInt16 nVersion=3, sal_uInt16 nRecType=ESCHER_OPT)
const sal_uInt16 EXC_ID_OBJCMO
Check box/radio button cell link.
XclExpFileSharing(const XclExpRoot &rRoot, sal_uInt16 nPasswordHash, bool bRecommendReadOnly)
#define OLE_STARCALC_2_EXCEL
const sal_uInt16 EXC_OBJ_DROPDOWN_FILTERED
virtual std::size_t GetLen() const override
#define ESCHER_ShpInst_Ellipse
sal_uInt64 Seek(sal_uInt64 nPos)
std::shared_ptr< XclExpBiff8Encrypter > XclExpEncrypterRef
virtual ~XclExpFileEncryption() override
void WriteAddress(XclExpStream &rStrm) const
virtual void SaveXml(XclExpXmlStream &rStrm) override
void SetHorAlign(sal_uInt8 nHorAlign)
constexpr TypedWhichId< SvxAdjustItem > EE_PARA_JUST(EE_PARA_START+15)
bool IsImpress2PowerPoint() const
static const char * GetEditAs(const XclObjAny &rObj)
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
const sal_uInt16 EXC_OBJ_PIC_MANUALSIZE
virtual void AddShape(sal_uInt32 nShpInstance, ShapeFlag nFlagIds, sal_uInt32 nShapeID=0)
std::shared_ptr< T > make_shared(Args &&...args)
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
SC_DLLPUBLIC ScRange GetRange(SCTAB nTab, const tools::Rectangle &rMMRect, bool bHiddenAsZero=true) const
bool IsMath2MathType() const
XclExpMsoDrawing * pMsodrawing
EmbeddedObjectRef * pObject
void SaveTextRecs(XclExpStream &rStrm)
virtual sal_uInt16 GetNum() const override
#define ESCHER_ClientTextbox
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
virtual sal_uInt16 GetNum() const override
void SetPrintable(bool b)
sal_uInt16 GetIterCount() const
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
virtual std::size_t GetLen() const override
virtual void WriteSubRecs(XclExpStream &rStrm)
virtual void SaveCont(XclExpStream &rStrm) override
const sal_uInt16 EXC_ID_OBJNTS
Scroll bar data.
sal_uInt16 mnRotation
Text and formatting data.
virtual const tools::Rectangle & GetSnapRect() const
virtual void SaveXml(XclExpXmlStream &rStrm) override
void SetEscherShapeType(sal_uInt16 nType)
const sal_uInt16 EXC_ID_OBJFLAGS
Clipboard format.
virtual sal_uInt16 GetNum() const override
uno::Reference< drawing::XShape > const mxShape
const sal_uInt16 EXC_OBJTYPE_ARC
SvStream & GetStream() const
XclExpInterfaceHdr(sal_uInt16 nCodePage)
Access to global data from other classes.
const sal_uInt16 EXC_FONT_APP
void WriteText(XclExpStream &rStrm) const
bool isOptionEnabled(Option eOption) const
const css::uno::Reference< css::chart::XChartDocument > & GetChartDoc() const
SotStorage * OpenSotStorage(const OUString &rEleName, StreamMode=StreamMode::STD_READWRITE, bool transacted=true)
OUString getNamespaceURL(sal_Int32 nNSID) const
Record which exports a memory data array.
void CreateFillProperties(const css::uno::Reference< css::beans::XPropertySet > &, bool bEdge, bool bTransparentGradient=false)
virtual void SaveXml(XclExpXmlStream &rStrm) override
const sal_uInt16 EXC_ID_CONT
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
#define ESCHER_ShpInst_RoundRectangle
void ImplWriteAnchor(const SdrObject *pSdrObj, const tools::Rectangle *pChildAnchor)
css::text::WritingMode GetValue() const
SC_DLLPUBLIC OUString GetString(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScInterpreterContext *pContext=nullptr) const
const sal_uInt16 EXC_OBJTYPE_GROUP
virtual std::size_t GetLen() const override
void PushStream(sax_fastparser::FSHelperPtr const &aStream)
const OUString & GetUserName() const
Returns the current user name.
void SaveSheetXml(XclExpXmlStream &rStrm, const OUString &aIdFormControlPr) const
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
#define ESCHER_ShpInst_HostControl
const OptionalValueType maFrom
bool IsCalc2Excel() const
const SfxItemSet & GetParaAttribs(sal_Int32 nPara) const
#define ESCHER_ShpInst_Line
#define ESCHER_Prop_LockAgainstGrouping
::std::vector< XclFormatRun > XclFormatRunVec
A vector with all formatting runs for a rich-string.
XclCalccount(const ScDocument &)
XclRefmode(const ScDocument &)
const sal_uInt8 EXC_OBJ_HOR_JUSTIFY
sax_fastparser::FSHelperPtr & GetCurrentStream()
virtual void SaveCont(XclExpStream &rStrm) override
OUString getRelationship(Relationship eRelationship)
OUString GetText(sal_Int32 nPara) const
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclCodename(const OUString &)
const sal_uInt16 EXC_ISFPROTECTION
void SetSliceSize(sal_uInt16 nSize)
Sets data slice length.
void UpdateDffFragmentEnd()
Called after some data has been written to the DFF stream, to update the end position of the DFF frag...
constexpr OUStringLiteral aData
std::unique_ptr< XclExpMsoDrawing > pSolverContainer
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
SC_DLLPUBLIC double GetValue(const ScAddress &rPos) const
last item - used to resize the vector
SC_DLLPUBLIC const ScDocOptions & GetDocOptions() const
virtual sal_uInt16 GetNum() const override
#define ESCHER_Prop_fNoLineDrawDash
const sal_uInt8 EXC_OBJ_VER_JUSTIFY
XclObjAny(XclExpObjectManager &rObjMgr, const css::uno::Reference< css::drawing::XShape > &rShape, ScDocument *pDoc)
virtual void SaveCont(XclExpStream &rStrm) override
static const char * lcl_GetHorizAlignFromItemSetChar(const SfxItemSet &rItemSet)
const sal_uInt16 EXC_OBJTYPE_DRAWING
#define ESCHER_ShpInst_TextBox
virtual void SaveCont(XclExpStream &rStrm) override
constexpr TypedWhichId< SvxWritingModeItem > SDRATTR_TEXTDIRECTION(SDRATTR_NOTPERSIST_FIRST+34)
static const SdrObject * GetSdrObject(const css::uno::Reference< css::drawing::XShape > &rXShape)
const sal_uInt16 EXC_OBJTYPE_DROPDOWN
virtual ~XclExpProt4RevPass() override
const sal_uInt8 EXC_OBJ_HOR_RIGHT
A record with a single value of type Type.
const sal_uInt16 EXC_OBJ_DROPDOWN_SIMPLE
Dropdown listbox with editable text.
ScEnhancedProtection maEnhancedProtection
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.
static SvtFilterOptions & Get()
static const char * lcl_GetVertAlignFromItemSetChar(const SfxItemSet &rItemSet)
XclExpAddressConverter & GetAddressConverter() const
Returns the address converter.
sal_uInt64 GetSvStreamPos() const
Returns the absolute position of the system stream.
SC_DLLPUBLIC const ScRangeList * GetScenarioRanges(SCTAB nTab) const
const sal_uInt16 EXC_OBJ_ORIENT_90CW
90 degr. counterclockwise.
SVXCORE_DLLPUBLIC SdrObject * GetSdrObjectFromXShape(const css::uno::Reference< css::drawing::XShape > &xShape)
const sal_uInt16 EXC_OBJTYPE_NOTE
virtual std::size_t GetLen() const override
const sal_uInt8 EXC_OBJ_VER_CENTER
void SaveXml(XclExpXmlStream &rStrm) const
ExcEScenario(const XclExpRoot &rRoot, SCTAB nTab)
const OptionalValueType maTo
ExcEScenarioManager(const XclExpRoot &rRoot, SCTAB nTab)
static ScAnchorType GetAnchorType(const SdrObject &)
const SdrObject & rOleObj
virtual void SaveCont(XclExpStream &rStrm) override
constexpr TypedWhichId< SdrTextVertAdjustItem > SDRATTR_TEXT_VERTADJUST(SDRATTR_MISC_FIRST+8)
SC_DLLPUBLIC OUString Format(const ScDocument &rDocument, ScRefFlags nFlags=ScRefFlags::ZERO, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, bool bFullAddressNotation=false) const
Returns string with formatted cell range from aStart to aEnd, according to provided address conventio...
void setSuppressGetBitmap(bool bNew)
Represents an OBJ record for a TBX form control.
virtual std::size_t GetLen() const override
const sal_uInt8 EXC_OBJ_HOR_CENTER
void setSuppressGetBitmapFromXclObjComment(SdrCaptionObj *pSdrCaptionObj, bool bValue)
sal_Int64 convertHmmToEmu(sal_Int32 nValue)
Represents the position (anchor) of a cell dropdown object.
A 2D cell range address list with Excel column and row indexes.
virtual void WriteSubRecs(XclExpStream &rStrm) override
virtual void SaveCont(XclExpStream &rStrm) override
static void WriteFromTo(XclExpXmlStream &rStrm, const XclObjAny &rObj)
const sal_uInt8 nDataBookExt[]
void EndRecord()
Checks and corrects real record length.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpSheetProtectOptions(const XclExpRoot &rRoot, SCTAB nTab)
virtual void SaveXml(XclExpXmlStream &rStrm) override
ExcBundlesheet8(const RootData &rRootData, SCTAB nTab)
const sal_uInt16 EXC_ID_OBJ
sal_uInt16 GetObjType() const
virtual ~XclExpObjList() override
Container for the Excel EnhancedProtection feature.
void SetMergedItem(const SfxPoolItem &rItem)
#define ESCHER_Prop_FitTextToShape
bool Append(sal_uInt16 nCol, sal_uInt16 nRow, const OUString &rTxt)
virtual ~ExcEScenarioManager() override
sal_uInt8 mnVerAlign
Horizontal alignment.
SC_DLLPUBLIC tools::Rectangle GetMMRect(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, bool bHiddenAsZero=true) const
const sal_uInt16 EXC_OBJTYPE_RECTANGLE
const sal_uInt8 EXC_STRF_16BIT
bool IsWriter2WinWord() const
XclObjOle(XclExpObjectManager &rObjMgr, const SdrObject &rObj)
XclExpObjList(const XclExpRoot &rRoot, XclEscherEx &rEscherEx)
#define XESTRING_TO_PSZ(s)
const sal_uInt8 EXC_OBJ_VER_BOTTOM
void CopyFromStream(SvStream &rInStrm, sal_uInt64 nBytes=STREAM_SEEK_TO_END)
Copies nBytes bytes from current position of the stream rInStrm.
SC_DLLPUBLIC bool HasValueData(SCCOL nCol, SCROW nRow, SCTAB nTab) const
XclDelta(const ScDocument &)
virtual ~XclObjAny() override
std::shared_ptr< FastSerializerHelper > FSHelperPtr
std::vector< std::unique_ptr< XclObj > > maObjs
bool GetBool() const
Returns the Boolean value of the record.
const XclExpRoot & mrRoot
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
#define ESCHER_Prop_shadowColor
std::unique_ptr< XclTxo > pTxo
virtual void WriteSubRecs(XclExpStream &rStrm) override
#define ESCHER_Prop_fillBackColor
virtual Degree100 GetRotateAngle() const override
static OUString GetStreamName(const char *sStreamDir, const char *sStream, sal_Int32 nId)
SC_DLLPUBLIC void GetScenarioData(SCTAB nTab, OUString &rComment, Color &rColor, ScScenarioFlags &rFlags) const
One or more MSODRAWING records contain the DFF stream data for a drawing shape.
const sal_uInt16 EXC_OBJTYPE_CHECKBOX
#define ESCHER_Prop_fillColor
virtual std::size_t GetLen() const override
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
static SC_DLLPUBLIC const LocaleDataWrapper * getLocaleDataPtr()
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
#define ESCHER_SpContainer
static sal_uInt8 lcl_GetHorAlignFromItemSet(const SfxItemSet &rItemSet)
OUString SaveControlPropertiesXml(XclExpXmlStream &rStrm) const
void WriteZeroBytesToRecord(std::size_t nBytes)
virtual void CloseContainer()
sal_uInt16 Len() const
Returns the character count of the string.
#define ESCHER_ShpInst_PictureFrame
SC_DLLPUBLIC bool IsScenario(SCTAB nTab) const
void AddAtom(sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion=0, int nRecInstance=0)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
#define SAL_WARN_IF(condition, area, stream)
#define ESCHER_ShpInst_Rectangle
void AssignByte(std::u16string_view rString, rtl_TextEncoding eTextEnc, XclStrFlags nFlags=XclStrFlags::NONE, sal_uInt16 nMaxLen=EXC_STR_MAXLEN)
Assigns an unformatted string, converts this object to a BIFF2-BIFF7 byte string. ...
const sal_uInt8 EXC_OBJ_VER_TOP
sal_uInt16 Add(std::unique_ptr< XclObj >)
return: 1-based ObjId count>=0xFFFF: Obj will be deleted, return 0
std::size_t GetSize() const
Returns the byte count the whole string will take on export.
const sal_uInt16 EXC_ID_FILESHARING
#define ESCHER_Prop_fNoFillHitTest
void setShapeId(sal_Int32 aShapeId)
virtual void OpenContainer(sal_uInt16 nEscherContainer, int nRecInstance=0)
void ExportOLEObject(svt::EmbeddedObjectRef const &rObj, SotStorage &rDestStg)
virtual std::size_t GetLen() const override
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
sal_uInt32 mnPasswordVerifier
virtual sal_uInt16 GetNum() const override
const SfxItemSet & GetMergedItemSet() const
const sal_uInt16 EXC_ID_OBJLBSDATA
Check box/radio button data.
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)
css::uno::Reference< css::drawing::XShape > mxShape
::std::vector< sal_uInt8 > maSecurityDescriptor
virtual sal_uInt32 EnterGroup(const OUString &rShapeName, const tools::Rectangle *pBoundRect)
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument &, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, ScAddress::ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, const OUString *pErrRef=nullptr)
std::unique_ptr< XclExpMsoDrawing > pMsodrawingPerSheet
void WriteDffData(EscherEx &rEscherEx) const
Writes the DFF client anchor structure with the current anchor position.
virtual ~XclObj() override
virtual sal_uInt16 GetNum() const override
double GetIterEps() const
void AddOpt(sal_uInt16 nPropID, bool bBlib, sal_uInt32 nSizeReduction, SvMemoryStream &rStream)
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
const sal_uInt8 EXC_OBJ_HOR_LEFT
const sal_uInt16 EXC_OBJTYPE_CHART
const sal_uInt8 nDataRecalcId[]
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
constexpr sal_Int32 FSNS(sal_Int32 namespc, sal_Int32 element)
virtual ~XclObjOle() override
const sal_uInt16 EXC_OBJTYPE_LINE
SVXCORE_DLLPUBLIC css::uno::Reference< css::drawing::XShape > GetXShapeForSdrObject(SdrObject *pObj)
This class provides methods to create an XclExpString.
void StartRecord(sal_uInt16 nRecId, std::size_t nRecSize)
Starts a new record: writes header data, stores calculated record size.
static sal_uInt8 lcl_GetVerAlignFromItemSet(const SfxItemSet &rItemSet)
bool HasPendingDffData()
Returns true, if there is more data left in the DFF stream than owned by the last MSODRAWING record...
std::vector< ExcEScenario > aScenes
const sal_uInt16 EXC_OBJTYPE_TEXT
XclObj(XclExpObjectManager &rObjMgr, sal_uInt16 nObjType, bool bOwnEscher=false)
true = Escher part created on the fly.
const sal_uInt16 EXC_OBJTYPE_OVAL
void AddChildAnchor(const tools::Rectangle &rRectangle)
virtual Degree100 GetRotateAngle() const
virtual ~XclExpWriteAccess() override
void EnableEncryption(bool bEnable=true)
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument &, const Details &rDetails=detailsOOOa1, ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, sal_Int32 *pSheetEndPos=nullptr, const OUString *pErrRef=nullptr)
virtual ~XclObjDropDown() override
virtual ~XclExpInterfaceEnd() override
#define OLE_STARMATH_2_MATHTYPE
#define ESCHER_Prop_fPrint
const XclExpRoot & GetRoot() const
Returns the filter root data.
#define ESCHER_ShpInst_Arc
virtual void SaveXml(XclExpXmlStream &rStrm) override
bool GetOpt(sal_uInt16 nPropertyID, sal_uInt32 &rPropValue) const
const css::uno::Reference< css::drawing::XShape > & GetShape() const
virtual void SaveCont(XclExpStream &rStrm) override
const sal_uInt16 EXC_OBJTYPE_PICTURE
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
virtual std::size_t GetLen() const override
static void lcl_FillProps(EscherPropertyContainer &rPropOpt, SdrObject *pCaption, bool bVisible)
void WriteFlagField(XclExpStream &rStrm) const
Writes the string flags field (1 byte).
XclExpSheetEnhancedProtection(const XclExpRoot &rRoot, const ScEnhancedProtection &rProt)
XclExpMsoDrawing * GetMsodrawingPerSheet()
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
void EndSheet()
close groups and DgContainer opened in ctor
std::size_t GetBufferSize() const
Returns the byte count the character buffer will take on export.
std::size_t GetStringBytes() const
std::vector< ExcEScenarioCell > aCells
ExcEScenarioCell(sal_uInt16 nC, sal_uInt16 nR, const OUString &rTxt)
const XclExpRoot & mrRoot
#define OLE_STARWRITER_2_WINWORD
void Write(XclExpStream &rStrm, bool bCol16Bit=true, sal_uInt16 nCountInStream=0) const
const sal_uInt16 EXC_ID_OBJCF
Group marker.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
virtual std::size_t GetLen() const override
Base class for single records with any content.
#define ESCHER_Prop_lTxid
Record which contains a Boolean value.
ScDetectiveObjType GetDetectiveObjectType(SdrObject *pObject, SCTAB nObjTab, ScAddress &rPosition, ScRange &rSource, bool &rRedLine)
const sal_uInt16 EXC_ID_OBJGMO
Button data.
virtual std::size_t GetLen() const override
#define ESCHER_ClientData
XclObjDropDown(XclExpObjectManager &rObjMgr, const ScAddress &rPos, bool bFilt)
virtual void SaveCont(XclExpStream &rStrm) override
void WriteZeroBytes(std::size_t nBytes)
Writes a sequence of nBytes zero bytes (respects slice setting).
void AddRecSize(std::size_t nRecSize)
Adds a size value to the record size prediction.
SC_DLLPUBLIC const ScTableProtection * GetTabProtection(SCTAB nTab) const
static OUString decode(OUString const &rText, DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)