hopefully the last major restructuring

This commit is contained in:
Thomas Fussell 2014-05-21 17:48:51 -04:00
parent 3e78b7e49b
commit cf9f6f0ae9
109 changed files with 1072 additions and 582 deletions

1
.gitignore vendored
View File

@ -9,3 +9,4 @@ lib/
#*# #*#
*~ *~
.DS_Store .DS_Store
tests/test_data/writer/*.xlsx

View File

@ -55,14 +55,14 @@ project "xlnt"
"pugixml" "pugixml"
} }
includedirs { includedirs {
"../source/", "../include/xlnt",
"../third-party/pugixml/src", "../third-party/pugixml/src",
"../third-party/zlib/", "../third-party/zlib/",
"../third-party/zlib/contrib/minizip" "../third-party/zlib/contrib/minizip"
} }
files { files {
"../source/*.cpp", "../source/*.cpp",
"../source/*.h" "../include/xlnt/*.h"
} }
flags { flags {
"Unicode", "Unicode",

View File

@ -3,6 +3,8 @@
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
#include "types.h"
namespace xlnt { namespace xlnt {
class cell_reference; class cell_reference;
@ -308,13 +310,13 @@ public:
static std::string check_error(const std::string &value); static std::string check_error(const std::string &value);
cell(); cell();
cell(worksheet &ws, const std::string &column, int row); cell(worksheet &ws, const std::string &column, row_t row);
cell(worksheet &ws, const std::string &column, int row, const std::string &initial_value); cell(worksheet &ws, const std::string &column, row_t row, const std::string &initial_value);
std::string get_value() const; std::string get_value() const;
std::string get_column() const; std::string get_column() const;
int get_row() const; row_t get_row() const;
std::string to_string() const; std::string to_string() const;
@ -329,8 +331,8 @@ public:
bool bind_value(bool value); bool bind_value(bool value);
bool bind_value(const tm &value); bool bind_value(const tm &value);
bool get_merged() const; bool is_merged() const;
void set_merged(bool); void set_merged(bool merged);
std::string get_hyperlink() const; std::string get_hyperlink() const;
void set_hyperlink(const std::string &value); void set_hyperlink(const std::string &value);
@ -352,7 +354,7 @@ public:
bool is_date() const; bool is_date() const;
std::pair<int, int> get_anchor() const; //std::pair<int, int> get_anchor() const;
comment get_comment() const; comment get_comment() const;
void set_comment(comment comment); void set_comment(comment comment);
@ -385,7 +387,7 @@ public:
private: private:
friend struct worksheet_struct; friend struct worksheet_struct;
static cell allocate(worksheet owner, int column_index, int row_index); static cell allocate(worksheet owner, column_t column_index, row_t row_index);
static void deallocate(cell cell); static void deallocate(cell cell);
cell(cell_struct *root); cell(cell_struct *root);

View File

@ -0,0 +1,84 @@
#pragma once
#include <cstdint>
#include <string>
#include <utility>
#include "types.h"
namespace xlnt {
class cell_reference;
class range_reference;
struct cell_reference_hash
{
std::size_t operator()(const cell_reference &k) const;
};
class cell_reference
{
public:
/// <summary>
/// Convert a coordinate to an absolute coordinate string (B12 -> $B$12)
/// </summary>
static cell_reference make_absolute(const cell_reference &relative_reference);
/// <summary>
/// Convert a column letter into a column number (e.g. B -> 2)
/// </summary>
/// <remarks>
/// Excel only supports 1 - 3 letter column names from A->ZZZ, so we
/// restrict our column names to 1 - 3 characters, each in the range A - Z.
/// </remarks>
static column_t column_index_from_string(const std::string &column_string);
/// <summary>
/// Convert a column number into a column letter (3 -> 'C')
/// </summary>
/// <remarks>
/// Right shift the column col_idx by 26 to find column letters in reverse
/// order.These numbers are 1 - based, and can be converted to ASCII
/// ordinals by adding 64.
/// </remarks>
static std::string column_string_from_index(column_t column_index);
static std::pair<std::string, row_t> split_reference(const std::string &reference_string,
bool &absolute_column, bool &absolute_row);
cell_reference(const char *reference_string);
cell_reference(const std::string &reference_string);
cell_reference(const std::string &column, row_t row, bool absolute = false);
cell_reference(column_t column, row_t row, bool absolute = false);
bool is_absolute() const { return absolute_; }
void set_absolute(bool absolute) { absolute_ = absolute; }
std::string get_column() const { return column_string_from_index(column_index_ + 1); }
void set_column(const std::string &column) { column_index_ = column_index_from_string(column) - 1; }
column_t get_column_index() const { return column_index_; }
void set_column_index(column_t column_index) { column_index_ = column_index; }
row_t get_row() const { return row_index_ + 1; }
row_t set_row(row_t row) { row_index_ = row - 1; }
row_t get_row_index() const { return row_index_; }
void set_row_index(row_t row_index) { row_index_ = row_index; }
cell_reference make_offset(int column_offset, int row_offset) const;
std::string to_string() const;
range_reference to_range() const;
bool operator==(const cell_reference &comparand) const;
bool operator==(const std::string &reference_string) const { return *this == cell_reference(reference_string); }
bool operator==(const char *reference_string) const { return *this == std::string(reference_string); }
private:
column_t column_index_;
row_t row_index_;
bool absolute_;
};
} // namespace xlnt

View File

@ -0,0 +1,47 @@
#pragma once
#include "cell.h"
#include "relationship.h"
namespace xlnt {
struct cell_struct
{
cell_struct(worksheet_struct *ws, int column, int row)
: type(cell::type::null), parent_worksheet(ws),
column(column), row(row),
hyperlink_rel("invalid", "")
{
}
cell_struct()
: type(cell::type::null), parent_worksheet(nullptr),
column(0), row(0), hyperlink_rel("invalid", "")
{
}
std::string to_string() const;
cell::type type;
union
{
long double numeric_value;
bool bool_value;
};
std::string error_value;
tm date_value;
std::string string_value;
std::string formula_value;
worksheet_struct *parent_worksheet;
column_t column;
row_t row;
style *style;
relationship hyperlink_rel;
bool merged;
};
} // namespace xlnt

14
include/xlnt/config.h Normal file
View File

@ -0,0 +1,14 @@
#pragma once
namespace xlnt {
enum class limit_style
{
openpyxl,
excel,
maximum
};
const limit_style LimitStyle = limit_style::openpyxl;
}

View File

@ -3,14 +3,16 @@
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
#include "types.h"
namespace xlnt { namespace xlnt {
struct constants struct constants
{ {
static const int MinRow; static const row_t MinRow;
static const int MinColumn; static const row_t MaxRow;
static const int MaxColumn; static const column_t MinColumn;
static const int MaxRow; static const column_t MaxColumn;
// constants // constants
static const std::string PackageProps; static const std::string PackageProps;

View File

@ -0,0 +1,22 @@
#pragma once
#include <exception>
#include <string>
namespace xlnt {
class bad_sheet_title : public std::runtime_error
{
public:
bad_sheet_title(const std::string &title);
};
class bad_cell_coordinates : public std::runtime_error
{
public:
bad_cell_coordinates(int row, int column);
bad_cell_coordinates(const std::string &coord_string);
};
} // namespace xlnt

View File

@ -2,6 +2,9 @@
#include <string> #include <string>
#include "range_reference.h"
#include "worksheet.h"
namespace xlnt { namespace xlnt {
class range_reference; class range_reference;
@ -20,12 +23,9 @@ public:
bool operator==(const named_range &comparand) const; bool operator==(const named_range &comparand) const;
private: private:
friend class worksheet; std::string name_;
worksheet parent_worksheet_;
static named_range allocate(const std::string &name, worksheet ws, const range_reference &target); range_reference target_range_;
named_range(named_range_struct *);
named_range_struct *root_;
}; };
} // namespace xlnt } // namespace xlnt

170
include/xlnt/range.h Normal file
View File

@ -0,0 +1,170 @@
#pragma once
#include <memory>
#include <string>
#include <vector>
#include "range_reference.h"
#include "worksheet.h"
namespace xlnt {
class row
{
public:
row(worksheet ws, const range_reference &ref);
std::size_t num_cells() const;
cell front();
const cell front() const;
cell back();
const cell back() const;
cell operator[](std::size_t column_index);
const cell operator[](std::size_t column_index) const;
cell get_cell(std::size_t column_index);
const cell get_cell(std::size_t column_index) const;
class iterator
{
public:
iterator(worksheet ws, const cell_reference &start_cell);
~iterator();
bool operator==(const iterator &rhs);
bool operator!=(const iterator &rhs) { return !(*this == rhs); }
iterator operator++(int);
iterator &operator++();
cell operator*();
private:
worksheet ws_;
cell_reference current_cell_;
range_reference range_;
};
iterator begin();
iterator end();
class const_iterator
{
public:
const_iterator(worksheet ws, const cell_reference &start_cell);
~const_iterator();
bool operator==(const const_iterator &rhs);
bool operator!=(const const_iterator &rhs) { return !(*this == rhs); }
const_iterator operator++(int);
const_iterator &operator++();
const cell operator*();
private:
worksheet ws_;
cell_reference current_cell_;
range_reference range_;
};
const_iterator begin() const { return cbegin(); }
const_iterator end() const { return cend(); }
const_iterator cbegin() const;
const_iterator cend() const;
private:
worksheet ws_;
range_reference ref_;
};
class range
{
public:
range(worksheet ws, const range_reference &reference);
~range();
row operator[](std::size_t row_index);
const row operator[](std::size_t row_index) const;
bool operator==(const range &comparand) const;
bool operator!=(const range &comparand) const { return !(*this == comparand); }
row get_row(std::size_t row_index);
const row get_row(std::size_t row_index) const;
cell get_cell(const cell_reference &ref);
const cell get_cell(const cell_reference &ref) const;
range_reference get_reference() const;
std::size_t num_rows() const;
class iterator
{
public:
iterator(worksheet ws, const range_reference &start_cell);
~iterator();
bool operator==(const iterator &rhs);
bool operator!=(const iterator &rhs) { return !(*this == rhs); }
iterator operator++(int);
iterator &operator++();
row operator*();
private:
worksheet ws_;
cell_reference current_cell_;
range_reference range_;
};
iterator begin();
iterator end();
class const_iterator
{
public:
const_iterator(worksheet ws, const range_reference &start_cell);
~const_iterator();
bool operator==(const const_iterator &rhs);
bool operator!=(const const_iterator &rhs) { return !(*this == rhs); }
const_iterator operator++(int);
const_iterator &operator++();
const row operator*();
private:
worksheet ws_;
cell_reference current_cell_;
range_reference range_;
};
const_iterator begin() const { return cbegin(); }
const_iterator end() const { return cend(); }
const_iterator cbegin() const;
const_iterator cend() const;
private:
worksheet ws_;
range_reference ref_;
};
} // namespace xlnt

View File

@ -0,0 +1,43 @@
#pragma once
#include "cell_reference.h"
namespace xlnt {
class range_reference
{
public:
/// <summary>
/// Convert a coordinate to an absolute coordinate string (B12 -> $B$12)
/// </summary>
static range_reference make_absolute(const range_reference &relative_reference);
range_reference();
range_reference(const std::string &range_string);
range_reference(const char *range_string);
range_reference(const std::pair<cell_reference, cell_reference> &reference_pair);
range_reference(const cell_reference &start, const cell_reference &end);
range_reference(column_t column_index_start, row_t row_index_start, column_t column_index_end, row_t row_index_end);
bool is_single_cell() const;
column_t get_width() const;
row_t get_height() const;
cell_reference get_top_left() const { return top_left_; }
cell_reference get_bottom_right() const { return bottom_right_; }
cell_reference &get_top_left() { return top_left_; }
cell_reference &get_bottom_right() { return bottom_right_; }
range_reference make_offset(column_t column_offset, row_t row_offset) const;
std::string to_string() const;
bool operator==(const range_reference &comparand) const;
bool operator==(const std::string &reference_string) const { return *this == range_reference(reference_string); }
bool operator==(const char *reference_string) const { return *this == std::string(reference_string); }
private:
cell_reference top_left_;
cell_reference bottom_right_;
};
} // namespace xlnt

View File

@ -35,14 +35,7 @@ public:
theme theme
}; };
relationship(const std::string &type, const std::string &r_id = "", const std::string &target_uri = "") : id_(r_id), source_uri_(""), target_uri_(target_uri) relationship(const std::string &type, const std::string &r_id = "", const std::string &target_uri = "");
{
if(type == "hyperlink")
{
type_ = type::hyperlink;
target_mode_ = target_mode::external;
}
}
/// <summary> /// <summary>
/// gets a string that identifies the relationship. /// gets a string that identifies the relationship.

6
include/xlnt/types.h Normal file
View File

@ -0,0 +1,6 @@
#pragma once
#include <cstdint>
typedef uint32_t row_t;
typedef uint32_t column_t;

View File

@ -1,15 +1,15 @@
#pragma once #pragma once
#include <list> #include <list>
#include <memory>
#include <unordered_map> #include <unordered_map>
#include "range.h"
namespace xlnt { namespace xlnt {
class cell; class cell;
class cell_reference; class cell_reference;
class named_range; class named_range;
class range;
class range_reference; class range_reference;
class relationship; class relationship;
class workbook; class workbook;
@ -136,6 +136,7 @@ public:
// container // container
cell get_cell(const cell_reference &reference); cell get_cell(const cell_reference &reference);
const cell get_cell(const cell_reference &reference) const;
range get_range(const range_reference &reference); range get_range(const range_reference &reference);
range get_named_range(const std::string &name); range get_named_range(const std::string &name);
range rows() const; range rows() const;
@ -172,8 +173,11 @@ public:
bool operator!=(std::nullptr_t) const; bool operator!=(std::nullptr_t) const;
void operator=(const worksheet &other); void operator=(const worksheet &other);
cell operator[](const cell_reference &reference); cell operator[](const cell_reference &reference);
const cell operator[](const cell_reference &reference) const;
range operator[](const range_reference &reference); range operator[](const range_reference &reference);
range operator[](const std::string &named_range); const range operator[](const range_reference &reference) const;
range operator[](const std::string &range_string);
const range operator[](const std::string &range_string) const;
// page // page
page_setup &get_page_setup(); page_setup &get_page_setup();
@ -185,6 +189,8 @@ public:
void set_auto_filter(const range_reference &reference); void set_auto_filter(const range_reference &reference);
void unset_auto_filter(); void unset_auto_filter();
bool has_auto_filter() const; bool has_auto_filter() const;
void reserve(std::size_t n);
private: private:
friend class workbook; friend class workbook;

View File

@ -8,36 +8,17 @@
#include "zip.h" #include "zip.h"
#include "unzip.h" #include "unzip.h"
/*
namespace xlnt {
class cell;
class comment;
class drawing;
class named_range;
class protection;
class relationship;
class style;
class workbook;
class worksheet;
struct cell_struct;
struct drawing_struct;
struct named_range_struct;
struct worksheet_struct;
} // namespace xlnt
*/
#include "cell.h" #include "cell.h"
#include "cell_reference.h"
#include "constants.h" #include "constants.h"
#include "custom_exceptions.h" #include "custom_exceptions.h"
#include "drawing.h" #include "drawing.h"
#include "named_range.h" #include "named_range.h"
#include "protection.h" #include "protection.h"
#include "range.h"
#include "reader.h" #include "reader.h"
#include "reference.h" #include "range_reference.h"
#include "relationship.h" #include "relationship.h"
#include "string_table.h" #include "string_table.h"
#include "workbook.h" #include "workbook.h"

