open/save docx tblCaption,tblDescription and xlsx altText, altTextSummary

This commit is contained in:
konovalovsergey
2017-01-20 13:49:03 +03:00
parent dac6ae2e48
commit 69e8a6501e
11 changed files with 175 additions and 4 deletions

View File

@ -31,6 +31,7 @@
*/
#include "DrawingExt.h"
#include "../../XlsxFormat/Worksheets/Sparkline.h"
#include "../../XlsxFormat/Table/Table.h"
#include "../Diagram/DiagramData.h"
namespace OOX
@ -43,6 +44,7 @@ namespace OOX
if ((m_sUri.IsInit()) && (*m_sUri == L"{63B3BB69-23CF-44E3-9099-C40C66FF867C}" ||
*m_sUri == L"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}" ||
*m_sUri == L"{504A1905-F514-4f6f-8877-14C23A59335A}" ||
*m_sUri == L"http://schemas.microsoft.com/office/drawing/2008/diagram"))
{
int nCurDepth = oReader.GetDepth();
@ -61,6 +63,10 @@ namespace OOX
{
m_oDataModelExt = oReader;
}
else if (sName == _T("table"))
{
m_oAltTextTable = oReader;
}
}
}
else
@ -99,6 +105,12 @@ namespace OOX
m_oSparklineGroups->toXML(writer);
sResult += writer.GetData().c_str();
}
if(m_oAltTextTable.IsInit())
{
NSStringUtils::CStringBuilder writer;
m_oAltTextTable->toXML(writer);
sResult += writer.GetData().c_str();
}
sResult += _T("</");
sResult += sNamespace;

View File

@ -41,6 +41,7 @@ namespace OOX
namespace Spreadsheet
{
class CSparklineGroups;
class CAltTextTable;
}
namespace Drawing
{
@ -194,6 +195,7 @@ namespace OOX
nullable<CCompatExt> m_oCompatExt;
nullable<OOX::Spreadsheet::CSparklineGroups> m_oSparklineGroups;
nullable<CDataModelExt> m_oDataModelExt;
nullable<OOX::Spreadsheet::CAltTextTable> m_oAltTextTable;
};
//--------------------------------------------------------------------------------
// COfficeArtExtensionList 20.1.2.2.15 (Part 1)

View File

@ -41,6 +41,57 @@ namespace OOX
{
namespace Spreadsheet
{
class CAltTextTable : public WritingElement
{
public:
WritingElementSpreadsheet_AdditionConstructors(CAltTextTable)
CAltTextTable()
{
}
virtual ~CAltTextTable()
{
}
public:
virtual std::wstring toXML() const
{
return _T("");
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const
{
writer.WriteString(L"<x14:table");
WritingStringNullableAttrEncodeXmlString(L"altText", m_oAltText, m_oAltText.get());
WritingStringNullableAttrEncodeXmlString(L"altTextSummary", m_oAltTextSummary, m_oAltTextSummary.get());
writer.WriteString(L"/>");
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual EElementType getType () const
{
return et_AltTextTable;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
// Читаем атрибуты
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("altText"), m_oAltText )
WritingElement_ReadAttributes_Read_if ( oReader, _T("altTextSummary"), m_oAltTextSummary )
WritingElement_ReadAttributes_End( oReader )
}
public:
nullable<std::wstring > m_oAltText;
nullable<std::wstring > m_oAltTextSummary;
};
class CTableStyleInfo : public WritingElement
{
public:
@ -315,7 +366,10 @@ namespace OOX
m_oTableColumns->toXML(writer);
if(m_oTableStyleInfo.IsInit())
m_oTableStyleInfo->toXML(writer);
if(m_oExtLst.IsInit())
{
writer.WriteString(m_oExtLst->toXMLWithNS(_T("")));
}
writer.WriteString(L"</table>");
}
}
@ -339,6 +393,8 @@ namespace OOX
m_oTableColumns = oReader;
else if ( _T("tableStyleInfo") == sName )
m_oTableStyleInfo = oReader;
else if (_T("extLst") == sName)
m_oExtLst = oReader;
}
}
@ -372,6 +428,8 @@ namespace OOX
nullable<CSortState > m_oSortState;
nullable<CTableColumns > m_oTableColumns;
nullable<CTableStyleInfo > m_oTableStyleInfo;
nullable<OOX::Drawing::COfficeArtExtensionList> m_oExtLst;
};
class CTablePart : public WritingElement
{

View File

@ -385,6 +385,7 @@ namespace Spreadsheet
et_TableColumns,
et_TableColumn,
et_TableStyleInfo,
et_AltTextTable,
et_SortState,
et_SortCondition,
et_Autofilter,