mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
hopefully the last major restructuring
This commit is contained in:
parent
3e78b7e49b
commit
cf9f6f0ae9
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -9,3 +9,4 @@ lib/
|
||||||
#*#
|
#*#
|
||||||
*~
|
*~
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
tests/test_data/writer/*.xlsx
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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);
|
84
include/xlnt/cell_reference.h
Normal file
84
include/xlnt/cell_reference.h
Normal 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
|
47
include/xlnt/cell_struct.h
Normal file
47
include/xlnt/cell_struct.h
Normal 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
14
include/xlnt/config.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace xlnt {
|
||||||
|
|
||||||
|
enum class limit_style
|
||||||
|
{
|
||||||
|
openpyxl,
|
||||||
|
excel,
|
||||||
|
maximum
|
||||||
|
};
|
||||||
|
|
||||||
|
const limit_style LimitStyle = limit_style::openpyxl;
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
22
include/xlnt/custom_exceptions.h
Normal file
22
include/xlnt/custom_exceptions.h
Normal 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
|
|
@ -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
170
include/xlnt/range.h
Normal 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
|
43
include/xlnt/range_reference.h
Normal file
43
include/xlnt/range_reference.h
Normal 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
|
|
@ -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
6
include/xlnt/types.h
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
typedef uint32_t row_t;
|
||||||
|
typedef uint32_t column_t;
|
|
@ -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;
|
|
@ -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"
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -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/"},
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
|
@ -1 +1,18 @@
|
||||||
#include "drawing.h"
|
#include "drawing.h"
|
||||||
|
|
||||||
|
namespace xlnt {
|
||||||
|
|
||||||
|
struct drawing_struct
|
||||||
|
{
|
||||||
|
drawing_struct()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
drawing::drawing() : root_(nullptr)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace xlnt
|
|
@ -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
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <algorithm>
|
||||||
|
#include <locale>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "protection.h"
|
#include "protection.h"
|
||||||
|
|
289
source/range.cpp
289
source/range.cpp
|
@ -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
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace xlnt {
|
|
||||||
|
|
||||||
class cell;
|
|
||||||
|
|
||||||
typedef std::vector<std::vector<cell>> range;
|
|
||||||
|
|
||||||
} // namespace xlnt
|
|
90
source/range_reference.cpp
Normal file
90
source/range_reference.cpp
Normal 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_;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
||||||
|
|
Binary file not shown.
|
@ -1,3 +1,4 @@
|
||||||
|
#include <algorithm>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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()
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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
|
||||||
{
|
{
|
|
@ -5,6 +5,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#define NOMINMAX
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#define NOMINMAX
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -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
|
|
@ -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;
|
|
@ -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);
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
Loading…
Reference in New Issue
Block a user