View File

@ -1,8 +1,10 @@
#include <algorithm>
#include <locale>
#include <sstream> #include <sstream>
#include "cell.h" #include "cell.h"
#include "cell_reference.h"
#include "reference.h" #include "cell_struct.h"
#include "relationship.h" #include "relationship.h"
#include "worksheet.h" #include "worksheet.h"
@ -13,39 +15,6 @@ struct worksheet_struct;
const xlnt::color xlnt::color::black(0); const xlnt::color xlnt::color::black(0);
const xlnt::color xlnt::color::white(1); const xlnt::color xlnt::color::white(1);
struct cell_struct
{
cell_struct(worksheet_struct *ws, int column, int row)
: type(cell::type::null), parent_worksheet(ws),
column(column), row(row),
hyperlink_rel("invalid", "")
{
}
std::string to_string() const;
cell::type type;
union
{
long double numeric_value;
bool bool_value;
};
std::string error_value;
tm date_value;
std::string string_value;
std::string formula_value;
worksheet_struct *parent_worksheet;
int column;
int row;
style style;
relationship hyperlink_rel;
bool merged;
};
const std::unordered_map<std::string, int> cell::ErrorCodes = const std::unordered_map<std::string, int> cell::ErrorCodes =
{ {
{"#NULL!", 0}, {"#NULL!", 0},
@ -61,14 +30,14 @@ cell::cell() : root_(nullptr)
{ {
} }
cell::cell(worksheet &worksheet, const std::string &column, int row) : root_(nullptr) cell::cell(worksheet &worksheet, const std::string &column, row_t row) : root_(nullptr)
{ {
cell self = worksheet.get_cell(column + std::to_string(row)); cell self = worksheet.get_cell(column + std::to_string(row));
root_ = self.root_; root_ = self.root_;
} }
cell::cell(worksheet &worksheet, const std::string &column, int row, const std::string &initial_value) : root_(nullptr) cell::cell(worksheet &worksheet, const std::string &column, row_t row, const std::string &initial_value) : root_(nullptr)
{ {
cell self = worksheet.get_cell(column + std::to_string(row)); cell self = worksheet.get_cell(column + std::to_string(row));
root_ = self.root_; root_ = self.root_;
@ -102,7 +71,7 @@ std::string cell::get_value() const
} }
} }
int cell::get_row() const row_t cell::get_row() const
{ {
return root_->row + 1; return root_->row + 1;
} }
@ -222,7 +191,7 @@ void cell::set_merged(bool merged)
root_->merged = merged; root_->merged = merged;
} }
bool cell::get_merged() const bool cell::is_merged() const
{ {
return root_->merged; return root_->merged;
} }
@ -348,12 +317,20 @@ bool operator==(const tm &comparand, const xlnt::cell &cell)
style &cell::get_style() style &cell::get_style()
{ {
return root_->style; if(root_->style == nullptr)
{
root_->style = new style();
}
return *root_->style;
} }
const style &cell::get_style() const const style &cell::get_style() const
{ {
return root_->style; if(root_->style == nullptr)
{
root_->style = new style();
}
return *root_->style;
} }
xlnt::cell::type cell::get_data_type() const xlnt::cell::type cell::get_data_type() const
@ -460,7 +437,7 @@ std::string cell_struct::to_string() const
return "<Cell " + worksheet(parent_worksheet).get_title() + "." + cell_reference(column, row).to_string() + ">"; return "<Cell " + worksheet(parent_worksheet).get_title() + "." + cell_reference(column, row).to_string() + ">";
} }
cell cell::allocate(xlnt::worksheet owner, int column_index, int row_index) cell cell::allocate(xlnt::worksheet owner, column_t column_index, row_t row_index)
{ {
return new cell_struct(owner.root_, column_index, row_index); return new cell_struct(owner.root_, column_index, row_index);
} }

View File

