Commit 1d16f4ab authored by ElenaSubbotina's avatar ElenaSubbotina

XlsFormat - convert piot cache

parent 118f1c57
......@@ -170,7 +170,7 @@ int TxO::serialize (std::wostream & _stream)
CP_XML_WRITER(_stream)
{
for (int i = 0 ; i < TxOruns.rgTxoRuns.size(); i++)
for (size_t i = 0 ; i < TxOruns.rgTxoRuns.size(); i++)
{
Run *run = dynamic_cast<Run*>(TxOruns.rgTxoRuns[i].get());
if (run == NULL) continue;
......
......@@ -294,7 +294,7 @@ void ChartSheetSubstream::recalc(CHARTFORMATS* charts)
int iCrt = -1;
for (int i = 0 ; i < charts->m_arSERIESFORMAT.size(); i++)
for (size_t i = 0 ; i < charts->m_arSERIESFORMAT.size(); i++)
{
SERIESFORMAT * series = dynamic_cast<SERIESFORMAT *>(charts->m_arSERIESFORMAT[i].get());
if (series == NULL) continue;
......@@ -641,8 +641,7 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
{
CP_XML_NODE(L"c:plotArea")
{
for (int i = 0; i < chart_formats->m_arAXISPARENT.size(); i++)
for (size_t i = 0; i < chart_formats->m_arAXISPARENT.size(); i++)
{
AXISPARENT* parent = dynamic_cast<AXISPARENT*> (chart_formats->m_arAXISPARENT[i].get());
ax_parent = dynamic_cast<AxisParent*> (parent->m_AxisParent.get());
......@@ -751,7 +750,7 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
series->serialize_legend(stream_legend_entries, it->second[i]);
}
for (int i = 0 ; i < crt->m_arCrtLine.size(); i++)
for (size_t i = 0 ; i < crt->m_arCrtLine.size(); i++)
{
CrtLine* crtLine = dynamic_cast<CrtLine*>(crt->m_arCrtLine[i].get());
if (crtLine == NULL) continue;
......@@ -1068,7 +1067,7 @@ int ChartSheetSubstream::serialize_ser (std::wstring sNodeSer, std::wostream & _
SIIndex * series_cash = NULL;
int type_val = 0;
for (int i = 0; (series_data) && (i < series_data->m_arSIIndex.size()); i++)
for (size_t i = 0; (series_data) && (i < series_data->m_arSIIndex.size()); i++)
{
SIIndex * si_in = dynamic_cast<SIIndex *>(series_data->m_arSIIndex[i].get());
......
......@@ -59,6 +59,7 @@
#include "../XlsFormat/Logic/Biff_unions/BACKGROUND.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTVIEW.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTCACHE.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTCACHEDEFINITION.h"
#include <Logic/Biff_records/BkHim.h>
#include <Logic/Biff_records/HLink.h>
......@@ -1921,4 +1922,16 @@ void XlsConverter::convert(XLS::PIVOTCACHEDEFINITION * pivot_cached)
{
if (pivot_cached == NULL) return;
xlsx_context->start_pivot_cache();
pivot_cached->serialize(xlsx_context->current_pivot_cache().definitions());
//if (pivot_cached->is_records())//??
{
xlsx_context->current_pivot_cache().isRecordsPresent = true;
//pivot_cached->serialize_records(xlsx_context->current_pivot_cache().records());
}
xlsx_context->end_pivot_cache();
}
\ No newline at end of file
......@@ -172,24 +172,16 @@ void rels_files::add(std::wstring const & Id,
{
return add(relationship(Id, Type, Target, TargetMode));
}
///////////////////////////////////////////
//----------------------------------------------------------------------------------------
chart_content::chart_content() : rels_file_(rels_file::create(L""))
{
{
}
_CP_PTR(chart_content) chart_content::create()
{
return boost::make_shared<chart_content>();
}
//void chart_content::add_rel(relationship const & r)
//{
// rels_->get_rels().add(r);
//}
///////////////////////////////////////////
//----------------------------------------------------------------------------------------
element_ptr simple_element::create(const std::wstring & FileName, const std::wstring & Content)
{
return boost::make_shared<simple_element>(FileName, Content);
......
......@@ -111,7 +111,7 @@ private:
class rels_file;
typedef boost::shared_ptr<rels_file> rels_file_ptr;
/// \class rels_file
//------------------------------------------------------------------------
class rels_file : public element
{
public:
......@@ -132,7 +132,7 @@ private:
rels rels_;
};
/// \class rels_files
//------------------------------------------------------------------------
class rels_files : public element
{
public:
......@@ -150,9 +150,7 @@ private:
rels_file_ptr rels_file_;
};
////////////////////////////////////////
///\class chart_files
//------------------------------------------------------------------------
class chart_content;
typedef _CP_PTR(chart_content) chart_content_ptr;
......@@ -173,8 +171,7 @@ private:
rels_file_ptr rels_file_;
};
//---------------------------------------------------------------------------------------------
//------------------------------------------------------------------------
class document : public element
{
public:
......
......@@ -33,8 +33,6 @@
#include "oox_rels.h"
#include "mediaitems_utils.h"
//#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
#include <boost/make_shared.hpp>
#include <simple_xml_writer.h>
......@@ -66,8 +64,9 @@ public:
void dump_rels(rels & Rels)
{
BOOST_FOREACH(rel_ const & r, chartRels_)
for (size_t i = 0; i < chartRels_.size(); i++)
{
rel_ & r = chartRels_[i];
if (r.type_ == external_items::typeImage)
{
Rels.add(relationship(
......@@ -99,8 +98,9 @@ public:
{
bool present = false;
BOOST_FOREACH(rel_ const & r, chartRels_)
{
for (size_t i = 0; i < chartRels_.size(); i++)
{
rel_ & r = chartRels_[i];
if (r.rid_ == rid && r.target_ == target)
present = true;
}
......
......@@ -84,6 +84,17 @@ xlsx_xml_worksheet & xlsx_conversion_context::current_sheet()
throw std::runtime_error("internal error");
}
}
xlsx_pivot_cache_context & xlsx_conversion_context::current_pivot_cache()
{
if (!pivot_caches_.empty())
{
return *pivot_caches_.back().get();
}
else
{
throw std::runtime_error("internal error");
}
}
oox_chart_context & xlsx_conversion_context::current_chart()
{
if (!charts_.empty())
......@@ -118,11 +129,17 @@ void xlsx_conversion_context::start_chart()
//этот контекст нужно передавать в файл
}
void xlsx_conversion_context::end_chart()
{
//current_chart().set_drawing_link(current_sheet().get_drawing_link());
//излишняя инфа
}
void xlsx_conversion_context::start_pivot_cache()
{
pivot_caches_.push_back(xlsx_pivot_cache_context::create());
}
void xlsx_conversion_context::end_pivot_cache()
{
}
void xlsx_conversion_context::end_table()
......@@ -144,8 +161,9 @@ void xlsx_conversion_context::end_document()
unsigned int count = 0;
// добавляем таблицы
BOOST_FOREACH(const xlsx_xml_worksheet_ptr& sheet, sheets_)
{
for (size_t i = 0; i < sheets_.size(); i++)
{
xlsx_xml_worksheet_ptr & sheet = sheets_[i];
count++;
const std::wstring id = std::wstring(L"sId") + boost::lexical_cast<std::wstring>(count);
......@@ -206,63 +224,86 @@ void xlsx_conversion_context::end_document()
}
}
//добавляем диаграммы
count = 0;
BOOST_FOREACH(const oox_chart_context_ptr& chart, charts_)
for (size_t i = 0; i < charts_.size(); i++)
{
count++;
package::chart_content_ptr content = package::chart_content::create();
chart->dump_rels(content->get_rels());
chart->write_to(content->content());
charts_[i]->dump_rels(content->get_rels());
charts_[i]->write_to(content->content());
output_document_->get_xl_files().add_charts(content);
}
//workbook_content << L"<calcPr iterateCount=\"100\" refMode=\"A1\" iterate=\"false\" iterateDelta=\"0.0001\" />";
{
output_document_->get_xl_files().set_sharedStrings( package::simple_element::create(L"sharedStrings.xml", xlsx_shared_strings_.str()) );
}
output_document_->get_xl_files().set_sharedStrings( package::simple_element::create(L"sharedStrings.xml", xlsx_shared_strings_.str()) );
{
std::wstringstream strm_workbook;
std::wstringstream strm_workbook;
CP_XML_WRITER(strm_workbook)
CP_XML_WRITER(strm_workbook)
{
CP_XML_NODE(L"workbook")
{
CP_XML_NODE(L"workbook")
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_NODE(L"bookViews")
{
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_STREAM() << xlsx_workbook_views_.str();
}
CP_XML_NODE(L"bookViews")
{
CP_XML_STREAM() << xlsx_workbook_views_.str();
}
CP_XML_NODE(L"sheets")
{
CP_XML_STREAM() << workbook_content.str();
}
CP_XML_NODE(L"sheets")
{
CP_XML_STREAM() << workbook_content.str();
}
CP_XML_NODE(L"definedNames")
{
CP_XML_STREAM() << xlsx_defined_names_.str();
}
std::wstring str_ = xlsx_custom_views_.str();
CP_XML_NODE(L"definedNames")
{
CP_XML_STREAM() << xlsx_defined_names_.str();
if (!str_.empty())
{
CP_XML_NODE(L"customWorkbookViews")
{
CP_XML_STREAM() << str_;
}
std::wstring str_ = xlsx_custom_views_.str();
if (!str_.empty())
}
if (!pivot_caches_.empty())
{
CP_XML_NODE(L"pivotCaches")
{
CP_XML_NODE(L"customWorkbookViews")
for (size_t i = 0; i < pivot_caches_.size(); i++)
{
CP_XML_STREAM() << str_;
std::wstring rId = L"pcId" + std::to_wstring(i+1);
static const std::wstring sType = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition";
const std::wstring sName = std::wstring(L"../pivotCache/pivotCacheDefinition" + std::to_wstring(i + 1) + L".xml");
package::pivot_cache_content_ptr content = package::pivot_cache_content::create();
CP_XML_NODE(L"pivotCache")
{
CP_XML_ATTR(L"cacheId", std::to_wstring(i));
CP_XML_ATTR(L"r:id", rId);
//workbook_content.add_rels(relationship(rId, sType, sName));
}
pivot_caches_[i]->dump_rels(content->get_rels());
pivot_caches_[i]->write_to(content->definitions());
if (pivot_caches_[i]->isRecordsPresent)
{
pivot_caches_[i]->write_records_to(content->records());
}
output_document_->get_xl_files().add_pivot_cache(content);
}
}
}
}
}
output_document_->get_xl_files().set_workbook( package::simple_element::create(L"workbook.xml", strm_workbook.str()) );
......
......@@ -41,6 +41,7 @@
#include "xlsx_drawing_context.h"
#include "xlsx_chart_context.h"
#include "xlsx_comments_context.h"
#include "xlsx_pivot_cache_context.h"
#include "xlsx_output_xml.h"
......@@ -70,6 +71,9 @@ public:
void start_chart();
void end_chart();
void start_pivot_cache();
void end_pivot_cache();
std::wostream & shared_strings() { return xlsx_shared_strings_; }
std::wostream & defined_names() { return xlsx_defined_names_; }
std::wostream & workbook_views() { return xlsx_workbook_views_; }
......@@ -80,6 +84,7 @@ public:
xlsx_xml_worksheet & current_sheet();
oox_chart_context & current_chart();
xlsx_pivot_cache_context & current_pivot_cache();
xlsx_drawing_context & get_drawing_context();
xlsx_drawing_context_handle & get_drawing_context_handle();
......@@ -95,9 +100,10 @@ private:
external_items mediaitems_;
std::vector<xlsx_xml_worksheet_ptr> sheets_;
std::vector<oox_chart_context_ptr> charts_;
std::vector<xlsx_xml_worksheet_ptr> sheets_;
std::vector<oox_chart_context_ptr> charts_;
std::vector<xlsx_pivot_cache_context_ptr> pivot_caches_;
//std::wstringstream defaultOutput_;
//std::pair<float,float> maxDigitSize_;
//num_format_context num_format_context_;
......
......@@ -32,8 +32,6 @@
#pragma once
#include <iosfwd>
#include "common.h"
#include <boost/scoped_ptr.hpp>
#include <boost/noncopyable.hpp>
......@@ -44,7 +42,6 @@ namespace oox {
class xlsx_xml_worksheet;
typedef boost::shared_ptr<xlsx_xml_worksheet> xlsx_xml_worksheet_ptr;
/// \class xlsx_xml_worksheet
class xlsx_xml_worksheet: boost::noncopyable
{
public:
......
......@@ -80,12 +80,21 @@ void xlsx_document::write(const std::wstring & RootPath)
rels_files_.write(RootPath);
}
////////////////////////////////////////////
//--------------------------------------------------------------------------------------------
pivot_cache_content::pivot_cache_content() : definitions_rels_file_(rels_file::create(L""))
{
}
_CP_PTR(pivot_cache_content) pivot_cache_content::create()
{
return boost::make_shared<pivot_cache_content>();
}
sheet_content::sheet_content() : rels_(rels_file::create(L""))
{
}
//--------------------------------------------------------------------------------------------
_CP_PTR(sheet_content) sheet_content::create()
{
......@@ -202,6 +211,10 @@ void xl_files::write(const std::wstring & RootPath)
{
charts_files_.set_main_document(get_main_document());
charts_files_.write(path);
}
{
pivot_cache_files_.set_main_document(get_main_document());
pivot_cache_files_.write(path);
}
if (drawings_)
{
......@@ -264,7 +277,56 @@ void xl_files::add_charts(chart_content_ptr chart)
{
charts_files_.add_chart(chart);
}
////////////////////////////
void xl_files::add_pivot_cache(pivot_cache_content_ptr pivot_cache)
{
pivot_cache_files_.add_pivot_cache(pivot_cache);
}
//----------------------------------------------------------------------------------------
void xl_pivot_cache_files::add_pivot_cache(pivot_cache_content_ptr pivot_cache)
{
pivot_caches_.push_back(pivot_cache);
}
void xl_pivot_cache_files::write(const std::wstring & RootPath)
{
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"pivotCache";
NSDirectory::CreateDirectory(path.c_str());
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConTypeD = L"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml";
static const std::wstring kWSConTypeR = L"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml";
for (size_t i = 0; i < pivot_caches_.size(); i++)
{
if (pivot_caches_[i])
{
const std::wstring fileNameD = std::wstring(L"pivotCacheDefinition") + std::to_wstring(i + 1) + L".xml";
contentTypes.add_override(std::wstring(L"/xl/pivotCache/") + fileNameD, kWSConTypeD);
package::simple_element(fileNameD, pivot_caches_[i]->str_d()).write(path);
if (pivot_caches_[i]->get_rels().empty() == false)
{
rels_files relFiles;
pivot_caches_[i]->definitions_rels_file_->set_file_name(fileNameD + L".rels");
relFiles.add_rel_file(pivot_caches_[i]->definitions_rels_file_);
relFiles.write(path);
}
std::wstring content_records = pivot_caches_[i]->str_r();
if (!content_records.empty())
{
const std::wstring fileNameR = std::wstring(L"pivotCacheRecords") + std::to_wstring(i + 1) + L".xml";
contentTypes.add_override(std::wstring(L"/xl/pivotCache/") + fileNameR, kWSConTypeD);
package::simple_element(fileNameR, content_records).write(path);
}
}
}
}
//----------------------------------------------------------------------------------------
void xl_charts_files::add_chart(chart_content_ptr chart)
{
charts_.push_back(chart);
......@@ -274,14 +336,15 @@ void xl_charts_files::write(const std::wstring & RootPath)
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"charts";
NSDirectory::CreateDirectory(path.c_str());
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.drawingml.chart+xml";
for (size_t i = 0; i < charts_.size(); i++)
{
if (charts_[i])
{
const std::wstring fileName = std::wstring(L"chart") + std::to_wstring(i + 1) + L".xml";
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.drawingml.chart+xml";
contentTypes.add_override(std::wstring(L"/xl/charts/") + fileName, kWSConType);
package::simple_element(fileName, charts_[i]->str()).write(path);
......@@ -297,7 +360,7 @@ void xl_charts_files::write(const std::wstring & RootPath)
}
}
}
//////////////////////////
//----------------------------------------------------------------------------------------
xl_drawings_ptr xl_drawings::create(const std::vector<drawing_elm> & elms)
{
return boost::make_shared<xl_drawings>(boost::ref(elms));
......
......@@ -38,7 +38,6 @@
#include "xlsx_drawings.h"
#include "xlsx_comments.h"
namespace oox {
namespace package {
......@@ -47,7 +46,7 @@ class xlsx_content_types_file : public content_types_file
public:
xlsx_content_types_file();
};
//------------------------------------------------------------------------
class sheet_content;
typedef _CP_PTR(sheet_content) sheet_content_ptr;
......@@ -66,7 +65,30 @@ private:
std::wstringstream content_;
rels_file_ptr rels_;
};
//------------------------------------------------------------------------
class pivot_cache_content;
typedef _CP_PTR(pivot_cache_content) pivot_cache_content_ptr;
class pivot_cache_content : boost::noncopyable
{
public:
pivot_cache_content();
static _CP_PTR(pivot_cache_content) create();
std::wostream & definitions() { return definitions_; }
std::wostream & records() { return records_; }
rels & get_rels() { return definitions_rels_file_->get_rels(); }
std::wstring str_d() { return definitions_.str(); }
std::wstring str_r() { return records_.str(); }
friend class xl_pivot_cache_files;
private:
std::wstringstream records_;
std::wstringstream definitions_;
rels_file_ptr definitions_rels_file_;
};
//------------------------------------------------------------------------
class sheets_files : public element
{
public:
......@@ -97,6 +119,18 @@ public:
std::vector<chart_content_ptr> charts_;
};
class xl_pivot_cache_files : public element
{
public:
xl_pivot_cache_files(){}
void add_pivot_cache(pivot_cache_content_ptr pivot_cache);
virtual void write(const std::wstring & RootPath);
std::vector<pivot_cache_content_ptr> pivot_caches_;
};
///////////////////////////////////////////////////////////
......@@ -161,13 +195,15 @@ public:
void set_vml_drawings (element_ptr Element);
void set_comments (element_ptr Element);
void add_charts (chart_content_ptr chart);
void add_pivot_cache (pivot_cache_content_ptr pivot);
private:
rels_files rels_files_;
sheets_files sheets_files_;
xl_charts_files charts_files_;
element_ptr theme_;
element_ptr workbook_;
rels_files rels_files_;
sheets_files sheets_files_;
xl_charts_files charts_files_;
xl_pivot_cache_files pivot_cache_files_;
element_ptr theme_;
element_ptr workbook_;
element_ptr styles_;
element_ptr sharedStrings_;
......
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "xlsx_pivot_cache_context.h"
#include "oox_rels.h"
#include "mediaitems_utils.h"
#include <boost/make_shared.hpp>
#include <simple_xml_writer.h>
namespace oox {
class xlsx_pivot_cache_context::Impl
{
// struct rel_
// {
// rel_(bool is_internal, std::wstring const & rid, std::wstring const & target, external_items::Type type) :
// is_internal_(is_internal),
// rid_(rid),
//target_(target),
// type_(type)
// {}
// bool is_internal_;
// std::wstring rid_;
// std::wstring target_;
// external_items::Type type_;
// };
public:
Impl() {}
std::wstringstream definitionsData_;
std::wstringstream recordsData_;
//rels rels_;
};
xlsx_pivot_cache_context_ptr xlsx_pivot_cache_context::create()
{
return boost::make_shared<xlsx_pivot_cache_context>();
}
int countPivotCaches = 0;
xlsx_pivot_cache_context::xlsx_pivot_cache_context() : impl_(new xlsx_pivot_cache_context::Impl()), isRecordsPresent(false)
{
index = ++countPivotCaches;
}
std::wostream & xlsx_pivot_cache_context::definitions()
{
return impl_->definitionsData_;
}
std::wostream & xlsx_pivot_cache_context::records()
{
return impl_->recordsData_;
}
//void xlsx_pivot_cache_context::add_rels(
// bool isInternal,
// std::wstring const & rid,
// std::wstring const & target,
// external_items::Type type)
//{
// impl_->add_rels(isInternal, rid, target, type);
//}
void xlsx_pivot_cache_context::dump_rels(rels & Rels)
{
// impl_->dump_rels(Rels);
if (isRecordsPresent)
{
Rels.add(relationship(L"rId1",
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords",
L"pivotCache/pivotCacheDefinition" + std::to_wstring(index) + L".xml", L""));
}
}
void xlsx_pivot_cache_context::write_to(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"pivotCacheDefinition")
{
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
if (isRecordsPresent)
{
CP_XML_ATTR(L"r:id", L"rId1" );
}
//refreshedBy="Debra S Dalgleish"
//refreshedDate="39449.496381365738"
//createdVersion="1"
//refreshedVersion="2"
//recordCount="11"
//upgradeOnRefresh="1">
CP_XML_STREAM() << impl_->definitionsData_.str();
}
}
}
void xlsx_pivot_cache_context::write_records_to(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"pivotCacheRecords")
{
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_STREAM() << impl_->recordsData_.str();
}
}
}
xlsx_pivot_cache_context::~xlsx_pivot_cache_context()
{
}
}
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "oox_package.h"
namespace oox {
class xlsx_pivot_cache_context;
typedef _CP_PTR(xlsx_pivot_cache_context) xlsx_pivot_cache_context_ptr;
class xlsx_pivot_cache_context
{
public:
xlsx_pivot_cache_context();
~xlsx_pivot_cache_context();
std::wostream & definitions();
std::wostream & records();
void write_to(std::wostream & strm);
void write_records_to(std::wostream & strm);
void dump_rels(rels & Rels);
static xlsx_pivot_cache_context_ptr create();
//void add_rels( bool isInternal,
// std::wstring const & rid,
// std::wstring const & target,
// external_items::Type type);
bool isRecordsPresent;
int index;
private:
class Impl;
_CP_PTR(Impl) impl_;
};
}
......@@ -839,6 +839,7 @@ SOURCES += \
../XlsXlsxConverter/xlsx_tablecontext.cpp \
../XlsXlsxConverter/xlsx_textcontext.cpp \
../XlsXlsxConverter/xlsx_chart_context.cpp \
../XlsXlsxConverter/xlsx_pivot_cache_context.cpp \
../XlsXlsxConverter/xlsx_comments.cpp \
../XlsXlsxConverter/xlsx_comments_context.cpp \
......@@ -1596,6 +1597,7 @@ HEADERS += \
../XlsXlsxConverter/xlsx_conversion_context.h \
../XlsXlsxConverter/xlsx_drawing_context.h \
../XlsXlsxConverter/xlsx_drawings.h \
../XlsXlsxConverter/xlsx_pivot_cache_context.cpp \
../XlsXlsxConverter/xlsx_hyperlinks.h \
../XlsXlsxConverter/xlsx_output_xml.h \
../XlsXlsxConverter/xlsx_package.h \
......
......@@ -416,6 +416,14 @@
RelativePath="..\XlsXlsxConverter\xlsx_package.h"
>
</File>
<File
RelativePath="..\XlsXlsxConverter\xlsx_pivot_cache_context.cpp"
>
</File>
<File
RelativePath="..\XlsXlsxConverter\xlsx_pivot_cache_context.h"
>
</File>
<File
RelativePath="..\XlsXlsxConverter\xlsx_tablecontext.cpp"
>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment