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
tests/test_data/writer/*.xlsx

View File

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

View File

@ -3,6 +3,8 @@
#include <string>
#include <unordered_map>
#include "types.h"
namespace xlnt {
class cell_reference;
@ -308,13 +310,13 @@ public:
static std::string check_error(const std::string &value);
cell();
cell(worksheet &ws, const std::string &column, int 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);
cell(worksheet &ws, const std::string &column, row_t row, const std::string &initial_value);
std::string get_value() const;
std::string get_column() const;
int get_row() const;
row_t get_row() const;
std::string to_string() const;
@ -329,8 +331,8 @@ public:
bool bind_value(bool value);
bool bind_value(const tm &value);
bool get_merged() const;
void set_merged(bool);
bool is_merged() const;
void set_merged(bool merged);
std::string get_hyperlink() const;
void set_hyperlink(const std::string &value);
@ -352,7 +354,7 @@ public:
bool is_date() const;
std::pair<int, int> get_anchor() const;
//std::pair<int, int> get_anchor() const;
comment get_comment() const;
void set_comment(comment comment);
@ -385,7 +387,7 @@ public:
private:
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);
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 <unordered_map>
#include "types.h"
namespace xlnt {
struct constants
{
static const int MinRow;
static const int MinColumn;
static const int MaxColumn;
static const int MaxRow;
static const row_t MinRow;
static const row_t MaxRow;
static const column_t MinColumn;
static const column_t MaxColumn;
// constants
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 "range_reference.h"
#include "worksheet.h"
namespace xlnt {
class range_reference;
@ -20,12 +23,9 @@ public:
bool operator==(const named_range &comparand) const;
private:
friend class worksheet;
static named_range allocate(const std::string &name, worksheet ws, const range_reference &target);
named_range(named_range_struct *);
named_range_struct *root_;
std::string name_;
worksheet parent_worksheet_;
range_reference target_range_;
};
} // 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
};
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;
}
}
relationship(const std::string &type, const std::string &r_id = "", const std::string &target_uri = "");
/// <summary>
/// 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
#include <list>
#include <memory>
#include <unordered_map>
#include "range.h"
namespace xlnt {
class cell;
class cell_reference;
class named_range;
class range;
class range_reference;
class relationship;
class workbook;
@ -136,6 +136,7 @@ public:
// container
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_named_range(const std::string &name);
range rows() const;
@ -172,8 +173,11 @@ public:
bool operator!=(std::nullptr_t) const;
void operator=(const worksheet &other);
cell operator[](const cell_reference &reference);
const cell operator[](const cell_reference &reference) const;
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_setup &get_page_setup();
@ -186,6 +190,8 @@ public:
void unset_auto_filter();
bool has_auto_filter() const;
void reserve(std::size_t n);
private:
friend class workbook;
friend class cell;

View File

@ -9,35 +9,16 @@
#include "zip.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_reference.h"
#include "constants.h"
#include "custom_exceptions.h"
#include "drawing.h"
#include "named_range.h"
#include "protection.h"
#include "range.h"
#include "reader.h"
#include "reference.h"
#include "range_reference.h"
#include "relationship.h"
#include "string_table.h"
#include "workbook.h"

View File

@ -1,8 +1,10 @@
#include <algorithm>
#include <locale>
#include <sstream>
#include "cell.h"
#include "reference.h"
#include "cell_reference.h"
#include "cell_struct.h"
#include "relationship.h"
#include "worksheet.h"
@ -13,39 +15,6 @@ struct worksheet_struct;
const xlnt::color xlnt::color::black(0);
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 =
{
{"#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));
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));
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;
}
@ -222,7 +191,7 @@ void cell::set_merged(bool merged)
root_->merged = merged;
}
bool cell::get_merged() const
bool cell::is_merged() const
{
return root_->merged;
}
@ -348,12 +317,20 @@ bool operator==(const tm &comparand, const xlnt::cell &cell)
style &cell::get_style()
{
return root_->style;
if(root_->style == nullptr)
{
root_->style = new style();
}
return *root_->style;
}
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
@ -460,7 +437,7 @@ std::string cell_struct::to_string() const
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);
}

View File

@ -1,13 +1,15 @@
#include <locale>
#include "reference.h"
#include "cell_reference.h"
#include "constants.h"
#include "custom_exceptions.h"
#include "range_reference.h"
namespace xlnt {
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)
@ -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),
row_index_(row - 1),
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),
row_index_(row_index),
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);
}
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_row = false;
@ -127,14 +134,14 @@ bool cell_reference::operator==(const cell_reference &comparand) const
&& 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())
{
throw std::runtime_error("column must be one to three characters");
}
int column_index = 0;
column_t column_index = 0;
int place = 1;
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
// order.These numbers are 1 - based, and can be converted to ASCII
// 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
// 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);
throw std::runtime_error(msg);
@ -186,88 +193,4 @@ std::string cell_reference::column_string_from_index(int column_index)
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 "config.h"
namespace xlnt {
const int constants::MinRow = 0;
const int constants::MinColumn = 0;
const int constants::MaxColumn = 16384;
const int constants::MaxRow = 1048576;
const row_t constants::MinRow = 1;
const row_t constants::MaxRow = LimitStyle == limit_style::excel ? (1u << 20) : UINT32_MAX;
const column_t constants::MinColumn = 1;
const column_t constants::MaxColumn = LimitStyle == limit_style::excel ? (1u << 14) : LimitStyle == limit_style::openpyxl ? 18278 : UINT32_MAX;
// constants
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 =
{
{"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"},
{"dc", "http://purl.org/dc/elements/1.1/"},
{"dcterms", "http://purl.org/dc/terms/"},

View File

@ -1 +1,23 @@
#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"
namespace xlnt {
struct drawing_struct
{
drawing_struct()
{
}
};
drawing::drawing() : root_(nullptr)
{
}
} // namespace xlnt

View File

@ -1,62 +1,40 @@
#include "named_range.h"
#include "reference.h"
#include "range_reference.h"
#include "worksheet.h"
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)
{
root_->parent_worksheet_ = scope;
}
named_range::named_range(named_range_struct *root) : root_(root)
{
parent_worksheet_ = scope;
}
bool named_range::operator==(const xlnt::named_range &comparand) const
{
return comparand.root_->parent_worksheet_ == root_->parent_worksheet_
&& comparand.root_->target_range_ == root_->target_range_;
return comparand.parent_worksheet_ == parent_worksheet_
&& 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)
: name_(name),
parent_worksheet_(ws),
target_range_(target)
{
root_ = ws.create_named_range(name, target).root_;
}
range_reference named_range::get_target_range() const
{
return root_->target_range_;
return target_range_;
}
worksheet named_range::get_scope() const
{
return root_->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);
return parent_worksheet_;
}
} // namespace xlnt

View File

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

View File

@ -1 +1,288 @@
#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 "reader.h"
#include "cell.h"
#include "reference.h"
#include "range_reference.h"
#include "workbook.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
{
tm date;
tm date = tm();
date.tm_year = 1900;
int days = cell_node.child("v").text().as_int();
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"
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 <pugixml.hpp>

View File

@ -1,7 +1,11 @@
#include <algorithm>
#include "worksheet.h"
#include "cell.h"
#include "cell_struct.h"
#include "named_range.h"
#include "reference.h"
#include "range.h"
#include "range_reference.h"
#include "relationship.h"
#include "workbook.h"
@ -12,7 +16,6 @@ struct worksheet_struct
worksheet_struct(workbook &parent_workbook, const std::string &title)
: parent_(parent_workbook), title_(title), freeze_panes_("A1")
{
}
~worksheet_struct()
@ -22,20 +25,16 @@ struct worksheet_struct
void clear()
{
while(!cell_map_.empty())
{
cell::deallocate(cell_map_.begin()->second.root_);
cell_map_.erase(cell_map_.begin()->first);
}
cell_map_.clear();
}
void garbage_collect()
{
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);
}
@ -50,10 +49,10 @@ struct worksheet_struct
std::list<cell> get_cell_collection()
{
std::list<xlnt::cell> cells;
for(auto cell : cell_map_)
std::list<cell> cells;
for(auto &c : cell_map_)
{
cells.push_front(xlnt::cell(cell.second));
cells.push_front(cell(&c.second));
}
return cells;
}
@ -83,33 +82,44 @@ struct worksheet_struct
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())
{
auto cell = cell::allocate(this, reference.get_column_index(), reference.get_row_index());
cell_map_[reference] = cell;
cell_map_[reference] = cell_struct(this, reference.get_column_index(), reference.get_row_index());
}
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 highest = 0;
for(auto cell : cell_map_)
row_t highest = 0;
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;
}
int get_highest_column() const
{
int highest = 0;
for(auto cell : cell_map_)
column_t highest = 0;
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;
}
@ -121,11 +131,11 @@ struct worksheet_struct
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;
@ -138,11 +148,11 @@ struct worksheet_struct
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;
@ -159,31 +169,9 @@ struct worksheet_struct
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;
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;
return range(worksheet(this), reference);
}
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);
bool first = true;
for(auto row : get_range(reference))
{
for(auto cell : row)
@ -270,32 +259,17 @@ struct worksheet_struct
}
}
xlnt::range rows()
range rows()
{
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;
workbook &parent_;
std::string title_;
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_;
page_setup page_setup_;
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)
{
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];
}
cell worksheet::operator[](const cell_reference &ref)
{
return get_cell(ref);
}
std::vector<range_reference> worksheet::get_merged_ranges() const
{
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)
{
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
@ -428,6 +407,11 @@ cell worksheet::get_cell(const cell_reference &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)
{
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();
}
xlnt::range worksheet::columns() const
{
return root_->columns();
}
bool worksheet::operator==(const worksheet &other) const
{
return root_ == other.root_;
@ -526,7 +505,7 @@ void worksheet::operator=(const worksheet &other)
root_ = other.root_;
}
cell worksheet::operator[](const cell_reference &ref)
const cell worksheet::operator[](const cell_reference &ref) const
{
return get_cell(ref);
}
@ -555,4 +534,9 @@ void worksheet::deallocate(xlnt::worksheet ws)
delete ws.root_;
}
void worksheet::reserve(std::size_t n)
{
root_->cell_map_.reserve(n);
}
} // namespace xlnt

View File

@ -7,7 +7,9 @@
#include "writer.h"
#include "cell.h"
#include "reference.h"
#include "constants.h"
#include "range.h"
#include "range_reference.h"
#include "worksheet.h"
namespace xlnt {
@ -16,8 +18,8 @@ std::string writer::write_worksheet(worksheet ws, const std::vector<std::string>
{
pugi::xml_document doc;
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:r").set_value("http://schemas.openxmlformats.org/officeDocument/2006/relationships");
root_node.append_attribute("xmlns").set_value(constants::Namespaces.at("spreadsheetml").c_str());
root_node.append_attribute("xmlns:r").set_value(constants::Namespaces.at("r").c_str());
auto dimension_node = root_node.append_child("dimension");
dimension_node.append_attribute("ref").set_value(ws.calculate_dimension().to_string().c_str());
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");
for(auto row : ws.rows())
{
if(row.empty())
{
continue;
}
int min = (int)row.size();
int max = 0;
row_t min = (int)row.num_cells();
row_t max = 0;
bool any_non_null = false;
for(auto cell : row)
{
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()));
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()));
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)
{
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");
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;
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)
{
@ -288,7 +285,7 @@ std::string writer::write_relationships(const std::unordered_map<std::string, st
{
pugi::xml_document doc;
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)
{
@ -308,7 +305,7 @@ std::string writer::write_theme()
/*
pugi::xml_document doc;
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");
auto theme_elements_node = theme_node.append_child("a:themeElements");
auto clr_scheme_node = theme_elements_node.append_child("a:clrScheme");

View File

@ -4,14 +4,13 @@
#include <iostream>
#include <cxxtest/TestSuite.h>
#include "../xlnt.h"
#include <xlnt/xlnt.h>
class CellTestSuite : public CxxTest::TestSuite
{
public:
CellTestSuite()
{
}
void test_coordinates()
@ -313,7 +312,7 @@ public:
xlnt::cell cell(ws, "A", 1);
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);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,7 +4,7 @@
#include <iostream>
#include <cxxtest/TestSuite.h>
#include "../xlnt.h"
#include <xlnt/xlnt.h>
#include "PathHelper.h"
class ReadTestSuite : public CxxTest::TestSuite
@ -132,27 +132,27 @@ public:
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()
{
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()
{
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()
{
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()
{
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()
@ -167,12 +167,12 @@ public:
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()
{
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()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -21,7 +21,7 @@ int main( int argc, char *argv[] ) {
return status;
}
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;
@ -30,161 +30,161 @@ CxxTest::StaticSuiteDescription suiteDescription_CellTestSuite( "../../source/te
static class TestDescription_suite_CellTestSuite_test_coordinates : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_coordinates;
static class TestDescription_suite_CellTestSuite_test_invalid_coordinate : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_invalid_coordinate;
static class TestDescription_suite_CellTestSuite_test_zero_row : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_zero_row;
static class TestDescription_suite_CellTestSuite_test_absolute : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_absolute;
static class TestDescription_suite_CellTestSuite_test_absolute_multiple : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_absolute_multiple;
static class TestDescription_suite_CellTestSuite_test_column_index : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_column_index;
static class TestDescription_suite_CellTestSuite_test_bad_column_index : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_bad_column_index;
static class TestDescription_suite_CellTestSuite_test_column_letter_boundries : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_column_letter_boundries;
static class TestDescription_suite_CellTestSuite_test_column_letter : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_column_letter;
static class TestDescription_suite_CellTestSuite_test_initial_value : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_initial_value;
static class TestDescription_suite_CellTestSuite_test_null : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_null;
static class TestDescription_suite_CellTestSuite_test_numeric : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_numeric;
static class TestDescription_suite_CellTestSuite_test_string : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_string;
static class TestDescription_suite_CellTestSuite_test_single_dot : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_single_dot;
static class TestDescription_suite_CellTestSuite_test_formula : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_formula;
static class TestDescription_suite_CellTestSuite_test_boolean : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_boolean;
static class TestDescription_suite_CellTestSuite_test_leading_zero : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_leading_zero;
static class TestDescription_suite_CellTestSuite_test_error_codes : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_error_codes;
static class TestDescription_suite_CellTestSuite_test_data_type_check : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_data_type_check;
static class TestDescription_suite_CellTestSuite_test_set_bad_type : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_set_bad_type;
static class TestDescription_suite_CellTestSuite_test_time : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_time;
static class TestDescription_suite_CellTestSuite_test_date_format_on_non_date : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_date_format_on_non_date;
static class TestDescription_suite_CellTestSuite_test_set_get_date : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_set_get_date;
static class TestDescription_suite_CellTestSuite_test_repr : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_repr;
static class TestDescription_suite_CellTestSuite_test_is_date : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_CellTestSuite_test_is_date;
static class TestDescription_suite_CellTestSuite_test_is_not_date_color_format : public CxxTest::RealTestDescription {
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(); }
} 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;
@ -275,7 +275,7 @@ public:
void runTest() { 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;
@ -318,7 +318,7 @@ public:
void runTest() { 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;
@ -409,7 +409,7 @@ public:
void runTest() { 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;
@ -512,7 +512,7 @@ public:
void runTest() { 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;
@ -531,7 +531,7 @@ public:
void runTest() { 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;
@ -574,7 +574,7 @@ public:
void runTest() { 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;
@ -707,7 +707,7 @@ public:
void runTest() { 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;
@ -738,7 +738,7 @@ public:
void runTest() { 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;
@ -835,7 +835,7 @@ public:
void runTest() { 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;
@ -848,7 +848,7 @@ public:
void runTest() { 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;
@ -987,7 +987,7 @@ public:
void runTest() { 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;
@ -1126,43 +1126,37 @@ public:
void runTest() { 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 {
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(); }
} testDescription_suite_WorksheetTestSuite_test_auto_filter;
static class TestDescription_suite_WorksheetTestSuite_test_page_margins : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_WorksheetTestSuite_test_page_margins;
static class TestDescription_suite_WorksheetTestSuite_test_merge : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_WorksheetTestSuite_test_merge;
static class TestDescription_suite_WorksheetTestSuite_test_freeze : public CxxTest::RealTestDescription {
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(); }
} testDescription_suite_WorksheetTestSuite_test_freeze;
static class TestDescription_suite_WorksheetTestSuite_test_printer_settings : public CxxTest::RealTestDescription {
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(); }
} 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;
@ -1295,7 +1289,7 @@ public:
void runTest() { 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;

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