Commit 3e342065 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

git-svn-id:...

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@55284 954022d7-b5bf-4e40-9824-e11837661b57
parent 5b264dd6
......@@ -982,6 +982,10 @@
<Filter
Name="xml_common"
>
<File
RelativePath="..\..\ASCOfficeOdfFile\src\xml\utils.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeOdfFile\src\xml\xmlchar.cpp"
>
......
......@@ -71,7 +71,9 @@ void text_list_item::create_child_element(const ::std::wstring & Ns, const ::std
}
void text_list_item::add_child_element( office_element_ptr & child_element)
{
if (false)//CP_CHECK_NAME(L"text", L"number")
ElementType type = child_element->get_type();
if (type == typeTextNumber)
{
text_number_ = child_element;
}
......@@ -115,7 +117,9 @@ void text_list_header::create_child_element(const ::std::wstring & Ns, const ::s
}
void text_list_header::add_child_element( office_element_ptr & child_element)
{
if (false)//CP_CHECK_NAME(L"text", L"number")
ElementType type = child_element->get_type();
if (type == typeTextNumber)
{
text_number_ = child_element;
}
......
......@@ -22,8 +22,8 @@ public:
public:
text_number() {}
virtual void create_child_element(const ::std::wstring & Ns, const ::std::wstring & Name);
virtual void add_child_element( office_element_ptr & child_element);
virtual void create_child_element(const ::std::wstring & Ns, const ::std::wstring & Name){}
virtual void add_child_element( office_element_ptr & child_element){}
virtual void serialize(std::wostream & _Wostream);
......
#include "precompiled_cpodf.h"
#include "odf_style_context.h"
//#include "ods_textcontext.h"
#include "ods_conversion_context.h"
//#include "odf_text_context.h" ??????
#include "logging.h"
#include "styles.h"
......@@ -52,6 +52,14 @@ void odf_style_context::create_default(const style_family family)
last_state().set_automatic(false);
last_state().set_root(true);
last_state().set_default(true);
////////////////////////////////////////////
odf::default_style* style = dynamic_cast<odf::default_style*>(elm.get());
if (style == NULL)return;
odf::style_table_cell_properties * cell_properties = style->style_content_.get_style_table_cell_properties();
odf::style_text_properties * text_properties = style->style_content_.get_style_text_properties();
odf::style_paragraph_properties * paragraph_properties = style->style_content_.get_style_paragraph_properties();
}
void odf_style_context::reset_defaults()
{
......
......@@ -2,18 +2,19 @@
#include "ods_conversion_context.h"
#include "office_spreadsheet.h"
#include "styles.h"
#include "style_table_properties.h"
#include "odf_text_context.h"
namespace cpdoccore {
namespace odf {
ods_conversion_context::ods_conversion_context(package::odf_document * outputDocument)
: odf_conversion_context(outputDocument), ods_table_context_(*this)
: odf_conversion_context(outputDocument), ods_table_context_(*this), current_text_context_(NULL)
{
}
......@@ -295,7 +296,52 @@ void ods_conversion_context::add_column(int start_column, int repeated, int leve
current_table().set_column_default_cell_style(style_cell_name);
}
}
void ods_conversion_context::start_text_context()
{
current_text_context_ = new odf_text_context(&styles_context(),this);
}
void ods_conversion_context::end_text_context()
{
if (current_text_context_)
delete current_text_context_;
current_text_context_ = NULL;
}
void ods_conversion_context::add_text_content(std::wstring & text)
{
if (current_text_context_)
{
current_text_context_->add_text_content(text);
}
}
void ods_conversion_context::start_text_paragraph()
{
//if (current_text_context_)
//{
// style_elm = styles_context().find_odf_style_default(style_family::TableRow);
//}
//else
{
/* styles_context().create_style(L"",style_family::TableRow, true, false, -1);
style_elm = styles_context().last_state().get_office_element();
style* _style = dynamic_cast<style*>(style_elm.get());
if (!_style)return; */
office_element_ptr paragr_elm;
create_element(L"text", L"p",paragr_elm,this);
current_text_context_->start_paragraph(paragr_elm);
}
}
void ods_conversion_context::end_text_paragraph()
{
if (current_text_context_)
{
current_text_context_->end_paragraph();
}
}
}
}
......@@ -7,6 +7,7 @@ namespace cpdoccore {
namespace odf {
class office_spreadsheet;
class odf_text_context;
class ods_conversion_context : public odf_conversion_context
{
......@@ -32,12 +33,23 @@ public:
void add_merge_cells(std::wstring & ref);
ods_table_context ods_table_context_;
ods_table_state & current_table() { return ods_table_context_.state();}
odf_text_context* current_text_context(){return current_text_context_;}
office_spreadsheet* current_spreadsheet_;
void start_text_context();
void end_text_context();
void start_text_paragraph();//
void end_text_paragraph();
void add_text_content(std::wstring & text);
ods_table_state & current_table() { return ods_table_context_.state();}
private:
ods_table_context ods_table_context_;
odf_text_context* current_text_context_;
office_spreadsheet* current_spreadsheet_;
};
......
......@@ -2,6 +2,7 @@
#include "logging.h"
#include "ods_table_state.h"
#include "odf_text_context.h"
#include "ods_conversion_context.h"
#include "table.h"
......@@ -310,7 +311,7 @@ void ods_table_state::set_cell_type(int type)
_CP_OPT(office_value_type) cell_type;
switch (type)
{
case 0: cell_type = office_value_type(office_value_type::Boolean);
case 0: //cell_type = office_value_type(office_value_type::Boolean);
break;
case 4: cell_type = office_value_type(office_value_type::Float);
break;
......@@ -363,7 +364,22 @@ void ods_table_state::set_merge_cells(int start_col, int start_row, int end_col,
}
}
}
//void ods_table_state::add_cell_element(office_element_ptr & child)
//{
// cells_.back().elm->add_child_element(child);
//}
void ods_table_state::set_cell_text(odf_text_context* text_context)
{
if (text_context == NULL)return;
for (long i=0; i< text_context->text_elements_list_.size(); i++)
{
if (text_context->text_elements_list_[i].level ==0)
{
cells_.back().elm->add_child_element(text_context->text_elements_list_[i].elm);
}
}
}
void ods_table_state::set_cell_value(std::wstring & value)
{
if (cells_.size() < 1)return;
......@@ -404,18 +420,8 @@ void ods_table_state::set_cell_value(std::wstring & value)
{
//general !!
}
//
//start_text()
//start_paragraph();
office_element_ptr text_elm;
create_element(L"text", L"p",text_elm, &context_);
cells_.back().elm->add_child_element(text_elm);
//table_table_cell* cell = dynamic_cast<text_p*>(text_elm.get());
//end_paragraph();
//end_text();
// !!!!
//
}
void ods_table_state::set_cell_ref (std::wstring & ref, int col, int row)
......
......@@ -17,6 +17,8 @@ namespace cpdoccore {
namespace odf {
class ods_conversion_context;
class odf_text_context;
class table_table;
class style;
class color;
......@@ -71,10 +73,14 @@ public:
void start_cell(office_element_ptr & elm ,office_element_ptr & style);
void end_cell();
void add_default_cell(office_element_ptr & cell, int repeated);
void set_cell_ref (std::wstring & ref, int col, int row);
void set_cell_format_value(int format);
void set_cell_type(int type);
void set_cell_value(std::wstring & value);
void set_cell_text(odf_text_context *text_context);
void set_merge_cells(int start_col, int start_row, int end_col, int end_row);
// void start_covered_cell();
......@@ -118,7 +124,7 @@ private:
std::vector<ods_element_state> columns_;
std::vector<ods_element_state> rows_;
std::vector<office_element_ptr> current_level_;//
std::vector<office_element_ptr> current_level_;// ("0- - )
std::vector<ods_cell_state> cells_;
......
......@@ -44,6 +44,7 @@ public:
virtual void add_child_element(office_element_ptr & child) = 0;
virtual void create_child_element( const std::wstring & Ns, const std::wstring & Name)=0;
virtual void add_text(const std::wstring & Text) {}
void set_root(bool root){is_root_ = root;}
////////////////////////
......
......@@ -40,7 +40,7 @@ const wchar_t * text_text::name = L"";
void text_text::serialize(std::wostream & _Wostream)
{
_Wostream << xml::utils::replace_xml_to_text( text_ );
_Wostream << xml::utils::replace_text_to_xml( text_ );
}
void text_text::add_text(const std::wstring & Text)
......@@ -212,11 +212,11 @@ void text_span::serialize(std::wostream & _Wostream)
{
CP_XML_NODE_SIMPLE()
{
CP_XML_ATTR(L"text:style-name", text_style_name_);
CP_XML_ATTR_OPT(L"text:style-name", text_style_name_);
BOOST_FOREACH(const office_element_ptr & parElement, paragraph_content_)
{
parElement->serialize(_Wostream);
parElement->serialize(CP_XML_STREAM());
}
}
}
......@@ -296,10 +296,10 @@ void text_note::serialize(std::wostream & _Wostream)
CP_XML_ATTR(L"text:note-class", text_note_class_);
if (text_note_citation_)
text_note_citation_->serialize(_Wostream);
text_note_citation_->serialize(CP_XML_STREAM());
if (text_note_body_)
text_note_body_->serialize(_Wostream);
text_note_body_->serialize(CP_XML_STREAM());
}
}
}
......@@ -319,10 +319,15 @@ void text_note::create_child_element( const ::std::wstring & Ns, const ::std::w
}
void text_note::add_child_element( office_element_ptr & child_element)
{
if (false)
ElementType type = child_element->get_type();
if (type == typeTextNoteCitation)
text_note_citation_ = child_element;
else
else if (type == typeTextNoteBody)
text_note_body_ = child_element;
else
{
}
}
void text_note::add_text(const std::wstring & Text)
......@@ -343,10 +348,10 @@ void text_ruby::serialize(std::wostream & _Wostream)
CP_XML_ATTR(L"text:style-name", text_style_name_.style_name());
if (text_ruby_base_)
text_ruby_base_->serialize(_Wostream);
text_ruby_base_->serialize(CP_XML_STREAM());
if (text_ruby_text_)
text_ruby_text_->serialize(_Wostream);
text_ruby_text_->serialize(CP_XML_STREAM());
}
}
}
......@@ -366,9 +371,11 @@ void text_ruby::create_child_element( const ::std::wstring & Ns, const ::std::ws
}
void text_ruby::add_child_element( office_element_ptr & child_element)
{
if (false)
ElementType type = child_element->get_type();
if (type == typeTextRubyBase)
text_ruby_base_ = child_element;
else
else if (type == typeTextRubyText)
text_ruby_text_ = child_element;
}
......@@ -423,7 +430,7 @@ void text_placeholder::serialize(std::wostream & _Wostream)
{
BOOST_FOREACH(const office_element_ptr & elm, content_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -462,7 +469,7 @@ void text_page_number::serialize(std::wostream & _Wostream)
// //text:page-adjust="1"
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -497,7 +504,7 @@ void text_page_count::serialize(std::wostream & _Wostream)
{
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -535,7 +542,7 @@ void text_date::serialize(std::wostream & _Wostream)
// CP_XML_ATTR_OPT(L"text:date-value", text_date_value_);
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -574,7 +581,7 @@ void text_time::serialize(std::wostream & _Wostream)
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -611,7 +618,7 @@ void text_file_name::serialize(std::wostream & _Wostream)
{
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -647,7 +654,7 @@ void text_sequence::serialize(std::wostream & _Wostream)
{
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(_Wostream);
elm->serialize(CP_XML_STREAM());
}
}
}
......@@ -686,17 +693,42 @@ void text_sheet_name::add_text(const std::wstring & Text)
office_element_ptr elm = text_text::create(Text) ;
text_.push_back( elm );
}
void text_sheet_name::serialize(std::wostream & _Wostream)
{
CP_XML_WRITER(_Wostream)
{
CP_XML_NODE_SIMPLE()
{
BOOST_FOREACH(const office_element_ptr & elm, text_)
{
elm->serialize(CP_XML_STREAM());
}
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
// presentation:footer
const wchar_t * presentation_footer::ns = L"presentation";
const wchar_t * presentation_footer::name = L"footer";
void presentation_footer::serialize(std::wostream & _Wostream)
{
CP_XML_WRITER(_Wostream)
{
CP_XML_NODE_SIMPLE();
}
}
const wchar_t * presentation_date_time::ns = L"presentation";
const wchar_t * presentation_date_time::name = L"date-time";
void presentation_date_time::serialize(std::wostream & _Wostream)
{
CP_XML_WRITER(_Wostream)
{
CP_XML_NODE_SIMPLE();
}
}
}
}
......@@ -29,8 +29,8 @@ public:
static const ElementType type = typeTextText;
CPDOCCORE_DEFINE_VISITABLE();
virtual void create_child_element(const ::std::wstring & Ns, const ::std::wstring & Name);
virtual void add_child_element( office_element_ptr & child_element);
virtual void create_child_element(const ::std::wstring & Ns, const ::std::wstring & Name){}
virtual void add_child_element( office_element_ptr & child_element){}
virtual void serialize(std::wostream & _Wostream);
......@@ -289,8 +289,8 @@ public:
office_element_ptr_array paragraph_content_;
style_ref text_style_name_;
style_ref_array text_class_names_;
_CP_OPT(style_ref) text_style_name_;//
style_ref_array text_class_names_;
virtual void add_text(const std::wstring & Text);
};
......
......@@ -13,6 +13,7 @@
#include <cpdoccore/odf/odf_document.h>
#include "odf_conversion_context.h"
#include "odf_text_context.h"
#include "style_paragraph_properties.h"
#include "style_text_properties.h"
......@@ -49,13 +50,27 @@ void paragraph::serialize(std::wostream & _Wostream)
{
elm->serialize(_Wostream);
}
}
void paragraph::serialize_attr(CP_ATTR_NODE)
{
paragraph_attrs_.serialize(CP_GET_XML_NODE());
}
void paragraph_attrs::serialize(CP_ATTR_NODE)
{
CP_XML_ATTR_OPT(L"text:style-name", text_style_name_);
CP_XML_ATTR_OPT(L"text:cond-style-name",text_cond_style_name_);
std::wstring text_class_names_all;
BOOST_FOREACH(const style_ref & elm, text_class_names_)
{
text_class_names_all = elm.style_name() + std::wstring(L" ");
}
if (text_class_names_all.length()>0)
CP_XML_ATTR(L"text:class-names", text_class_names_all);
}
//////////////////////////////////////////////
......@@ -160,7 +175,9 @@ void text_list::create_child_element(const ::std::wstring & Ns, const ::std::wst
}
void text_list::add_child_element( office_element_ptr & child_element)
{
if (false)//header
ElementType type = child_element->get_type();
if (type == typeTextListHeader)
text_list_header_ = child_element;
else
text_list_items_.push_back(child_element);
......@@ -210,11 +227,32 @@ void text_section::create_child_element( const ::std::wstring & Ns, const ::std:
void text_section::add_child_element( office_element_ptr & child_element)
{
if (false)//header
ElementType type = child_element->get_type();
if (type == typeTextSectionSource)
text_section_source_ = child_element;
else
text_content_.push_back(child_element);
}
void text_section::serialize(std::wostream & _Wostream)
{
CP_XML_WRITER(_Wostream)
{
CP_XML_NODE_SIMPLE()
{
text_section_attr_.serialize(CP_GET_XML_NODE());
if (text_section_source_)text_section_source_->serialize(CP_XML_STREAM());
BOOST_FOREACH(const office_element_ptr & elm, text_content_)
{
elm->serialize(CP_XML_STREAM());
}
}
}
}
// text-section-source-attr
//////////////////////////////////////////////////////////////////////////////////////////////////
......@@ -235,7 +273,16 @@ void text_section_source::create_child_element( const ::std::wstring & Ns, const
{
CP_NOT_APPLICABLE_ELM();
}
void text_section_source::serialize(std::wostream & _Wostream)
{
CP_XML_WRITER(_Wostream)
{
CP_XML_NODE_SIMPLE()
{
text_section_source_attr_.serialize(CP_GET_XML_NODE());
}
}
}
// text:index-body
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * text_index_body::ns = L"text";
......
......@@ -15,13 +15,14 @@
namespace cpdoccore {
namespace odf {
class odf_text_context;
class paragraph_attrs
{
public:
style_ref text_style_name_;
_CP_OPT(style_ref) text_style_name_;
_CP_OPT(style_ref) text_cond_style_name_;
style_ref_array text_class_names_;
style_ref text_cond_style_name_;
void serialize(CP_ATTR_NODE);
......@@ -33,10 +34,14 @@ public:
paragraph() : next_par_(NULL), next_section_(false), next_end_section_(false) {}
public:
//void afterCreate(odf_text_context * ctx);
paragraph * get_next() { return next_par_; }
void set_next(paragraph * next) {next_par_ = next;}
void set_next_section(bool Val)
void set_next(paragraph * next) {next_par_ = next;}
void set_prev(paragraph * prev) {prev_par_ = prev;}
void set_next_section(bool Val)
{
next_section_ = Val;
}
......@@ -57,6 +62,7 @@ public:
office_element_ptr_array paragraph_content_;
paragraph * prev_par_;
paragraph * next_par_;
bool next_section_;
bool next_end_section_;
......
......@@ -8,6 +8,8 @@
#include "ods_conversion_context.h"
#include "odf_text_context.h"
#include "styles.h"
#include "style_table_properties.h"
......@@ -175,7 +177,6 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCell *oox_cell)
{
//nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oCellMetadata;
//nullable<SimpleTypes::COnOff<>> m_oShowPhonetic;
//nullable<SimpleTypes::Spreadsheet::CCellTypeType<>> m_oType;
//nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oValueMetadata;
std::wstring ref = oox_cell->m_oRef.IsInit() ? string2std_string(oox_cell->m_oRef.get()) : L"";
......@@ -189,29 +190,54 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCell *oox_cell)
{
value_type = oox_cell->m_oType->GetValue();
}
ods_context->current_table().set_cell_type(value_type);
switch (value_type)
if (oox_cell->m_oFormula.IsInit())
{
case SimpleTypes::Spreadsheet::celltypeSharedString:
break;
default :
if (oox_cell->m_oValue.IsInit())//
convert(oox_cell->m_oFormula.GetPointer());
}
if (oox_cell->m_oValue.IsInit())
{
if (value_type == SimpleTypes::Spreadsheet::celltypeSharedString)
{
convert_sharing_string(_wtoi(oox_cell->m_oValue->m_sText));
ods_context->current_table().set_cell_type(5);
}
else
{
ods_context->current_table().set_cell_value (string2std_string(oox_cell->m_oValue->m_sText));
}
break;
}
if (oox_cell->m_oFormula.IsInit())
{
}
if (oox_cell->m_oRichText.IsInit())
{
convert(oox_cell->m_oRichText.GetPointer());
ods_context->current_table().set_cell_type (value_type);
}
}
//m_oRichText - xlsx
ods_context->end_cell();
}
void XlsxConverter::convert_sharing_string(int number)
{
if (!ods_context) return;
const OOX::Spreadsheet::CSharedStrings *SharedStrings= xlsx_document->GetSharedStrings();
if (!SharedStrings) return;
if (number <0 || (SharedStrings->m_oCount.IsInit() && number > SharedStrings->m_oCount->GetValue()))return;//???? m_oUniqueCount;
OOX::Spreadsheet::CSi* pSi = static_cast<OOX::Spreadsheet::CSi*>(SharedStrings->m_arrItems[number]);
if (pSi == NULL)return;
ods_context->start_text_context();
ods_context->start_text_paragraph(); // . ( - )
for(int i = 0; i < pSi->m_arrItems.GetSize(); ++i)
{
convert(pSi->m_arrItems[i]);
}
ods_context->end_text_paragraph();
ods_context->current_table().set_cell_text( ods_context->current_text_context());
ods_context->end_text_context();
}
void XlsxConverter::convert(OOX::Spreadsheet::WritingElement *oox_unknown)
{
if (oox_unknown == NULL)return;
......@@ -228,25 +254,40 @@ void XlsxConverter::convert(OOX::Spreadsheet::WritingElement *oox_unknown)
OOX::Spreadsheet::CText* pText = static_cast<OOX::Spreadsheet::CText*>(oox_unknown);
convert(pText);
}break;
default:
{
std::wstringstream ss;
ss << L"[warning] : no convert element(" << oox_unknown->getType() << L")\n";
_CP_LOG(error) << ss.str();
}
}
}
void XlsxConverter::convert(OOX::Spreadsheet::CSi *oox_shared_string)
void XlsxConverter::convert(OOX::Spreadsheet::CRun *oox_text_run)
{
if (oox_shared_string == NULL)return;
if (oox_text_run == NULL)return;
odf::office_element_ptr odf_style;
//ods_context->start_paragraph();
for(int i = 0; i < oox_shared_string->m_arrItems.GetSize(); ++i)
convert(oox_text_run->m_oRPr.GetPointer());
ods_context->current_text_context()->start_span(); // .. - ??
for(int i = 0; i < oox_text_run->m_arrItems.GetSize(); ++i)
{
convert(oox_shared_string->m_arrItems[i]);
convert(oox_text_run->m_arrItems[i]);
}
//ods_context->end_paragraph();
ods_context->current_text_context()->end_span();
}
void XlsxConverter::convert(OOX::Spreadsheet::CRun *oox_text_run)
void XlsxConverter::convert(OOX::Spreadsheet::CRPr *oox_text_pr)
{
if (oox_text_run == NULL)return;
//ods_context->text_context().start_span();
if (oox_text_pr == NULL)return;
bool automatic = true;
bool root = false;
//ods_context->end_span();
ods_context->styles_context().create_style(L"",odf::style_family::Text, automatic, root, -1);
////
}
void XlsxConverter::convert(OOX::Spreadsheet::CText *oox_text)
......@@ -254,8 +295,15 @@ void XlsxConverter::convert(OOX::Spreadsheet::CText *oox_text)
if (oox_text == NULL)return;
//ods_context->start_text();
ods_context->add_text_content( string2std_string(oox_text->m_sText) );
//ods_context->end_text();
}
void XlsxConverter::convert(OOX::Spreadsheet::CFormula *oox_formula)
{
if (oox_formula == NULL)return;
}
void XlsxConverter::convert(OOX::Spreadsheet::CCol *oox_column)
{
if (oox_column == NULL)return;
......
......@@ -44,7 +44,7 @@ namespace Oox2Odf
virtual void write(const std::wstring & path);
private:
OOX::Spreadsheet::CXlsx *xlsx_document;
OOX::Spreadsheet::CXlsx *xlsx_document;
odf::package::odf_document *output_document;
odf::ods_conversion_context *ods_context;
......@@ -60,10 +60,12 @@ namespace Oox2Odf
void convert(OOX::Spreadsheet::CRow *oox_row);
void convert(OOX::Spreadsheet::CCell *oox_cell);
void convert(OOX::Spreadsheet::CSi *oox_shared_string);
void convert(OOX::Spreadsheet::CRun *oox_text_run);
void convert(OOX::Spreadsheet::CRPr *oox_text_pr);
void convert(OOX::Spreadsheet::CText *oox_text);
void convert(OOX::Spreadsheet::CFormula *oox_formula);
void convert(OOX::Spreadsheet::CSheetFormatPr *oox_sheet_format_pr);
void convert(OOX::Spreadsheet::CSheetPr *oox_sheet_pr);
......@@ -80,5 +82,7 @@ namespace Oox2Odf
void convert(OOX::Spreadsheet::CXfs * cell_style, int oox_id, bool automatic=true, bool root = false);
void convert(OOX::Spreadsheet::CCellStyle * cell_style, int oox_id);
void convert_sharing_string(int number);
};
}
\ No newline at end of file
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