Commit 4063d39e authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

(1.0.1.183): ASCOfficeOdfFile

Электронные таблицы - конвертация группировок строк, видимость их, ...

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@54136 954022d7-b5bf-4e40-9824-e11837661b57
parent 450509d8
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="D:\WORK\VersionControl.exe $(ProjectDir)\version.h" CommandLine=""
ExcludedFromBuild="false" ExcludedFromBuild="false"
/> />
<Tool <Tool
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
//1 //1
//0 //0
//1 //1
//181 //183
#define INTVER 1,0,1,181 #define INTVER 1,0,1,183
#define STRVER "1,0,1,181\0" #define STRVER "1,0,1,183\0"
...@@ -144,6 +144,7 @@ ...@@ -144,6 +144,7 @@
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="D:\WORK\VersionControl.exe $(ProjectDir)\ASCOfficeOdfFile\version.h"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
......
...@@ -46,6 +46,7 @@ std::wstring pptx_table_state::get_default_cell_style_row() ...@@ -46,6 +46,7 @@ std::wstring pptx_table_state::get_default_cell_style_row()
return default_row_cell_style_name_; return default_row_cell_style_name_;
} }
void pptx_table_state::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName) void pptx_table_state::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName)
{ {
current_table_column_ = -1; current_table_column_ = -1;
......
...@@ -25,9 +25,11 @@ public: ...@@ -25,9 +25,11 @@ public:
void start_column(unsigned int repeated, const std::wstring & defaultCellStyleName); void start_column(unsigned int repeated, const std::wstring & defaultCellStyleName);
std::wstring get_default_cell_style_col(unsigned int column); std::wstring get_default_cell_style_col(unsigned int column);
std::wstring get_default_cell_style_row(); std::wstring get_default_cell_style_row();
void start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName);
void start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName);
void end_row(); void end_row();
std::wstring current_row_style() const;
std::wstring current_row_style() const;
void start_cell(); void start_cell();
void end_cell(); void end_cell();
...@@ -63,7 +65,7 @@ private: ...@@ -63,7 +65,7 @@ private:
std::vector<unsigned int> columns_; std::vector<unsigned int> columns_;
std::vector<std::wstring> columnsDefaultCellStyleName_; std::vector<std::wstring> columnsDefaultCellStyleName_;
}; };
class pptx_table_context : boost::noncopyable class pptx_table_context : boost::noncopyable
......
...@@ -22,6 +22,7 @@ xlsx_table_state::xlsx_table_state(xlsx_conversion_context & Context, ...@@ -22,6 +22,7 @@ xlsx_table_state::xlsx_table_state(xlsx_conversion_context & Context,
xlsx_comments_context_(Context.get_comments_context_handle()), xlsx_comments_context_(Context.get_comments_context_handle()),
table_column_last_width_(0.0) table_column_last_width_(0.0)
{ {
memset(&group_row_,0,sizeof(_group_row));
} }
void xlsx_table_state::start_column(unsigned int repeated, const std::wstring & defaultCellStyleName) void xlsx_table_state::start_column(unsigned int repeated, const std::wstring & defaultCellStyleName)
...@@ -38,6 +39,14 @@ unsigned int xlsx_table_state::columns_count() const ...@@ -38,6 +39,14 @@ unsigned int xlsx_table_state::columns_count() const
return columns_count_; return columns_count_;
} }
void xlsx_table_state::set_table_row_group(int count, bool collapsed, int level)
{
group_row_.enabled = true;
group_row_.count = count;
group_row_.collapsed = collapsed;
group_row_.level = level;
}
void xlsx_table_state::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName) void xlsx_table_state::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName)
{ {
empty_row_ = true; empty_row_ = true;
......
...@@ -33,6 +33,7 @@ public: ...@@ -33,6 +33,7 @@ public:
std::wstring default_row_cell_style() const; std::wstring default_row_cell_style() const;
std::wstring default_column_cell_style() const; std::wstring default_column_cell_style() const;
void set_table_row_group(int count, bool collapsed, int level);
void start_cell(size_t columnsSpanned, size_t rowsSpanned); void start_cell(size_t columnsSpanned, size_t rowsSpanned);
void end_cell(); void end_cell();
...@@ -66,6 +67,13 @@ public: ...@@ -66,6 +67,13 @@ public:
std::wstring get_current_table_name() const { return tableName_; } std::wstring get_current_table_name() const { return tableName_; }
struct _group_row
{
bool enabled;
int count;
int level;
bool collapsed;
}group_row_;
private: private:
xlsx_conversion_context & context_; xlsx_conversion_context & context_;
std::wstring table_style_; std::wstring table_style_;
...@@ -90,6 +98,7 @@ private: ...@@ -90,6 +98,7 @@ private:
bool empty_row_; bool empty_row_;
double table_column_last_width_; double table_column_last_width_;
xlsx_hyperlinks xlsx_hyperlinks_; xlsx_hyperlinks xlsx_hyperlinks_;
}; };
......
...@@ -88,7 +88,10 @@ void xlsx_table_context::end_covered_cell() ...@@ -88,7 +88,10 @@ void xlsx_table_context::end_covered_cell()
{ {
return state().end_covered_cell(); return state().end_covered_cell();
} }
void xlsx_table_context::set_table_row_group(int count, bool collapsed, int level)
{
return state().set_table_row_group(count, collapsed, level);
}
void xlsx_table_context::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName) void xlsx_table_context::start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName)
{ {
return state().start_row(StyleName, defaultCellStyleName); return state().start_row(StyleName, defaultCellStyleName);
......
...@@ -43,6 +43,7 @@ public: ...@@ -43,6 +43,7 @@ public:
int current_column() const; int current_column() const;
int current_row() const; int current_row() const;
void set_table_row_group(int count, bool collapsed, int level);
void start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName); void start_row(const std::wstring & StyleName, const std::wstring & defaultCellStyleName);
void non_empty_row(); void non_empty_row();
bool is_empty_row() const; bool is_empty_row() const;
......
...@@ -334,6 +334,11 @@ void xlsx_conversion_context::end_table_column() ...@@ -334,6 +334,11 @@ void xlsx_conversion_context::end_table_column()
{ {
} }
void xlsx_conversion_context::set_table_row_group(int count, bool collapsed, int level)
{
get_table_context().set_table_row_group(count, collapsed, level);
}
void xlsx_conversion_context::start_table_row(const std::wstring & styleName, const std::wstring & defaultCellStyleName) void xlsx_conversion_context::start_table_row(const std::wstring & styleName, const std::wstring & defaultCellStyleName)
{ {
get_table_context().start_row(styleName, defaultCellStyleName); get_table_context().start_row(styleName, defaultCellStyleName);
......
...@@ -71,6 +71,7 @@ public: ...@@ -71,6 +71,7 @@ public:
double table_column_last_width() const; double table_column_last_width() const;
void end_table_column(); void end_table_column();
void set_table_row_group(int count, bool collapsed, int level);
void start_table_row(const std::wstring & styleName, const std::wstring & defaultCellStyleName); void start_table_row(const std::wstring & styleName, const std::wstring & defaultCellStyleName);
void non_empty_row(); void non_empty_row();
void end_table_row(); void end_table_row();
......
...@@ -605,6 +605,8 @@ public: ...@@ -605,6 +605,8 @@ public:
void xlsx_convert(oox::xlsx_conversion_context & Context); void xlsx_convert(oox::xlsx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context); void pptx_convert(oox::pptx_conversion_context & Context);
int get_count(){return content_.size();}// ..
public: public:
office_element_ptr_array content_; office_element_ptr_array content_;
//int type_; //int type_;
...@@ -619,7 +621,6 @@ class table_table_row_group_attlist ...@@ -619,7 +621,6 @@ class table_table_row_group_attlist
public: public:
void add_attributes( const xml::attributes_wc_ptr & Attributes ); void add_attributes( const xml::attributes_wc_ptr & Attributes );
private:
bool table_display_; // default true bool table_display_; // default true
}; };
......
...@@ -104,7 +104,7 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context) ...@@ -104,7 +104,7 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context)
} }
while (0); while (0);
const bool collapsed = table_table_row_attlist_.table_visibility_.get_type() == table_visibility::Collapse; bool hidden = table_table_row_attlist_.table_visibility_.get_type() == table_visibility::Collapse;
for (unsigned int i = 0; i < table_table_row_attlist_.table_number_rows_repeated_; ++i) for (unsigned int i = 0; i < table_table_row_attlist_.table_number_rows_repeated_; ++i)
{ {
...@@ -118,7 +118,25 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context) ...@@ -118,7 +118,25 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context)
{ {
CP_XML_ATTR(L"r", Context.current_table_row() + 1); CP_XML_ATTR(L"r", Context.current_table_row() + 1);
if (collapsed) if (Context.get_table_context().state().group_row_.enabled)
{
//std::wstring str_spans = boost::lexical_cast<std::wstring>(Context.get_table_context().state().group_row_.count);
//str_spans = str_spans + L":";
std::wstring str_spans = L"1:" + boost::lexical_cast<std::wstring>(Context.get_table_context().columns_count());
ht = L"";
CP_XML_ATTR(L"collapsed", Context.get_table_context().state().group_row_.collapsed);
CP_XML_ATTR(L"outlineLevel", Context.get_table_context().state().group_row_.level);
CP_XML_ATTR(L"spans", str_spans);
if (Context.get_table_context().state().group_row_.collapsed)hidden = false;
Context.get_table_context().state().group_row_.count--;
if (Context.get_table_context().state().group_row_.count<1)
Context.get_table_context().state().group_row_.enabled = false;
}
if (hidden)
{ {
CP_XML_ATTR(L"hidden", L"true"); CP_XML_ATTR(L"hidden", L"true");
} }
...@@ -149,7 +167,7 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context) ...@@ -149,7 +167,7 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context)
skip_next_row = true; skip_next_row = true;
} }
Context.get_table_metrics().add_rows(table_table_row_attlist_.table_number_rows_repeated_, !collapsed ? row_height : 0.0); Context.get_table_metrics().add_rows(table_table_row_attlist_.table_number_rows_repeated_, !hidden ? row_height : 0.0);
} }
...@@ -207,6 +225,11 @@ void table_rows_and_groups::xlsx_convert(oox::xlsx_conversion_context & Context) ...@@ -207,6 +225,11 @@ void table_rows_and_groups::xlsx_convert(oox::xlsx_conversion_context & Context)
void table_table_row_group::xlsx_convert(oox::xlsx_conversion_context & Context) void table_table_row_group::xlsx_convert(oox::xlsx_conversion_context & Context)
{ {
int count = table_rows_and_groups_.get_count();
int level = 1;
Context.set_table_row_group(count,table_table_row_group_attlist_.table_display_,level);
table_rows_and_groups_.xlsx_convert(Context); table_rows_and_groups_.xlsx_convert(Context);
} }
......
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