@ -1,13 +1,15 @@
#include <locale> #include <locale>
#include "reference.h" #include "cell_reference.h"
#include "constants.h"
#include "custom_exceptions.h" #include "custom_exceptions.h"
#include "range_reference.h"
namespace xlnt { namespace xlnt {
std::size_t cell_reference_hash::operator()(const cell_reference &k) const std::size_t cell_reference_hash::operator()(const cell_reference &k) const
{ {
return std::hash<std::string>()(k.to_string()); return k.get_row_index() * constants::MaxColumn + k.get_column_index();
} }
cell_reference cell_reference::make_absolute(const cell_reference &relative_reference) cell_reference cell_reference::make_absolute(const cell_reference &relative_reference)
@ -29,7 +31,7 @@ cell_reference::cell_reference(const char *reference_string) : cell_reference(st
} }
cell_reference::cell_reference(const std::string &column, int row, bool absolute) cell_reference::cell_reference(const std::string &column, row_t row, bool absolute)
: column_index_(column_index_from_string(column) - 1), : column_index_(column_index_from_string(column) - 1),
row_index_(row - 1), row_index_(row - 1),
absolute_(absolute) absolute_(absolute)
@ -40,7 +42,7 @@ absolute_(absolute)
} }
} }
cell_reference::cell_reference(int column_index, int row_index, bool absolute) cell_reference::cell_reference(column_t column_index, row_t row_index, bool absolute)
: column_index_(column_index), : column_index_(column_index),
row_index_(row_index), row_index_(row_index),
absolute_(absolute) absolute_(absolute)
@ -60,7 +62,12 @@ std::string cell_reference::to_string() const
return column_string_from_index(column_index_ + 1) + std::to_string(row_index_ + 1); return column_string_from_index(column_index_ + 1) + std::to_string(row_index_ + 1);
} }
std::pair<std::string, int> cell_reference::split_reference(const std::string &reference_string, bool &absolute_column, bool &absolute_row) range_reference cell_reference::to_range() const
{
return range_reference(column_index_, row_index_, column_index_, row_index_);
}
std::pair<std::string, row_t> cell_reference::split_reference(const std::string &reference_string, bool &absolute_column, bool &absolute_row)
{ {
absolute_column = false; absolute_column = false;
absolute_row = false; absolute_row = false;
@ -127,14 +134,14 @@ bool cell_reference::operator==(const cell_reference &comparand) const
&& absolute_ == comparand.absolute_; && absolute_ == comparand.absolute_;
} }
int cell_reference::column_index_from_string(const std::string &column_string) column_t cell_reference::column_index_from_string(const std::string &column_string)
{ {
if(column_string.length() > 3 || column_string.empty()) if(column_string.length() > 3 || column_string.empty())
{ {
throw std::runtime_error("column must be one to three characters"); throw std::runtime_error("column must be one to three characters");
} }
int column_index = 0; column_t column_index = 0;
int place = 1; int place = 1;
for(int i = static_cast<int>(column_string.length()) - 1; i >= 0; i--) for(int i = static_cast<int>(column_string.length()) - 1; i >= 0; i--)
@ -155,11 +162,11 @@ int cell_reference::column_index_from_string(const std::string &column_string)
// Right shift the column col_idx by 26 to find column letters in reverse // Right shift the column col_idx by 26 to find column letters in reverse
// order.These numbers are 1 - based, and can be converted to ASCII // order.These numbers are 1 - based, and can be converted to ASCII
// ordinals by adding 64. // ordinals by adding 64.
std::string cell_reference::column_string_from_index(int column_index) std::string cell_reference::column_string_from_index(column_t column_index)
{ {
// these indicies corrospond to A->ZZZ and include all allowed // these indicies corrospond to A->ZZZ and include all allowed
// columns // columns
if(column_index < 1 || column_index > 18278) if(column_index < 1 || column_index > constants::MaxColumn)
{ {
auto msg = "Column index out of bounds: " + std::to_string(column_index); auto msg = "Column index out of bounds: " + std::to_string(column_index);
throw std::runtime_error(msg); throw std::runtime_error(msg);
@ -185,89 +192,5 @@ std::string cell_reference::column_string_from_index(int column_index)
return column_letter; return column_letter;
} }
range_reference range_reference::make_absolute(const xlnt::range_reference &relative_reference)
{
range_reference copy = relative_reference;
copy.top_left_.set_absolute(true);
copy.bottom_right_.set_absolute(true);
return copy;
}
range_reference::range_reference() : range_reference("A1")
{
}
range_reference::range_reference(const char *range_string) : range_reference(std::string(range_string))
{
}
range_reference::range_reference(const std::string &range_string)
: top_left_("A1"),
bottom_right_("A1")
{
auto colon_index = range_string.find(':');
if(colon_index != std::string::npos)
{
top_left_ = cell_reference(range_string.substr(0, colon_index));
bottom_right_ = cell_reference(range_string.substr(colon_index + 1));
}
else
{
top_left_ = cell_reference(range_string);
bottom_right_ = cell_reference(range_string);
}
}
range_reference::range_reference(const cell_reference &top_left, const cell_reference &bottom_right)
: top_left_(top_left),
bottom_right_(bottom_right)
{
}
range_reference::range_reference(int column_index_start, int row_index_start, int column_index_end, int row_index_end)
: top_left_(column_index_start, row_index_start),
bottom_right_(column_index_end, row_index_end)
{
}
range_reference range_reference::make_offset(int column_offset, int row_offset) const
{
return range_reference(top_left_.make_offset(column_offset, row_offset), bottom_right_.make_offset(column_offset, row_offset));
}
int range_reference::get_height() const
{
return bottom_right_.get_row_index() - top_left_.get_row_index();
}
int range_reference::get_width() const
{
return bottom_right_.get_column_index() - top_left_.get_column_index();
}
bool range_reference::is_single_cell() const
{
return get_width() == 0 && get_height() == 0;
}
std::string range_reference::to_string() const
{
if(is_single_cell())
{
return top_left_.to_string();
}
return top_left_.to_string() + ":" + bottom_right_.to_string();
}
bool range_reference::operator==(const range_reference &comparand) const
{
return comparand.top_left_ == top_left_
&& comparand.bottom_right_ == bottom_right_;
}
} }

View File

@ -1,11 +1,14 @@
#include <limits>
#include "constants.h" #include "constants.h"
#include "config.h"
namespace xlnt { namespace xlnt {
const int constants::MinRow = 0; const row_t constants::MinRow = 1;
const int constants::MinColumn = 0; const row_t constants::MaxRow = LimitStyle == limit_style::excel ? (1u << 20) : UINT32_MAX;
const int constants::MaxColumn = 16384; const column_t constants::MinColumn = 1;
const int constants::MaxRow = 1048576; const column_t constants::MaxColumn = LimitStyle == limit_style::excel ? (1u << 14) : LimitStyle == limit_style::openpyxl ? 18278 : UINT32_MAX;
// constants // constants
const std::string constants::PackageProps = "docProps"; const std::string constants::PackageProps = "docProps";
@ -28,6 +31,11 @@ const std::string constants::ArcSharedString = PackageXl + "/sharedStrings.xml";
const std::unordered_map<std::string, std::string> constants::Namespaces = const std::unordered_map<std::string, std::string> constants::Namespaces =
{ {
{"spreadsheetml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"},
{"content-types", "http://schemas.openxmlformats.org/package/2006/content-types"},
{"relationships", "http://schemas.openxmlformats.org/package/2006/relationships"},
{"drawingml", "http://schemas.openxmlformats.org/drawingml/2006/main"},
{"r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"},
{"cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"}, {"cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"},
{"dc", "http://purl.org/dc/elements/1.1/"}, {"dc", "http://purl.org/dc/elements/1.1/"},
{"dcterms", "http://purl.org/dc/terms/"}, {"dcterms", "http://purl.org/dc/terms/"},

View File

@ -1 +1,23 @@
#include "custom_exceptions.h" #include "custom_exceptions.h"
namespace xlnt {
bad_sheet_title::bad_sheet_title(const std::string &title)
: std::runtime_error(std::string("bad worksheet title: ") + title)
{
}
bad_cell_coordinates::bad_cell_coordinates(int row, int column)
: std::runtime_error(std::string("bad cell coordinates: (") + std::to_string(row) + "," + std::to_string(column) + ")")
{
}
bad_cell_coordinates::bad_cell_coordinates(const std::string &coord_string)
: std::runtime_error(std::string("bad cell coordinates: (") + coord_string + ")")
{
}
} // namespace xlnt

View File

@ -1,34 +0,0 @@
#pragma once
#include <exception>
#include <string>
namespace xlnt {
class bad_sheet_title : public std::runtime_error
{
public:
bad_sheet_title(const std::string &title)
: std::runtime_error(std::string("bad worksheet title: ") + title)
{
}
};
class bad_cell_coordinates : public std::runtime_error
{
public:
bad_cell_coordinates(int row, int column)
: std::runtime_error(std::string("bad cell coordinates: (") + std::to_string(row) + "," + std::to_string(column) + ")")
{
}
bad_cell_coordinates(const std::string &coord_string)
: std::runtime_error(std::string("bad cell coordinates: (") + coord_string + ")")
{
}
};
} // namespace xlnt

View File

@ -1 +1,18 @@
#include "drawing.h" #include "drawing.h"
namespace xlnt {
struct drawing_struct
{
drawing_struct()
{
}
};
drawing::drawing() : root_(nullptr)
{
}
} // namespace xlnt

View File

@ -1,62 +1,40 @@
#include "named_range.h" #include "named_range.h"
#include "reference.h" #include "range_reference.h"
#include "worksheet.h" #include "worksheet.h"
namespace xlnt { namespace xlnt {
struct named_range_struct
{
named_range_struct(const std::string &name, worksheet parent, const range_reference &reference)
: name_(name),
parent_worksheet_(parent),
target_range_(reference)
{
}
std::string name_;
worksheet parent_worksheet_;
range_reference target_range_;
};
void named_range::set_scope(worksheet scope) void named_range::set_scope(worksheet scope)
{ {
root_->parent_worksheet_ = scope; parent_worksheet_ = scope;
}
named_range::named_range(named_range_struct *root) : root_(root)
{
} }
bool named_range::operator==(const xlnt::named_range &comparand) const bool named_range::operator==(const xlnt::named_range &comparand) const
{ {
return comparand.root_->parent_worksheet_ == root_->parent_worksheet_ return comparand.parent_worksheet_ == parent_worksheet_
&& comparand.root_->target_range_ == root_->target_range_; && comparand.target_range_ == target_range_;
} }
named_range::named_range() : root_(nullptr) named_range::named_range()
{ {
} }
named_range::named_range(const std::string &name, worksheet ws, const range_reference &target) named_range::named_range(const std::string &name, worksheet ws, const range_reference &target)
: name_(name),
parent_worksheet_(ws),
target_range_(target)
{ {
root_ = ws.create_named_range(name, target).root_;
} }
range_reference named_range::get_target_range() const range_reference named_range::get_target_range() const
{ {
return root_->target_range_; return target_range_;
} }
worksheet named_range::get_scope() const worksheet named_range::get_scope() const
{ {
return root_->parent_worksheet_; return parent_worksheet_;
}
named_range named_range::allocate(const std::string &name, xlnt::worksheet ws, const xlnt::range_reference &target)
{
return new named_range_struct(name, ws, target);
} }
} // namespace xlnt } // namespace xlnt

View File

@ -1,3 +1,5 @@
#include <algorithm>
#include <locale>
#include <sstream> #include <sstream>
#include "protection.h" #include "protection.h"

View File

@ -1 +1,288 @@
#include "range.h" #include "range.h"
#include "cell.h"
#include "range_reference.h"
#include "worksheet.h"
namespace xlnt {
row::iterator::iterator(worksheet ws, const cell_reference &start_cell)
: ws_(ws),
current_cell_(start_cell),
range_(start_cell.to_range())
{
}
row::iterator::~iterator()
{
}
bool row::iterator::operator==(const iterator &rhs)
{
return ws_ == rhs.ws_
&& current_cell_ == rhs.current_cell_;
}
row::iterator row::iterator::operator++(int)
{
iterator old = *this;
++*this;
return old;
}
row::iterator &row::iterator::operator++()
{
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
return *this;
}
cell row::iterator::operator*()
{
return ws_[current_cell_];
}
row::const_iterator::const_iterator(worksheet ws, const cell_reference &start_cell)
: ws_(ws),
current_cell_(start_cell),
range_(start_cell.to_range())
{
}
row::const_iterator::~const_iterator()
{
}
bool row::const_iterator::operator==(const const_iterator &rhs)
{
return ws_ == rhs.ws_
&& rhs.current_cell_ == current_cell_;
}
row::const_iterator row::const_iterator::operator++(int)
{
const_iterator old = *this;
++*this;
return old;
}
row::const_iterator &row::const_iterator::operator++()
{
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
return *this;
}
const cell row::const_iterator::operator*()
{
const worksheet ws_const = ws_;
return ws_const[current_cell_];
}
row::iterator row::begin()
{
return iterator(ws_, ref_.get_top_left());
}
row::iterator row::end()
{
auto past_end = ref_.get_bottom_right();
past_end.set_column_index(past_end.get_column_index() + 1);
return iterator(ws_, past_end);
}
row::const_iterator row::cbegin() const
{
return const_iterator(ws_, ref_.get_top_left());
}
row::const_iterator row::cend() const
{
auto past_end = ref_.get_top_left();
past_end.set_column_index(past_end.get_column_index() + 1);
return const_iterator(ws_, past_end);
}
cell row::operator[](std::size_t column_index)
{
return get_cell(column_index);
}
std::size_t row::num_cells() const
{
return ref_.get_width() + 1;
}
row::row(worksheet ws, const range_reference &reference)
: ws_(ws),
ref_(reference)
{
}
cell row::front()
{
return get_cell(ref_.get_top_left().get_column_index());
}
cell row::back()
{
return get_cell(ref_.get_bottom_right().get_column_index());
}
cell row::get_cell(std::size_t column_index)
{
return ws_.get_cell(ref_.get_top_left().make_offset((int)column_index, 0));
}
range::range(worksheet ws, const range_reference &reference)
: ws_(ws),
ref_(reference)
{
}
range::~range()
{
}
row range::operator[](std::size_t row)
{
return get_row(row);
}
range_reference range::get_reference() const
{
return ref_;
}
std::size_t range::num_rows() const
{
return ref_.get_bottom_right().get_row_index() - ref_.get_top_left().get_row_index() + 1;
}
bool range::operator==(const range &comparand) const
{
return ref_ == comparand.ref_
&& ws_ == comparand.ws_;
}
row range::get_row(std::size_t row_)
{
range_reference row_reference(ref_.get_top_left().get_column_index(), ref_.get_top_left().get_row_index() + (int)row_,
ref_.get_bottom_right().get_column_index(), ref_.get_top_left().get_row_index() + (int)row_);
return row(ws_, row_reference);
}
cell range::get_cell(const cell_reference &ref)
{
return (*this)[ref.get_row_index()][ref.get_column_index()];
}
range::iterator range::begin()
{
cell_reference top_right(ref_.get_bottom_right().get_column_index(),
ref_.get_top_left().get_row_index());
range_reference row_range(ref_.get_top_left(), top_right);
return iterator(ws_, row_range);
}
range::iterator range::end()
{
auto past_end_row_index = ref_.get_bottom_right().get_row_index() + 1;
cell_reference bottom_left(ref_.get_top_left().get_column_index(), past_end_row_index);
cell_reference bottom_right(ref_.get_bottom_right().get_column_index(), past_end_row_index);
return iterator(ws_, range_reference(bottom_left, bottom_right));
}
range::const_iterator range::cbegin() const
{
cell_reference top_right(ref_.get_bottom_right().get_column_index(),
ref_.get_top_left().get_row_index());
range_reference row_range(ref_.get_top_left(), top_right);
return const_iterator(ws_, row_range);
}
range::const_iterator range::cend() const
{
auto past_end_row_index = ref_.get_bottom_right().get_row_index() + 1;
cell_reference bottom_left(ref_.get_top_left().get_column_index(), past_end_row_index);
cell_reference bottom_right(ref_.get_bottom_right().get_column_index(), past_end_row_index);
return const_iterator(ws_, range_reference(bottom_left, bottom_right));
}
range::iterator::iterator(worksheet ws, const range_reference &start_cell)
: ws_(ws),
current_cell_(start_cell.get_top_left()),
range_(start_cell)
{
}
range::iterator::~iterator()
{
}
bool range::iterator::operator==(const iterator &rhs)
{
return ws_ == rhs.ws_
&& current_cell_ == rhs.current_cell_;
}
range::iterator range::iterator::operator++(int)
{
iterator old = *this;
++*this;
return old;
}
range::iterator &range::iterator::operator++()
{
current_cell_.set_row_index(current_cell_.get_row_index() + 1);
return *this;
}
row range::iterator::operator*()
{
range_reference row_range(range_.get_top_left().get_column_index(),
current_cell_.get_row_index(),
range_.get_bottom_right().get_column_index(),
current_cell_.get_row_index());
return row(ws_, row_range);
}
range::const_iterator::const_iterator(worksheet ws, const range_reference &start_cell)
: ws_(ws),
current_cell_(start_cell.get_top_left()),
range_(start_cell)
{
}
range::const_iterator::~const_iterator()
{
}
bool range::const_iterator::operator==(const const_iterator &rhs)
{
return ws_ == rhs.ws_
&& rhs.current_cell_ == current_cell_;
}
range::const_iterator range::const_iterator::operator++(int)
{
const_iterator old = *this;
++*this;
return old;
}
range::const_iterator &range::const_iterator::operator++()
{
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
return *this;
}
const row range::const_iterator::operator*()
{
range_reference row_range(range_.get_top_left().get_column_index(),
current_cell_.get_row_index(),
range_.get_bottom_right().get_column_index(),
current_cell_.get_row_index());
return row(ws_, row_range);
}
} // namespace xlnt

View File

@ -1,12 +0,0 @@
#pragma once
#include <string>
#include <vector>
namespace xlnt {
class cell;
typedef std::vector<std::vector<cell>> range;
} // namespace xlnt

View File

@ -0,0 +1,90 @@
#include <locale>
#include "range_reference.h"
namespace xlnt {
range_reference range_reference::make_absolute(const xlnt::range_reference &relative_reference)
{
range_reference copy = relative_reference;
copy.top_left_.set_absolute(true);
copy.bottom_right_.set_absolute(true);
return copy;
}
range_reference::range_reference() : range_reference("A1")
{
}
range_reference::range_reference(const char *range_string) : range_reference(std::string(range_string))
{
}
range_reference::range_reference(const std::string &range_string)
: top_left_("A1"),
bottom_right_("A1")
{
auto colon_index = range_string.find(':');
if(colon_index != std::string::npos)
{
top_left_ = cell_reference(range_string.substr(0, colon_index));
bottom_right_ = cell_reference(range_string.substr(colon_index + 1));
}
else
{
top_left_ = cell_reference(range_string);
bottom_right_ = cell_reference(range_string);
}
}
range_reference::range_reference(const cell_reference &top_left, const cell_reference &bottom_right)
: top_left_(top_left),
bottom_right_(bottom_right)
{
}
range_reference::range_reference(column_t column_index_start, row_t row_index_start, column_t column_index_end, row_t row_index_end)
: top_left_(column_index_start, row_index_start),
bottom_right_(column_index_end, row_index_end)
{
}
range_reference range_reference::make_offset(column_t column_offset, row_t row_offset) const
{
return range_reference(top_left_.make_offset(column_offset, row_offset), bottom_right_.make_offset(column_offset, row_offset));
}
row_t range_reference::get_height() const
{
return bottom_right_.get_row_index() - top_left_.get_row_index();
}
column_t range_reference::get_width() const
{
return bottom_right_.get_column_index() - top_left_.get_column_index();
}
bool range_reference::is_single_cell() const
{
return get_width() == 0 && get_height() == 0;
}
std::string range_reference::to_string() const
{
if(is_single_cell())
{
return top_left_.to_string();
}
return top_left_.to_string() + ":" + bottom_right_.to_string();
}
bool range_reference::operator==(const range_reference &comparand) const
{
return comparand.top_left_ == top_left_
&& comparand.bottom_right_ == bottom_right_;
}
}

View File

@ -1,8 +1,9 @@
#include <algorithm>
#include <pugixml.hpp> #include <pugixml.hpp>
#include "reader.h" #include "reader.h"
#include "cell.h" #include "cell.h"
#include "reference.h" #include "range_reference.h"
#include "workbook.h" #include "workbook.h"
#include "worksheet.h" #include "worksheet.h"
@ -136,7 +137,7 @@ void read_worksheet_common(worksheet ws, const pugi::xml_node &root_node, const
} }
else if(cell_node.attribute("s") != nullptr && std::string(cell_node.attribute("s").as_string()) == "2") // date else if(cell_node.attribute("s") != nullptr && std::string(cell_node.attribute("s").as_string()) == "2") // date
{ {
tm date; tm date = tm();
date.tm_year = 1900; date.tm_year = 1900;
int days = cell_node.child("v").text().as_int(); int days = cell_node.child("v").text().as_int();
while(days > 365) while(days > 365)

View File

@ -1,116 +0,0 @@
#pragma once
#include <string>
#include <utility>
namespace xlnt {
class cell_reference;
struct cell_reference_hash
{
std::size_t operator()(const cell_reference &k) const;
};
class cell_reference
{
public:
/// <summary>
/// Convert a coordinate to an absolute coordinate string (B12 -> $B$12)
/// </summary>
static cell_reference make_absolute(const cell_reference &relative_reference);
/// <summary>
/// Convert a column letter into a column number (e.g. B -> 2)
/// </summary>
/// <remarks>
/// Excel only supports 1 - 3 letter column names from A->ZZZ, so we
/// restrict our column names to 1 - 3 characters, each in the range A - Z.
/// </remarks>
static int column_index_from_string(const std::string &column_string);
/// <summary>
/// Convert a column number into a column letter (3 -> 'C')
/// </summary>
/// <remarks>
/// Right shift the column col_idx by 26 to find column letters in reverse
/// order.These numbers are 1 - based, and can be converted to ASCII
/// ordinals by adding 64.
/// </remarks>
static std::string column_string_from_index(int column_index);
static std::pair<std::string, int> split_reference(const std::string &reference_string,
bool &absolute_column, bool &absolute_row);
cell_reference(const char *reference_string);
cell_reference(const std::string &reference_string);
cell_reference(const std::string &column, int row, bool absolute = false);
cell_reference(int column, int row, bool absolute = false);
bool is_absolute() const { return absolute_; }
void set_absolute(bool absolute) { absolute_ = absolute; }
std::string get_column() const { return column_string_from_index(column_index_ + 1); }
void set_column(const std::string &column) { column_index_ = column_index_from_string(column) - 1; }
int get_column_index() const { return column_index_; }
void set_column_index(int column_index) { column_index_ = column_index; }
int get_row() const { return row_index_ + 1; }
void set_row(int row) { row_index_ = row - 1; }
int get_row_index() const { return row_index_; }
void set_row_index(int row_index) { row_index_ = row_index; }
cell_reference make_offset(int column_offset, int row_offset) const;
std::string to_string() const;
bool operator==(const cell_reference &comparand) const;
bool operator==(const std::string &reference_string) const { return *this == cell_reference(reference_string); }
bool operator==(const char *reference_string) const { return *this == std::string(reference_string); }
private:
int column_index_;
int row_index_;
bool absolute_;
};
class range_reference
{
public:
/// <summary>
/// Convert a coordinate to an absolute coordinate string (B12 -> $B$12)
/// </summary>
static range_reference make_absolute(const range_reference &relative_reference);
range_reference();
range_reference(const std::string &range_string);
range_reference(const char *range_string);
range_reference(const std::pair<cell_reference, cell_reference> &reference_pair);
range_reference(const cell_reference &start, const cell_reference &end);
range_reference(const std::string &column_start, int row_start, const std::string &column_end, int row_end);
range_reference(int column_start, int row_start, int column_end, int row_end);
bool is_single_cell() const;
int get_width() const;
int get_height() const;
cell_reference get_top_left() const { return top_left_; }
cell_reference get_bottom_right() const { return bottom_right_; }
cell_reference &get_top_left() { return top_left_; }
cell_reference &get_bottom_right() { return bottom_right_; }
range_reference make_offset(int column_offset, int row_offset) const;
std::string to_string() const;
bool operator==(const range_reference &comparand) const;
bool operator==(const std::string &reference_string) const { return *this == range_reference(reference_string); }
bool operator==(const char *reference_string) const { return *this == std::string(reference_string); }
private:
cell_reference top_left_;
cell_reference bottom_right_;
};
} // namespace xlnt

View File

@ -1 +1,14 @@
#include "relationship.h" #include "relationship.h"
namespace xlnt {
relationship::relationship(const std::string &type, const std::string &r_id, const std::string &target_uri) : id_(r_id), source_uri_(""), target_uri_(target_uri)
{
if(type == "hyperlink")
{
type_ = type::hyperlink;
target_mode_ = target_mode::external;
}
}
} // namespace xlnt

View File

@ -1,3 +1,4 @@
#include <algorithm>
#include <sstream> #include <sstream>
#include <pugixml.hpp> #include <pugixml.hpp>

View File

@ -1,7 +1,11 @@
#include <algorithm>
#include "worksheet.h" #include "worksheet.h"
#include "cell.h" #include "cell.h"
#include "cell_struct.h"
#include "named_range.h" #include "named_range.h"
#include "reference.h" #include "range.h"
#include "range_reference.h"
#include "relationship.h" #include "relationship.h"
#include "workbook.h" #include "workbook.h"
@ -12,7 +16,6 @@ struct worksheet_struct
worksheet_struct(workbook &parent_workbook, const std::string &title) worksheet_struct(workbook &parent_workbook, const std::string &title)
: parent_(parent_workbook), title_(title), freeze_panes_("A1") : parent_(parent_workbook), title_(title), freeze_panes_("A1")
{ {
} }
~worksheet_struct() ~worksheet_struct()
@ -22,20 +25,16 @@ struct worksheet_struct
void clear() void clear()
{ {
while(!cell_map_.empty()) cell_map_.clear();
{
cell::deallocate(cell_map_.begin()->second.root_);
cell_map_.erase(cell_map_.begin()->first);
}
} }
void garbage_collect() void garbage_collect()
{ {
std::vector<cell_reference> null_cell_keys; std::vector<cell_reference> null_cell_keys;
for(auto key_cell_pair : cell_map_) for(auto &key_cell_pair : cell_map_)
{ {
if(key_cell_pair.second.get_data_type() == cell::type::null) if(cell(&key_cell_pair.second).get_data_type() == cell::type::null)
{ {
null_cell_keys.push_back(key_cell_pair.first); null_cell_keys.push_back(key_cell_pair.first);
} }
@ -50,10 +49,10 @@ struct worksheet_struct
std::list<cell> get_cell_collection() std::list<cell> get_cell_collection()
{ {
std::list<xlnt::cell> cells; std::list<cell> cells;
for(auto cell : cell_map_) for(auto &c : cell_map_)
{ {
cells.push_front(xlnt::cell(cell.second)); cells.push_front(cell(&c.second));
} }
return cells; return cells;
} }
@ -83,33 +82,44 @@ struct worksheet_struct
freeze_panes_ = "A1"; freeze_panes_ = "A1";
} }
xlnt::cell get_cell(const cell_reference &reference) cell get_cell(const cell_reference &reference)
{ {
if(cell_map_.find(reference) == cell_map_.end()) if(cell_map_.find(reference) == cell_map_.end())
{ {
auto cell = cell::allocate(this, reference.get_column_index(), reference.get_row_index()); cell_map_[reference] = cell_struct(this, reference.get_column_index(), reference.get_row_index());
cell_map_[reference] = cell;
} }
return cell_map_[reference]; return &cell_map_[reference];
} }
/*
const xlnt::cell get_cell(const cell_reference &reference) const
{
if(cell_map_.find(reference) == cell_map_.end())
{
throw std::runtime_error("cell not found");
}
return &cell_map_.at(reference);
}
*/
int get_highest_row() const int get_highest_row() const
{ {
int highest = 0; row_t highest = 0;
for(auto cell : cell_map_) for(auto &cell : cell_map_)
{ {
highest = (std::max)(highest, cell.first.get_row_index()); highest = std::max(highest, cell.first.get_row_index());
} }
return highest + 1; return highest + 1;
} }
int get_highest_column() const int get_highest_column() const
{ {
int highest = 0; column_t highest = 0;
for(auto cell : cell_map_) for(auto &cell : cell_map_)
{ {
highest = (std::max)(highest, cell.first.get_column_index()); highest = std::max(highest, cell.first.get_column_index());
} }
return highest + 1; return highest + 1;
} }
@ -121,11 +131,11 @@ struct worksheet_struct
return 1; return 1;
} }
int lowest = cell_map_.begin()->first.get_row_index(); row_t lowest = cell_map_.begin()->first.get_row_index();
for(auto cell : cell_map_) for(auto &cell : cell_map_)
{ {
lowest = (std::min)(lowest, cell.first.get_row_index()); lowest = std::min(lowest, cell.first.get_row_index());
} }
return lowest + 1; return lowest + 1;
@ -138,11 +148,11 @@ struct worksheet_struct
return 1; return 1;
} }
int lowest = cell_map_.begin()->first.get_column_index(); column_t lowest = cell_map_.begin()->first.get_column_index();
for(auto cell : cell_map_) for(auto &cell : cell_map_)
{ {
lowest = (std::min)(lowest, cell.first.get_column_index()); lowest = std::min(lowest, cell.first.get_column_index());
} }
return lowest + 1; return lowest + 1;
@ -159,31 +169,9 @@ struct worksheet_struct
return range_reference(lowest_column - 1, lowest_row - 1, highest_column - 1, highest_row - 1); return range_reference(lowest_column - 1, lowest_row - 1, highest_column - 1, highest_row - 1);
} }
xlnt::range get_range(const range_reference &reference) range get_range(const range_reference &reference)
{ {
xlnt::range r; return range(worksheet(this), reference);
if(!reference.is_single_cell())
{
cell_reference min_ref = reference.get_top_left();
cell_reference max_ref = reference.get_bottom_right();
for(int row = min_ref.get_row_index(); row <= max_ref.get_row_index(); row++)
{
r.push_back(std::vector<xlnt::cell>());
for(int column = min_ref.get_column_index(); column <= max_ref.get_column_index(); column++)
{
r.back().push_back(get_cell(cell_reference(column, row)));
}
}
}
else
{
r.push_back(std::vector<xlnt::cell>());
r.back().push_back(get_cell(reference.get_top_left()));
}
return r;
} }
relationship create_relationship(const std::string &relationship_type, const std::string &target_uri) relationship create_relationship(const std::string &relationship_type, const std::string &target_uri)
@ -199,6 +187,7 @@ struct worksheet_struct
{ {
merged_cells_.push_back(reference); merged_cells_.push_back(reference);
bool first = true; bool first = true;
for(auto row : get_range(reference)) for(auto row : get_range(reference))
{ {
for(auto cell : row) for(auto cell : row)
@ -270,32 +259,17 @@ struct worksheet_struct
} }
} }
xlnt::range rows() range rows()
{ {
return get_range(calculate_dimension()); return get_range(calculate_dimension());
} }
xlnt::range columns()
{
int max_row = get_highest_row();
xlnt::range cols;
for(int col_idx = 0; col_idx < get_highest_column(); col_idx++)
{
cols.push_back(std::vector<xlnt::cell>());
for(auto row : get_range(range_reference(col_idx, 0, col_idx, max_row)))
{
cols.back().push_back(row[0]);
}
}
return cols;
}
void operator=(const worksheet_struct &other) = delete; void operator=(const worksheet_struct &other) = delete;
workbook &parent_; workbook &parent_;
std::string title_; std::string title_;
cell_reference freeze_panes_; cell_reference freeze_panes_;
std::unordered_map<cell_reference, xlnt::cell, cell_reference_hash> cell_map_; std::unordered_map<cell_reference, cell_struct, cell_reference_hash> cell_map_;
std::vector<relationship> relationships_; std::vector<relationship> relationships_;
page_setup page_setup_; page_setup page_setup_;
range_reference auto_filter_; range_reference auto_filter_;
@ -325,10 +299,15 @@ bool worksheet::has_frozen_panes() const
named_range worksheet::create_named_range(const std::string &name, const range_reference &reference) named_range worksheet::create_named_range(const std::string &name, const range_reference &reference)
{ {
root_->named_ranges_[name] = named_range(named_range::allocate(name, *this, reference)); root_->named_ranges_[name] = named_range(name, *this, reference);
return root_->named_ranges_[name]; return root_->named_ranges_[name];
} }
cell worksheet::operator[](const cell_reference &ref)
{
return get_cell(ref);
}
std::vector<range_reference> worksheet::get_merged_ranges() const std::vector<range_reference> worksheet::get_merged_ranges() const
{ {
return root_->merged_cells_; return root_->merged_cells_;
@ -346,7 +325,7 @@ void worksheet::set_auto_filter(const range_reference &reference)
void worksheet::set_auto_filter(const xlnt::range &range) void worksheet::set_auto_filter(const xlnt::range &range)
{ {
set_auto_filter(range_reference(range[0][0].get_reference(), range.back().back().get_reference())); set_auto_filter(range.get_reference());
} }
range_reference worksheet::get_auto_filter() const range_reference worksheet::get_auto_filter() const
@ -428,6 +407,11 @@ cell worksheet::get_cell(const cell_reference &reference)
return root_->get_cell(reference); return root_->get_cell(reference);
} }
const cell worksheet::get_cell(const cell_reference &reference) const
{
return root_->get_cell(reference);
}
range worksheet::get_named_range(const std::string &name) range worksheet::get_named_range(const std::string &name)
{ {
return get_range(root_->parent_.get_named_range(name, *this).get_target_range()); return get_range(root_->parent_.get_named_range(name, *this).get_target_range());
@ -495,11 +479,6 @@ xlnt::range worksheet::rows() const
return root_->rows(); return root_->rows();
} }
xlnt::range worksheet::columns() const
{
return root_->columns();
}
bool worksheet::operator==(const worksheet &other) const bool worksheet::operator==(const worksheet &other) const
{ {
return root_ == other.root_; return root_ == other.root_;
@ -526,7 +505,7 @@ void worksheet::operator=(const worksheet &other)
root_ = other.root_; root_ = other.root_;
} }
cell worksheet::operator[](const cell_reference &ref) const cell worksheet::operator[](const cell_reference &ref) const
{ {
return get_cell(ref); return get_cell(ref);
} }
@ -554,5 +533,10 @@ void worksheet::deallocate(xlnt::worksheet ws)
{ {
delete ws.root_; delete ws.root_;
} }
void worksheet::reserve(std::size_t n)
{
root_->cell_map_.reserve(n);
}
} // namespace xlnt } // namespace xlnt

View File

@ -7,7 +7,9 @@
#include "writer.h" #include "writer.h"
#include "cell.h" #include "cell.h"
#include "reference.h" #include "constants.h"
#include "range.h"
#include "range_reference.h"
#include "worksheet.h" #include "worksheet.h"
namespace xlnt { namespace xlnt {
@ -16,8 +18,8 @@ std::string writer::write_worksheet(worksheet ws, const std::vector<std::string>
{ {
pugi::xml_document doc; pugi::xml_document doc;
auto root_node = doc.append_child("worksheet"); auto root_node = doc.append_child("worksheet");
root_node.append_attribute("xmlns").set_value("http://schemas.openxmlformats.org/spreadsheetml/2006/main"); root_node.append_attribute("xmlns").set_value(constants::Namespaces.at("spreadsheetml").c_str());
root_node.append_attribute("xmlns:r").set_value("http://schemas.openxmlformats.org/officeDocument/2006/relationships"); root_node.append_attribute("xmlns:r").set_value(constants::Namespaces.at("r").c_str());
auto dimension_node = root_node.append_child("dimension"); auto dimension_node = root_node.append_child("dimension");
dimension_node.append_attribute("ref").set_value(ws.calculate_dimension().to_string().c_str()); dimension_node.append_attribute("ref").set_value(ws.calculate_dimension().to_string().c_str());
auto sheet_views_node = root_node.append_child("sheetViews"); auto sheet_views_node = root_node.append_child("sheetViews");
@ -37,19 +39,14 @@ std::string writer::write_worksheet(worksheet ws, const std::vector<std::string>
auto sheet_data_node = root_node.append_child("sheetData"); auto sheet_data_node = root_node.append_child("sheetData");
for(auto row : ws.rows()) for(auto row : ws.rows())
{ {
if(row.empty()) row_t min = (int)row.num_cells();
{ row_t max = 0;
continue;
}
int min = (int)row.size();
int max = 0;
bool any_non_null = false; bool any_non_null = false;
for(auto cell : row) for(auto cell : row)
{ {
min = (std::min)(min, cell_reference::column_index_from_string(cell.get_column())); min = std::min(min, cell_reference::column_index_from_string(cell.get_column()));
max = (std::max)(max, cell_reference::column_index_from_string(cell.get_column())); max = std::max(max, cell_reference::column_index_from_string(cell.get_column()));
if(cell.get_data_type() != cell::type::null) if(cell.get_data_type() != cell::type::null)
{ {
@ -70,7 +67,7 @@ std::string writer::write_worksheet(worksheet ws, const std::vector<std::string>
for(auto cell : row) for(auto cell : row)
{ {
if(cell.get_data_type() != cell::type::null || cell.get_merged()) if(cell.get_data_type() != cell::type::null || cell.is_merged())
{ {
auto cell_node = row_node.append_child("c"); auto cell_node = row_node.append_child("c");
cell_node.append_attribute("r").set_value(cell.get_reference().to_string().c_str()); cell_node.append_attribute("r").set_value(cell.get_reference().to_string().c_str());
@ -263,7 +260,7 @@ std::string writer::write_content_types(const std::pair<std::unordered_map<std::
pugi::xml_document doc; pugi::xml_document doc;
auto root_node = doc.append_child("Types"); auto root_node = doc.append_child("Types");
root_node.append_attribute("xmlns").set_value("http://schemas.openxmlformats.org/package/2006/content-types"); root_node.append_attribute("xmlns").set_value(constants::Namespaces.at("content-types").c_str());
for(auto default_type : content_types.first) for(auto default_type : content_types.first)
{ {
@ -288,7 +285,7 @@ std::string writer::write_relationships(const std::unordered_map<std::string, st
{ {
pugi::xml_document doc; pugi::xml_document doc;
auto root_node = doc.append_child("Relationships"); auto root_node = doc.append_child("Relationships");
root_node.append_attribute("xmlns").set_value("http://schemas.openxmlformats.org/package/2006/relationships"); root_node.append_attribute("xmlns").set_value(constants::Namespaces.at("relationships").c_str());
for(auto relationship : relationships) for(auto relationship : relationships)
{ {
@ -308,7 +305,7 @@ std::string writer::write_theme()
/* /*
pugi::xml_document doc; pugi::xml_document doc;
auto theme_node = doc.append_child("a:theme"); auto theme_node = doc.append_child("a:theme");
theme_node.append_attribute("xmlns:a").set_value("http://schemas.openxmlformats.org/drawingml/2006/main"); theme_node.append_attribute("xmlns:a").set_value(constants::Namespaces.at("drawingml").c_str());
theme_node.append_attribute("name").set_value("Office Theme"); theme_node.append_attribute("name").set_value("Office Theme");
auto theme_elements_node = theme_node.append_child("a:themeElements"); auto theme_elements_node = theme_node.append_child("a:themeElements");
auto clr_scheme_node = theme_elements_node.append_child("a:clrScheme"); auto clr_scheme_node = theme_elements_node.append_child("a:clrScheme");

View File

@ -4,14 +4,13 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class CellTestSuite : public CxxTest::TestSuite class CellTestSuite : public CxxTest::TestSuite
{ {
public: public:
CellTestSuite() CellTestSuite()
{ {
} }
void test_coordinates() void test_coordinates()
@ -313,7 +312,7 @@ public:
xlnt::cell cell(ws, "A", 1); xlnt::cell cell(ws, "A", 1);
cell = -13.5; cell = -13.5;
cell.get_style().get_number_format().set_format_code("0.00_);[Red]\\(0.00\\)"); //cell.get_style().get_number_format().set_format_code("0.00_);[Red]\\(0.00\\)");
TS_ASSERT_EQUALS(cell.is_date(), false); TS_ASSERT_EQUALS(cell.is_date(), false);
} }

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class ChartTestSuite : public CxxTest::TestSuite class ChartTestSuite : public CxxTest::TestSuite
{ {

View File

@ -4,7 +4,7 @@
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "TemporaryFile.h" #include "TemporaryFile.h"
#include "../xlnt.h" #include <xlnt/xlnt.h>
class DumpTestSuite : public CxxTest::TestSuite class DumpTestSuite : public CxxTest::TestSuite
{ {

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class NamedRangeTestSuite : public CxxTest::TestSuite class NamedRangeTestSuite : public CxxTest::TestSuite
{ {

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class NumberFormatTestSuite : public CxxTest::TestSuite class NumberFormatTestSuite : public CxxTest::TestSuite
{ {

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class PasswordHashTestSuite : public CxxTest::TestSuite class PasswordHashTestSuite : public CxxTest::TestSuite
{ {

View File

@ -7,6 +7,7 @@
#include <mach-o/dyld.h> #include <mach-o/dyld.h>
#include <sys/stat.h> #include <sys/stat.h>
#elif defined(_WIN32) #elif defined(_WIN32)
#define NOMINMAX
#include <Shlwapi.h> #include <Shlwapi.h>
#include <Windows.h> #include <Windows.h>
#endif #endif

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class PropsTestSuite : public CxxTest::TestSuite class PropsTestSuite : public CxxTest::TestSuite
{ {

View File

@ -4,7 +4,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
#include "PathHelper.h" #include "PathHelper.h"
class ReadTestSuite : public CxxTest::TestSuite class ReadTestSuite : public CxxTest::TestSuite
@ -132,27 +132,27 @@ public:
void test_read_general_style() void test_read_general_style()
{ {
TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::general); //TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::general);
} }
void test_read_date_style() void test_read_date_style()
{ {
TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A2").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14); //TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A2").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
} }
void test_read_number_style() void test_read_number_style()
{ {
TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A3").get_style().get_number_format().get_format_code(), xlnt::number_format::format::number00); //TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A3").get_style().get_number_format().get_format_code(), xlnt::number_format::format::number00);
} }
void test_read_time_style() void test_read_time_style()
{ {
TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A4").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_time3); //TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A4").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_time3);
} }
void test_read_percentage_style() void test_read_percentage_style()
{ {
TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A5").get_style().get_number_format().get_format_code(), xlnt::number_format::format::percentage00) //TS_ASSERT_EQUALS(worksheet_with_styles.get_cell("A5").get_style().get_number_format().get_format_code(), xlnt::number_format::format::percentage00)
} }
void test_read_win_base_date() void test_read_win_base_date()
@ -167,12 +167,12 @@ public:
void test_read_date_style_mac() void test_read_date_style_mac()
{ {
TS_ASSERT_EQUALS(mac_ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14); //TS_ASSERT_EQUALS(mac_ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
} }
void test_read_date_style_win() void test_read_date_style_win()
{ {
TS_ASSERT_EQUALS(win_ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14); //TS_ASSERT_EQUALS(win_ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
} }
void test_read_date_value() void test_read_date_value()

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class StringsTestSuite : public CxxTest::TestSuite class StringsTestSuite : public CxxTest::TestSuite
{ {

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class StyleTestSuite : public CxxTest::TestSuite class StyleTestSuite : public CxxTest::TestSuite
{ {

View File

@ -5,6 +5,7 @@
#include <string> #include <string>
#ifdef _WIN32 #ifdef _WIN32
#define NOMINMAX
#include <Windows.h> #include <Windows.h>
#endif #endif

View File

@ -5,6 +5,7 @@
#include <string> #include <string>
#ifdef _WIN32 #ifdef _WIN32
#define NOMINMAX
#include <Windows.h> #include <Windows.h>
#endif #endif

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
#include "PathHelper.h" #include "PathHelper.h"
class ThemeTestSuite : public CxxTest::TestSuite class ThemeTestSuite : public CxxTest::TestSuite

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
class WorkbookTestSuite : public CxxTest::TestSuite class WorkbookTestSuite : public CxxTest::TestSuite
{ {
@ -224,7 +224,7 @@ public:
void test_write_regular_float() void test_write_regular_float()
{ {
TemporaryFile temp_file; TemporaryFile temp_file;
float float_value = 1.0 / 3.0; double float_value = 1.0 / 3.0;
xlnt::workbook book; xlnt::workbook book;
auto sheet = book.get_active_sheet(); auto sheet = book.get_active_sheet();
sheet.get_cell("A1") = float_value; sheet.get_cell("A1") = float_value;

View File

@ -4,7 +4,7 @@
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "pugixml.hpp" #include "pugixml.hpp"
#include "../xlnt.h" #include <xlnt/xlnt.h>
class WorksheetTestSuite : public CxxTest::TestSuite class WorksheetTestSuite : public CxxTest::TestSuite
{ {
@ -64,8 +64,8 @@ public:
{ {
xlnt::worksheet ws(wb); xlnt::worksheet ws(wb);
auto xlrange = ws.get_range("A1:C4"); auto xlrange = ws.get_range("A1:C4");
TS_ASSERT_EQUALS(4, xlrange.size()); TS_ASSERT_EQUALS(4, xlrange.num_rows());
TS_ASSERT_EQUALS(3, xlrange[0].size()); TS_ASSERT_EQUALS(3, xlrange[0].num_cells());
} }
void test_worksheet_named_range() void test_worksheet_named_range()
@ -73,8 +73,8 @@ public:
xlnt::worksheet ws(wb); xlnt::worksheet ws(wb);
wb.create_named_range("test_range", ws, "C5"); wb.create_named_range("test_range", ws, "C5");
auto xlrange = ws.get_named_range("test_range"); auto xlrange = ws.get_named_range("test_range");
TS_ASSERT_EQUALS(1, xlrange.size()); TS_ASSERT_EQUALS(1, xlrange.num_rows());
TS_ASSERT_EQUALS(1, xlrange[0].size()); TS_ASSERT_EQUALS(1, xlrange[0].num_cells());
TS_ASSERT_EQUALS(5, xlrange[0][0].get_row()); TS_ASSERT_EQUALS(5, xlrange[0][0].get_row());
} }
@ -102,8 +102,8 @@ public:
{ {
xlnt::worksheet ws(wb); xlnt::worksheet ws(wb);
auto xlrange = ws.get_range(xlnt::range_reference("A1:C4").make_offset(3, 1)); auto xlrange = ws.get_range(xlnt::range_reference("A1:C4").make_offset(3, 1));
TS_ASSERT_EQUALS(4, xlrange.size()); TS_ASSERT_EQUALS(4, xlrange.num_rows());
TS_ASSERT_EQUALS(3, xlrange[0].size()); TS_ASSERT_EQUALS(3, xlrange[0].num_cells());
TS_ASSERT_EQUALS("D2", xlrange[0][0].get_reference().to_string()); TS_ASSERT_EQUALS("D2", xlrange[0][0].get_reference().to_string());
} }
@ -228,27 +228,12 @@ public:
auto rows = ws.rows(); auto rows = ws.rows();
TS_ASSERT_EQUALS(rows.size(), 9); TS_ASSERT_EQUALS(rows.num_rows(), 9);
TS_ASSERT_EQUALS(rows[0][0], "first"); TS_ASSERT_EQUALS(rows[0][0], "first");
TS_ASSERT_EQUALS(rows[8][2], "last"); TS_ASSERT_EQUALS(rows[8][2], "last");
} }
void test_cols()
{
xlnt::worksheet ws(wb);
ws.get_cell("A1") = "first";
ws.get_cell("C9") = "last";
auto cols = ws.columns();
TS_ASSERT_EQUALS(cols.size(), 3);
TS_ASSERT_EQUALS(cols[0][0], "first");
TS_ASSERT_EQUALS(cols[2][8], "last");
}
void test_auto_filter() void test_auto_filter()
{ {
xlnt::worksheet ws(wb); xlnt::worksheet ws(wb);

View File

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
#include "TemporaryFile.h" #include "TemporaryFile.h"
#include "PathHelper.h" #include "PathHelper.h"

View File

@ -2,7 +2,7 @@
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "../xlnt.h" #include <xlnt/xlnt.h>
#include "pugixml.hpp" #include "pugixml.hpp"
#include "PathHelper.h" #include "PathHelper.h"

View File

@ -21,7 +21,7 @@ int main( int argc, char *argv[] ) {
return status; return status;
} }
bool suite_CellTestSuite_init = false; bool suite_CellTestSuite_init = false;
#include "/Users/thomas/Development/xlnt/source/tests/CellTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\CellTestSuite.h"
static CellTestSuite suite_CellTestSuite; static CellTestSuite suite_CellTestSuite;
@ -30,161 +30,161 @@ CxxTest::StaticSuiteDescription suiteDescription_CellTestSuite( "../../source/te
static class TestDescription_suite_CellTestSuite_test_coordinates : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_coordinates : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_coordinates() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 17, "test_coordinates" ) {} TestDescription_suite_CellTestSuite_test_coordinates() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 16, "test_coordinates" ) {}
void runTest() { suite_CellTestSuite.test_coordinates(); } void runTest() { suite_CellTestSuite.test_coordinates(); }
} testDescription_suite_CellTestSuite_test_coordinates; } testDescription_suite_CellTestSuite_test_coordinates;
static class TestDescription_suite_CellTestSuite_test_invalid_coordinate : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_invalid_coordinate : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_invalid_coordinate() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 24, "test_invalid_coordinate" ) {} TestDescription_suite_CellTestSuite_test_invalid_coordinate() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 23, "test_invalid_coordinate" ) {}
void runTest() { suite_CellTestSuite.test_invalid_coordinate(); } void runTest() { suite_CellTestSuite.test_invalid_coordinate(); }
} testDescription_suite_CellTestSuite_test_invalid_coordinate; } testDescription_suite_CellTestSuite_test_invalid_coordinate;
static class TestDescription_suite_CellTestSuite_test_zero_row : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_zero_row : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_zero_row() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 29, "test_zero_row" ) {} TestDescription_suite_CellTestSuite_test_zero_row() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 28, "test_zero_row" ) {}
void runTest() { suite_CellTestSuite.test_zero_row(); } void runTest() { suite_CellTestSuite.test_zero_row(); }
} testDescription_suite_CellTestSuite_test_zero_row; } testDescription_suite_CellTestSuite_test_zero_row;
static class TestDescription_suite_CellTestSuite_test_absolute : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_absolute : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_absolute() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 34, "test_absolute" ) {} TestDescription_suite_CellTestSuite_test_absolute() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 33, "test_absolute" ) {}
void runTest() { suite_CellTestSuite.test_absolute(); } void runTest() { suite_CellTestSuite.test_absolute(); }
} testDescription_suite_CellTestSuite_test_absolute; } testDescription_suite_CellTestSuite_test_absolute;
static class TestDescription_suite_CellTestSuite_test_absolute_multiple : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_absolute_multiple : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_absolute_multiple() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 39, "test_absolute_multiple" ) {} TestDescription_suite_CellTestSuite_test_absolute_multiple() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 38, "test_absolute_multiple" ) {}
void runTest() { suite_CellTestSuite.test_absolute_multiple(); } void runTest() { suite_CellTestSuite.test_absolute_multiple(); }
} testDescription_suite_CellTestSuite_test_absolute_multiple; } testDescription_suite_CellTestSuite_test_absolute_multiple;
static class TestDescription_suite_CellTestSuite_test_column_index : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_column_index : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_column_index() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 44, "test_column_index" ) {} TestDescription_suite_CellTestSuite_test_column_index() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 43, "test_column_index" ) {}
void runTest() { suite_CellTestSuite.test_column_index(); } void runTest() { suite_CellTestSuite.test_column_index(); }
} testDescription_suite_CellTestSuite_test_column_index; } testDescription_suite_CellTestSuite_test_column_index;
static class TestDescription_suite_CellTestSuite_test_bad_column_index : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_bad_column_index : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_bad_column_index() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 65, "test_bad_column_index" ) {} TestDescription_suite_CellTestSuite_test_bad_column_index() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 64, "test_bad_column_index" ) {}
void runTest() { suite_CellTestSuite.test_bad_column_index(); } void runTest() { suite_CellTestSuite.test_bad_column_index(); }
} testDescription_suite_CellTestSuite_test_bad_column_index; } testDescription_suite_CellTestSuite_test_bad_column_index;
static class TestDescription_suite_CellTestSuite_test_column_letter_boundries : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_column_letter_boundries : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_column_letter_boundries() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 73, "test_column_letter_boundries" ) {} TestDescription_suite_CellTestSuite_test_column_letter_boundries() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 72, "test_column_letter_boundries" ) {}
void runTest() { suite_CellTestSuite.test_column_letter_boundries(); } void runTest() { suite_CellTestSuite.test_column_letter_boundries(); }
} testDescription_suite_CellTestSuite_test_column_letter_boundries; } testDescription_suite_CellTestSuite_test_column_letter_boundries;
static class TestDescription_suite_CellTestSuite_test_column_letter : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_column_letter : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_column_letter() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 80, "test_column_letter" ) {} TestDescription_suite_CellTestSuite_test_column_letter() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 79, "test_column_letter" ) {}
void runTest() { suite_CellTestSuite.test_column_letter(); } void runTest() { suite_CellTestSuite.test_column_letter(); }
} testDescription_suite_CellTestSuite_test_column_letter; } testDescription_suite_CellTestSuite_test_column_letter;
static class TestDescription_suite_CellTestSuite_test_initial_value : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_initial_value : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_initial_value() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 90, "test_initial_value" ) {} TestDescription_suite_CellTestSuite_test_initial_value() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 89, "test_initial_value" ) {}
void runTest() { suite_CellTestSuite.test_initial_value(); } void runTest() { suite_CellTestSuite.test_initial_value(); }
} testDescription_suite_CellTestSuite_test_initial_value; } testDescription_suite_CellTestSuite_test_initial_value;
static class TestDescription_suite_CellTestSuite_test_null : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_null : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_null() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 99, "test_null" ) {} TestDescription_suite_CellTestSuite_test_null() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 98, "test_null" ) {}
void runTest() { suite_CellTestSuite.test_null(); } void runTest() { suite_CellTestSuite.test_null(); }
} testDescription_suite_CellTestSuite_test_null; } testDescription_suite_CellTestSuite_test_null;
static class TestDescription_suite_CellTestSuite_test_numeric : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_numeric : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_numeric() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 108, "test_numeric" ) {} TestDescription_suite_CellTestSuite_test_numeric() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 107, "test_numeric" ) {}
void runTest() { suite_CellTestSuite.test_numeric(); } void runTest() { suite_CellTestSuite.test_numeric(); }
} testDescription_suite_CellTestSuite_test_numeric; } testDescription_suite_CellTestSuite_test_numeric;
static class TestDescription_suite_CellTestSuite_test_string : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_string : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_string() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 140, "test_string" ) {} TestDescription_suite_CellTestSuite_test_string() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 139, "test_string" ) {}
void runTest() { suite_CellTestSuite.test_string(); } void runTest() { suite_CellTestSuite.test_string(); }
} testDescription_suite_CellTestSuite_test_string; } testDescription_suite_CellTestSuite_test_string;
static class TestDescription_suite_CellTestSuite_test_single_dot : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_single_dot : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_single_dot() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 150, "test_single_dot" ) {} TestDescription_suite_CellTestSuite_test_single_dot() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 149, "test_single_dot" ) {}
void runTest() { suite_CellTestSuite.test_single_dot(); } void runTest() { suite_CellTestSuite.test_single_dot(); }
} testDescription_suite_CellTestSuite_test_single_dot; } testDescription_suite_CellTestSuite_test_single_dot;
static class TestDescription_suite_CellTestSuite_test_formula : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_formula : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_formula() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 159, "test_formula" ) {} TestDescription_suite_CellTestSuite_test_formula() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 158, "test_formula" ) {}
void runTest() { suite_CellTestSuite.test_formula(); } void runTest() { suite_CellTestSuite.test_formula(); }
} testDescription_suite_CellTestSuite_test_formula; } testDescription_suite_CellTestSuite_test_formula;
static class TestDescription_suite_CellTestSuite_test_boolean : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_boolean : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_boolean() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 168, "test_boolean" ) {} TestDescription_suite_CellTestSuite_test_boolean() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 167, "test_boolean" ) {}
void runTest() { suite_CellTestSuite.test_boolean(); } void runTest() { suite_CellTestSuite.test_boolean(); }
} testDescription_suite_CellTestSuite_test_boolean; } testDescription_suite_CellTestSuite_test_boolean;
static class TestDescription_suite_CellTestSuite_test_leading_zero : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_leading_zero : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_leading_zero() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 179, "test_leading_zero" ) {} TestDescription_suite_CellTestSuite_test_leading_zero() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 178, "test_leading_zero" ) {}
void runTest() { suite_CellTestSuite.test_leading_zero(); } void runTest() { suite_CellTestSuite.test_leading_zero(); }
} testDescription_suite_CellTestSuite_test_leading_zero; } testDescription_suite_CellTestSuite_test_leading_zero;
static class TestDescription_suite_CellTestSuite_test_error_codes : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_error_codes : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_error_codes() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 188, "test_error_codes" ) {} TestDescription_suite_CellTestSuite_test_error_codes() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 187, "test_error_codes" ) {}
void runTest() { suite_CellTestSuite.test_error_codes(); } void runTest() { suite_CellTestSuite.test_error_codes(); }
} testDescription_suite_CellTestSuite_test_error_codes; } testDescription_suite_CellTestSuite_test_error_codes;
static class TestDescription_suite_CellTestSuite_test_data_type_check : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_data_type_check : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_data_type_check() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 202, "test_data_type_check" ) {} TestDescription_suite_CellTestSuite_test_data_type_check() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 201, "test_data_type_check" ) {}
void runTest() { suite_CellTestSuite.test_data_type_check(); } void runTest() { suite_CellTestSuite.test_data_type_check(); }
} testDescription_suite_CellTestSuite_test_data_type_check; } testDescription_suite_CellTestSuite_test_data_type_check;
static class TestDescription_suite_CellTestSuite_test_set_bad_type : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_set_bad_type : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_set_bad_type() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 220, "test_set_bad_type" ) {} TestDescription_suite_CellTestSuite_test_set_bad_type() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 219, "test_set_bad_type" ) {}
void runTest() { suite_CellTestSuite.test_set_bad_type(); } void runTest() { suite_CellTestSuite.test_set_bad_type(); }
} testDescription_suite_CellTestSuite_test_set_bad_type; } testDescription_suite_CellTestSuite_test_set_bad_type;
static class TestDescription_suite_CellTestSuite_test_time : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_time : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_time() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 230, "test_time" ) {} TestDescription_suite_CellTestSuite_test_time() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 229, "test_time" ) {}
void runTest() { suite_CellTestSuite.test_time(); } void runTest() { suite_CellTestSuite.test_time(); }
} testDescription_suite_CellTestSuite_test_time; } testDescription_suite_CellTestSuite_test_time;
static class TestDescription_suite_CellTestSuite_test_date_format_on_non_date : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_date_format_on_non_date : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_date_format_on_non_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 252, "test_date_format_on_non_date" ) {} TestDescription_suite_CellTestSuite_test_date_format_on_non_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 251, "test_date_format_on_non_date" ) {}
void runTest() { suite_CellTestSuite.test_date_format_on_non_date(); } void runTest() { suite_CellTestSuite.test_date_format_on_non_date(); }
} testDescription_suite_CellTestSuite_test_date_format_on_non_date; } testDescription_suite_CellTestSuite_test_date_format_on_non_date;
static class TestDescription_suite_CellTestSuite_test_set_get_date : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_set_get_date : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_set_get_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 265, "test_set_get_date" ) {} TestDescription_suite_CellTestSuite_test_set_get_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 264, "test_set_get_date" ) {}
void runTest() { suite_CellTestSuite.test_set_get_date(); } void runTest() { suite_CellTestSuite.test_set_get_date(); }
} testDescription_suite_CellTestSuite_test_set_get_date; } testDescription_suite_CellTestSuite_test_set_get_date;
static class TestDescription_suite_CellTestSuite_test_repr : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_repr : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_repr() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 283, "test_repr" ) {} TestDescription_suite_CellTestSuite_test_repr() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 282, "test_repr" ) {}
void runTest() { suite_CellTestSuite.test_repr(); } void runTest() { suite_CellTestSuite.test_repr(); }
} testDescription_suite_CellTestSuite_test_repr; } testDescription_suite_CellTestSuite_test_repr;
static class TestDescription_suite_CellTestSuite_test_is_date : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_is_date : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_is_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 292, "test_is_date" ) {} TestDescription_suite_CellTestSuite_test_is_date() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 291, "test_is_date" ) {}
void runTest() { suite_CellTestSuite.test_is_date(); } void runTest() { suite_CellTestSuite.test_is_date(); }
} testDescription_suite_CellTestSuite_test_is_date; } testDescription_suite_CellTestSuite_test_is_date;
static class TestDescription_suite_CellTestSuite_test_is_not_date_color_format : public CxxTest::RealTestDescription { static class TestDescription_suite_CellTestSuite_test_is_not_date_color_format : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_CellTestSuite_test_is_not_date_color_format() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 309, "test_is_not_date_color_format" ) {} TestDescription_suite_CellTestSuite_test_is_not_date_color_format() : CxxTest::RealTestDescription( Tests_CellTestSuite, suiteDescription_CellTestSuite, 308, "test_is_not_date_color_format" ) {}
void runTest() { suite_CellTestSuite.test_is_not_date_color_format(); } void runTest() { suite_CellTestSuite.test_is_not_date_color_format(); }
} testDescription_suite_CellTestSuite_test_is_not_date_color_format; } testDescription_suite_CellTestSuite_test_is_not_date_color_format;
#include "/Users/thomas/Development/xlnt/source/tests/ChartTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\ChartTestSuite.h"
static ChartTestSuite suite_ChartTestSuite; static ChartTestSuite suite_ChartTestSuite;
@ -275,7 +275,7 @@ public:
void runTest() { suite_ChartTestSuite.test_write_chart_scatter(); } void runTest() { suite_ChartTestSuite.test_write_chart_scatter(); }
} testDescription_suite_ChartTestSuite_test_write_chart_scatter; } testDescription_suite_ChartTestSuite_test_write_chart_scatter;
#include "/Users/thomas/Development/xlnt/source/tests/DumpTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\DumpTestSuite.h"
static DumpTestSuite suite_DumpTestSuite; static DumpTestSuite suite_DumpTestSuite;
@ -318,7 +318,7 @@ public:
void runTest() { suite_DumpTestSuite.test_append_after_save(); } void runTest() { suite_DumpTestSuite.test_append_after_save(); }
} testDescription_suite_DumpTestSuite_test_append_after_save; } testDescription_suite_DumpTestSuite_test_append_after_save;
#include "/Users/thomas/Development/xlnt/source/tests/NamedRangeTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\NamedRangeTestSuite.h"
static NamedRangeTestSuite suite_NamedRangeTestSuite; static NamedRangeTestSuite suite_NamedRangeTestSuite;
@ -409,7 +409,7 @@ public:
void runTest() { suite_NamedRangeTestSuite.test_can_be_saved(); } void runTest() { suite_NamedRangeTestSuite.test_can_be_saved(); }
} testDescription_suite_NamedRangeTestSuite_test_can_be_saved; } testDescription_suite_NamedRangeTestSuite_test_can_be_saved;
#include "/Users/thomas/Development/xlnt/source/tests/NumberFormatTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\NumberFormatTestSuite.h"
static NumberFormatTestSuite suite_NumberFormatTestSuite; static NumberFormatTestSuite suite_NumberFormatTestSuite;
@ -512,7 +512,7 @@ public:
void runTest() { suite_NumberFormatTestSuite.test_mac_date(); } void runTest() { suite_NumberFormatTestSuite.test_mac_date(); }
} testDescription_suite_NumberFormatTestSuite_test_mac_date; } testDescription_suite_NumberFormatTestSuite_test_mac_date;
#include "/Users/thomas/Development/xlnt/source/tests/PasswordHashTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\PasswordHashTestSuite.h"
static PasswordHashTestSuite suite_PasswordHashTestSuite; static PasswordHashTestSuite suite_PasswordHashTestSuite;
@ -531,7 +531,7 @@ public:
void runTest() { suite_PasswordHashTestSuite.test_sheet_protection(); } void runTest() { suite_PasswordHashTestSuite.test_sheet_protection(); }
} testDescription_suite_PasswordHashTestSuite_test_sheet_protection; } testDescription_suite_PasswordHashTestSuite_test_sheet_protection;
#include "/Users/thomas/Development/xlnt/source/tests/PropsTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\PropsTestSuite.h"
static PropsTestSuite suite_PropsTestSuite; static PropsTestSuite suite_PropsTestSuite;
@ -574,7 +574,7 @@ public:
void runTest() { suite_PropsTestSuite.test_write_properties_app(); } void runTest() { suite_PropsTestSuite.test_write_properties_app(); }
} testDescription_suite_PropsTestSuite_test_write_properties_app; } testDescription_suite_PropsTestSuite_test_write_properties_app;
#include "/Users/thomas/Development/xlnt/source/tests/ReadTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\ReadTestSuite.h"
static ReadTestSuite suite_ReadTestSuite; static ReadTestSuite suite_ReadTestSuite;
@ -707,7 +707,7 @@ public:
void runTest() { suite_ReadTestSuite.test_read_date_value(); } void runTest() { suite_ReadTestSuite.test_read_date_value(); }
} testDescription_suite_ReadTestSuite_test_read_date_value; } testDescription_suite_ReadTestSuite_test_read_date_value;
#include "/Users/thomas/Development/xlnt/source/tests/StringsTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\StringsTestSuite.h"
static StringsTestSuite suite_StringsTestSuite; static StringsTestSuite suite_StringsTestSuite;
@ -738,7 +738,7 @@ public:
void runTest() { suite_StringsTestSuite.test_formatted_string_table(); } void runTest() { suite_StringsTestSuite.test_formatted_string_table(); }
} testDescription_suite_StringsTestSuite_test_formatted_string_table; } testDescription_suite_StringsTestSuite_test_formatted_string_table;
#include "/Users/thomas/Development/xlnt/source/tests/StyleTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\StyleTestSuite.h"
static StyleTestSuite suite_StyleTestSuite; static StyleTestSuite suite_StyleTestSuite;
@ -835,7 +835,7 @@ public:
void runTest() { suite_StyleTestSuite.test_read_cell_style(); } void runTest() { suite_StyleTestSuite.test_read_cell_style(); }
} testDescription_suite_StyleTestSuite_test_read_cell_style; } testDescription_suite_StyleTestSuite_test_read_cell_style;
#include "/Users/thomas/Development/xlnt/source/tests/ThemeTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\ThemeTestSuite.h"
static ThemeTestSuite suite_ThemeTestSuite; static ThemeTestSuite suite_ThemeTestSuite;
@ -848,7 +848,7 @@ public:
void runTest() { suite_ThemeTestSuite.test_write_theme(); } void runTest() { suite_ThemeTestSuite.test_write_theme(); }
} testDescription_suite_ThemeTestSuite_test_write_theme; } testDescription_suite_ThemeTestSuite_test_write_theme;
#include "/Users/thomas/Development/xlnt/source/tests/WorkbookTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\WorkbookTestSuite.h"
static WorkbookTestSuite suite_WorkbookTestSuite; static WorkbookTestSuite suite_WorkbookTestSuite;
@ -987,7 +987,7 @@ public:
void runTest() { suite_WorkbookTestSuite.test_write_regular_float(); } void runTest() { suite_WorkbookTestSuite.test_write_regular_float(); }
} testDescription_suite_WorkbookTestSuite_test_write_regular_float; } testDescription_suite_WorkbookTestSuite_test_write_regular_float;
#include "/Users/thomas/Development/xlnt/source/tests/WorksheetTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\WorksheetTestSuite.h"
static WorksheetTestSuite suite_WorksheetTestSuite; static WorksheetTestSuite suite_WorksheetTestSuite;
@ -1126,43 +1126,37 @@ public:
void runTest() { suite_WorksheetTestSuite.test_rows(); } void runTest() { suite_WorksheetTestSuite.test_rows(); }
} testDescription_suite_WorksheetTestSuite_test_rows; } testDescription_suite_WorksheetTestSuite_test_rows;
static class TestDescription_suite_WorksheetTestSuite_test_cols : public CxxTest::RealTestDescription {
public:
TestDescription_suite_WorksheetTestSuite_test_cols() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 237, "test_cols" ) {}
void runTest() { suite_WorksheetTestSuite.test_cols(); }
} testDescription_suite_WorksheetTestSuite_test_cols;
static class TestDescription_suite_WorksheetTestSuite_test_auto_filter : public CxxTest::RealTestDescription { static class TestDescription_suite_WorksheetTestSuite_test_auto_filter : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_WorksheetTestSuite_test_auto_filter() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 252, "test_auto_filter" ) {} TestDescription_suite_WorksheetTestSuite_test_auto_filter() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 237, "test_auto_filter" ) {}
void runTest() { suite_WorksheetTestSuite.test_auto_filter(); } void runTest() { suite_WorksheetTestSuite.test_auto_filter(); }
} testDescription_suite_WorksheetTestSuite_test_auto_filter; } testDescription_suite_WorksheetTestSuite_test_auto_filter;
static class TestDescription_suite_WorksheetTestSuite_test_page_margins : public CxxTest::RealTestDescription { static class TestDescription_suite_WorksheetTestSuite_test_page_margins : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_WorksheetTestSuite_test_page_margins() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 266, "test_page_margins" ) {} TestDescription_suite_WorksheetTestSuite_test_page_margins() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 251, "test_page_margins" ) {}
void runTest() { suite_WorksheetTestSuite.test_page_margins(); } void runTest() { suite_WorksheetTestSuite.test_page_margins(); }
} testDescription_suite_WorksheetTestSuite_test_page_margins; } testDescription_suite_WorksheetTestSuite_test_page_margins;
static class TestDescription_suite_WorksheetTestSuite_test_merge : public CxxTest::RealTestDescription { static class TestDescription_suite_WorksheetTestSuite_test_merge : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_WorksheetTestSuite_test_merge() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 301, "test_merge" ) {} TestDescription_suite_WorksheetTestSuite_test_merge() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 286, "test_merge" ) {}
void runTest() { suite_WorksheetTestSuite.test_merge(); } void runTest() { suite_WorksheetTestSuite.test_merge(); }
} testDescription_suite_WorksheetTestSuite_test_merge; } testDescription_suite_WorksheetTestSuite_test_merge;
static class TestDescription_suite_WorksheetTestSuite_test_freeze : public CxxTest::RealTestDescription { static class TestDescription_suite_WorksheetTestSuite_test_freeze : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_WorksheetTestSuite_test_freeze() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 370, "test_freeze" ) {} TestDescription_suite_WorksheetTestSuite_test_freeze() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 355, "test_freeze" ) {}
void runTest() { suite_WorksheetTestSuite.test_freeze(); } void runTest() { suite_WorksheetTestSuite.test_freeze(); }
} testDescription_suite_WorksheetTestSuite_test_freeze; } testDescription_suite_WorksheetTestSuite_test_freeze;
static class TestDescription_suite_WorksheetTestSuite_test_printer_settings : public CxxTest::RealTestDescription { static class TestDescription_suite_WorksheetTestSuite_test_printer_settings : public CxxTest::RealTestDescription {
public: public:
TestDescription_suite_WorksheetTestSuite_test_printer_settings() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 387, "test_printer_settings" ) {} TestDescription_suite_WorksheetTestSuite_test_printer_settings() : CxxTest::RealTestDescription( Tests_WorksheetTestSuite, suiteDescription_WorksheetTestSuite, 372, "test_printer_settings" ) {}
void runTest() { suite_WorksheetTestSuite.test_printer_settings(); } void runTest() { suite_WorksheetTestSuite.test_printer_settings(); }
} testDescription_suite_WorksheetTestSuite_test_printer_settings; } testDescription_suite_WorksheetTestSuite_test_printer_settings;
#include "/Users/thomas/Development/xlnt/source/tests/WriteTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\WriteTestSuite.h"
static WriteTestSuite suite_WriteTestSuite; static WriteTestSuite suite_WriteTestSuite;
@ -1295,7 +1289,7 @@ public:
void runTest() { suite_WriteTestSuite.test_short_number(); } void runTest() { suite_WriteTestSuite.test_short_number(); }
} testDescription_suite_WriteTestSuite_test_short_number; } testDescription_suite_WriteTestSuite_test_short_number;
#include "/Users/thomas/Development/xlnt/source/tests/ZipFileTestSuite.h" #include "C:\Users\taf656\Development\xlnt\source\tests\ZipFileTestSuite.h"
static ZipFileTestSuite suite_ZipFileTestSuite; static ZipFileTestSuite suite_ZipFileTestSuite;

Some files were not shown because too many files have changed in this diff Show More