mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
fix some things
This commit is contained in:
parent
c7dbf12b51
commit
ac5e29b125
|
@ -39,6 +39,7 @@ class worksheet;
|
||||||
struct date;
|
struct date;
|
||||||
struct datetime;
|
struct datetime;
|
||||||
struct time;
|
struct time;
|
||||||
|
struct timedelta;
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
struct cell_impl;
|
struct cell_impl;
|
||||||
|
@ -152,6 +153,7 @@ public:
|
||||||
cell &operator=(const date &value);
|
cell &operator=(const date &value);
|
||||||
cell &operator=(const time &value);
|
cell &operator=(const time &value);
|
||||||
cell &operator=(const datetime &value);
|
cell &operator=(const datetime &value);
|
||||||
|
cell &operator=(const timedelta &value);
|
||||||
|
|
||||||
bool operator==(const cell &comparand) const;
|
bool operator==(const cell &comparand) const;
|
||||||
bool operator==(std::nullptr_t) const;
|
bool operator==(std::nullptr_t) const;
|
||||||
|
@ -163,6 +165,7 @@ public:
|
||||||
bool operator==(const date &comparand) const;
|
bool operator==(const date &comparand) const;
|
||||||
bool operator==(const time &comparand) const;
|
bool operator==(const time &comparand) const;
|
||||||
bool operator==(const datetime &comparand) const;
|
bool operator==(const datetime &comparand) const;
|
||||||
|
bool operator==(const timedelta &comparand) const;
|
||||||
|
|
||||||
friend bool operator==(std::nullptr_t, const cell &cell);
|
friend bool operator==(std::nullptr_t, const cell &cell);
|
||||||
friend bool operator==(bool comparand, const cell &cell);
|
friend bool operator==(bool comparand, const cell &cell);
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
enum calendar
|
enum class calendar
|
||||||
{
|
{
|
||||||
windows_1900,
|
windows_1900,
|
||||||
mac_1904
|
mac_1904
|
||||||
|
@ -35,14 +35,14 @@ enum calendar
|
||||||
struct date
|
struct date
|
||||||
{
|
{
|
||||||
static date today();
|
static date today();
|
||||||
static date from_number(int days_since_base_year, int base_year = 1900);
|
static date from_number(int days_since_base_year, calendar base_date);
|
||||||
|
|
||||||
date(int year, int month, int day)
|
date(int year, int month, int day)
|
||||||
: year(year), month(month), day(day)
|
: year(year), month(month), day(day)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int to_number(int base_year = 1900) const;
|
int to_number(calendar base_date) const;
|
||||||
bool operator==(const date &comparand) const;
|
bool operator==(const date &comparand) const;
|
||||||
|
|
||||||
int year;
|
int year;
|
||||||
|
@ -73,14 +73,14 @@ struct time
|
||||||
struct datetime
|
struct datetime
|
||||||
{
|
{
|
||||||
static datetime now();
|
static datetime now();
|
||||||
static datetime from_number(long double number, int base_year = 1900);
|
static datetime from_number(long double number, calendar base_date);
|
||||||
|
|
||||||
datetime(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int microsecond = 0)
|
datetime(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int microsecond = 0)
|
||||||
: year(year), month(month), day(day), hour(hour), minute(minute), second(second), microsecond(microsecond)
|
: year(year), month(month), day(day), hour(hour), minute(minute), second(second), microsecond(microsecond)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
double to_number(int base_year = 1900) const;
|
double to_number(calendar base_date) const;
|
||||||
bool operator==(const datetime &comparand) const;
|
bool operator==(const datetime &comparand) const;
|
||||||
|
|
||||||
int year;
|
int year;
|
||||||
|
@ -91,5 +91,20 @@ struct datetime
|
||||||
int second;
|
int second;
|
||||||
int microsecond;
|
int microsecond;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct timedelta
|
||||||
|
{
|
||||||
|
timedelta(int days, int hours, int minutes, int seconds, int microseconds) : days(days), hours(hours), minutes(minutes), seconds(seconds), microseconds(microseconds)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
double to_number() const;
|
||||||
|
|
||||||
|
int days;
|
||||||
|
int hours;
|
||||||
|
int minutes;
|
||||||
|
int seconds;
|
||||||
|
int microseconds;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -89,7 +89,7 @@ public:
|
||||||
class invalid_file_exception : public std::runtime_error
|
class invalid_file_exception : public std::runtime_error
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
invalid_file_exception();
|
invalid_file_exception(const std::string &filename);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -106,6 +106,8 @@ public:
|
||||||
|
|
||||||
void flush(bool force_write = false);
|
void flush(bool force_write = false);
|
||||||
|
|
||||||
|
std::string get_filename() const { return filename_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void read_all();
|
void read_all();
|
||||||
void write_all();
|
void write_all();
|
||||||
|
|
|
@ -40,14 +40,15 @@ class reader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static std::vector<relationship> read_relationships(const std::string &content);
|
static std::vector<relationship> read_relationships(const std::string &content);
|
||||||
static std::pair<std::unordered_map<std::string, std::string>, std::unordered_map<std::string, std::string>> read_content_types(const std::string &content);
|
static std::vector<std::pair<std::string, std::string>> read_content_types(const zip_file &archive);
|
||||||
static std::string determine_document_type(const std::unordered_map<std::string, std::string> &override_types);
|
static std::string determine_document_type(const std::vector<std::pair<std::string, std::string>> &override_types);
|
||||||
static worksheet read_worksheet(std::istream &handle, workbook &wb, const std::string &title, const std::vector<std::string> &string_table);
|
static worksheet read_worksheet(std::istream &handle, workbook &wb, const std::string &title, const std::vector<std::string> &string_table);
|
||||||
static void read_worksheet(worksheet ws, const std::string &xml_string, const std::vector<std::string> &string_table, const std::vector<int> &number_format_ids);
|
static void read_worksheet(worksheet ws, const std::string &xml_string, const std::vector<std::string> &string_table, const std::vector<int> &number_format_ids);
|
||||||
static std::vector<std::string> read_shared_string(const std::string &xml_string);
|
static std::vector<std::string> read_shared_string(const std::string &xml_string);
|
||||||
static std::string read_dimension(const std::string &xml_string);
|
static std::string read_dimension(const std::string &xml_string);
|
||||||
static document_properties read_properties_core(const std::string &xml_string);
|
static document_properties read_properties_core(const std::string &xml_string);
|
||||||
static std::vector<std::pair<std::string,std::string>> read_sheets(const zip_file &archive);
|
static std::vector<std::pair<std::string,std::string>> read_sheets(const zip_file &archive);
|
||||||
|
static workbook load_workbook(const std::string &filename, bool guess_types = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
|
class document_properties;
|
||||||
class drawing;
|
class drawing;
|
||||||
class range;
|
class range;
|
||||||
class range_reference;
|
class range_reference;
|
||||||
|
@ -40,7 +41,7 @@ class relationship;
|
||||||
class worksheet;
|
class worksheet;
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
struct workbook_impl;
|
struct workbook_impl;
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
struct content_type
|
struct content_type
|
||||||
|
@ -61,8 +62,8 @@ public:
|
||||||
workbook();
|
workbook();
|
||||||
~workbook();
|
~workbook();
|
||||||
|
|
||||||
workbook &operator=(const workbook &) = delete;
|
workbook &operator=(const workbook &);
|
||||||
workbook(const workbook &) = delete;
|
workbook(const workbook &);
|
||||||
|
|
||||||
//void read_workbook_settings(const std::string &xml_source);
|
//void read_workbook_settings(const std::string &xml_source);
|
||||||
|
|
||||||
|
@ -142,7 +143,8 @@ public:
|
||||||
|
|
||||||
std::vector<std::string> get_sheet_names() const;
|
std::vector<std::string> get_sheet_names() const;
|
||||||
|
|
||||||
int get_base_year() const;
|
document_properties &get_properties();
|
||||||
|
const document_properties &get_properties() const;
|
||||||
|
|
||||||
//named ranges
|
//named ranges
|
||||||
void create_named_range(const std::string &name, worksheet worksheet, const range_reference &reference);
|
void create_named_range(const std::string &name, worksheet worksheet, const range_reference &reference);
|
||||||
|
@ -158,6 +160,7 @@ public:
|
||||||
bool load(const std::istream &stream);
|
bool load(const std::istream &stream);
|
||||||
|
|
||||||
bool operator==(const workbook &rhs) const;
|
bool operator==(const workbook &rhs) const;
|
||||||
|
bool operator==(std::nullptr_t) const;
|
||||||
|
|
||||||
std::vector<content_type> get_content_types() const;
|
std::vector<content_type> get_content_types() const;
|
||||||
|
|
||||||
|
@ -167,7 +170,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class worksheet;
|
friend class worksheet;
|
||||||
std::unique_ptr<detail::workbook_impl> d_;
|
std::shared_ptr<detail::workbook_impl> d_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -31,10 +31,10 @@
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
class row
|
class cell_vector
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
row(worksheet ws, const range_reference &ref);
|
cell_vector(worksheet ws, const range_reference &ref);
|
||||||
|
|
||||||
std::size_t num_cells() const;
|
std::size_t num_cells() const;
|
||||||
|
|
||||||
|
@ -115,17 +115,17 @@ public:
|
||||||
|
|
||||||
~range();
|
~range();
|
||||||
|
|
||||||
row operator[](std::size_t row_index);
|
cell_vector operator[](std::size_t vector_index);
|
||||||
|
|
||||||
const row operator[](std::size_t row_index) const;
|
const cell_vector operator[](std::size_t vector_index) const;
|
||||||
|
|
||||||
bool operator==(const range &comparand) const;
|
bool operator==(const range &comparand) const;
|
||||||
|
|
||||||
bool operator!=(const range &comparand) const { return !(*this == comparand); }
|
bool operator!=(const range &comparand) const { return !(*this == comparand); }
|
||||||
|
|
||||||
row get_row(std::size_t row_index);
|
cell_vector get_vector(std::size_t vector_index);
|
||||||
|
|
||||||
const row get_row(std::size_t row_index) const;
|
const cell_vector get_vector(std::size_t vector_index) const;
|
||||||
|
|
||||||
cell get_cell(const cell_reference &ref);
|
cell get_cell(const cell_reference &ref);
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ public:
|
||||||
|
|
||||||
range_reference get_reference() const;
|
range_reference get_reference() const;
|
||||||
|
|
||||||
std::size_t num_rows() const;
|
std::size_t length() const;
|
||||||
|
|
||||||
class iterator
|
class iterator
|
||||||
{
|
{
|
||||||
|
@ -147,7 +147,7 @@ public:
|
||||||
iterator operator++(int);
|
iterator operator++(int);
|
||||||
iterator &operator++();
|
iterator &operator++();
|
||||||
|
|
||||||
row operator*();
|
cell_vector operator*();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
worksheet ws_;
|
worksheet ws_;
|
||||||
|
@ -170,7 +170,7 @@ public:
|
||||||
const_iterator operator++(int);
|
const_iterator operator++(int);
|
||||||
const_iterator &operator++();
|
const_iterator &operator++();
|
||||||
|
|
||||||
const row operator*();
|
const cell_vector operator*();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
worksheet ws_;
|
worksheet ws_;
|
||||||
|
|
|
@ -60,6 +60,54 @@ class row_properties
|
||||||
int style_index;
|
int style_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class header
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
header();
|
||||||
|
void set_text(const std::string &text) { text_ = text; }
|
||||||
|
void set_font_name(const std::string &font_name) { font_name_ = font_name; }
|
||||||
|
void set_font_size(std::size_t font_size) { font_size_ = font_size; }
|
||||||
|
void set_font_color(const std::string &font_color) { font_color_ = font_color; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string text_;
|
||||||
|
std::string font_name_;
|
||||||
|
std::size_t font_size_;
|
||||||
|
std::string font_color_;
|
||||||
|
};
|
||||||
|
|
||||||
|
class footer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
footer();
|
||||||
|
void set_text(const std::string &text) { text_ = text; }
|
||||||
|
void set_font_name(const std::string &font_name) { font_name_ = font_name; }
|
||||||
|
void set_font_size(std::size_t font_size) { font_size_ = font_size; }
|
||||||
|
void set_font_color(const std::string &font_color) { font_color_ = font_color; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string text_;
|
||||||
|
std::string font_name_;
|
||||||
|
std::size_t font_size_;
|
||||||
|
std::string font_color_;
|
||||||
|
};
|
||||||
|
|
||||||
|
class header_footer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
header_footer();
|
||||||
|
header &get_left_header() { return left_header_; }
|
||||||
|
header &get_center_header() { return center_header_; }
|
||||||
|
header &get_right_header() { return right_header_; }
|
||||||
|
footer &get_left_footer() { return left_footer_; }
|
||||||
|
footer &get_center_footer() { return center_footer_; }
|
||||||
|
footer &get_right_footer() { return right_footer_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
header left_header_, right_header_, center_header_;
|
||||||
|
footer left_footer_, right_footer_, center_footer_;
|
||||||
|
};
|
||||||
|
|
||||||
struct page_setup
|
struct page_setup
|
||||||
{
|
{
|
||||||
enum class page_break
|
enum class page_break
|
||||||
|
@ -254,6 +302,9 @@ public:
|
||||||
|
|
||||||
void reserve(std::size_t n);
|
void reserve(std::size_t n);
|
||||||
|
|
||||||
|
header_footer &get_header_footer();
|
||||||
|
const header_footer &get_header_footer() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class workbook;
|
friend class workbook;
|
||||||
friend class cell;
|
friend class cell;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "detail/cell_impl.hpp"
|
#include "detail/cell_impl.hpp"
|
||||||
#include "common/exceptions.hpp"
|
#include "common/exceptions.hpp"
|
||||||
#include "workbook/workbook.hpp"
|
#include "workbook/workbook.hpp"
|
||||||
|
#include "workbook/document_properties.hpp"
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
|
@ -256,6 +257,11 @@ bool cell::operator==(std::nullptr_t) const
|
||||||
return d_ == nullptr;
|
return d_ == nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cell::operator==(bool value) const
|
||||||
|
{
|
||||||
|
return d_->type_ == type::boolean && (bool)d_->numeric_value == value;
|
||||||
|
}
|
||||||
|
|
||||||
bool cell::operator==(int comparand) const
|
bool cell::operator==(int comparand) const
|
||||||
{
|
{
|
||||||
return d_->type_ == type::numeric && d_->numeric_value == comparand;
|
return d_->type_ == type::numeric && d_->numeric_value == comparand;
|
||||||
|
@ -297,7 +303,7 @@ bool cell::operator==(const date &comparand) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto base_year = worksheet(d_->parent_).get_parent().get_base_year();
|
auto base_year = worksheet(d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
return date::from_number((int)d_->numeric_value, base_year) == comparand;
|
return date::from_number((int)d_->numeric_value, base_year) == comparand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +314,7 @@ bool cell::operator==(const datetime &comparand) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto base_year = worksheet(d_->parent_).get_parent().get_base_year();
|
auto base_year = worksheet(d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
return datetime::from_number(d_->numeric_value, base_year) == comparand;
|
return datetime::from_number(d_->numeric_value, base_year) == comparand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,8 +345,8 @@ bool cell::operator==(const cell &comparand) const
|
||||||
case type::numeric:
|
case type::numeric:
|
||||||
if(is_date() && comparand.is_date())
|
if(is_date() && comparand.is_date())
|
||||||
{
|
{
|
||||||
auto base_year = worksheet(d_->parent_).get_parent().get_base_year();
|
auto base_year = worksheet(d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
auto other_base_year = worksheet(comparand.d_->parent_).get_parent().get_base_year();
|
auto other_base_year = worksheet(comparand.d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
return date::from_number((int)d_->numeric_value, base_year) == date::from_number((int)comparand.d_->numeric_value, other_base_year);
|
return date::from_number((int)d_->numeric_value, base_year) == date::from_number((int)comparand.d_->numeric_value, other_base_year);
|
||||||
}
|
}
|
||||||
return d_->numeric_value == comparand.d_->numeric_value;
|
return d_->numeric_value == comparand.d_->numeric_value;
|
||||||
|
@ -349,6 +355,11 @@ bool cell::operator==(const cell &comparand) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator==(bool comparand, const xlnt::cell &cell)
|
||||||
|
{
|
||||||
|
return cell == comparand;
|
||||||
|
}
|
||||||
|
|
||||||
bool operator==(int comparand, const xlnt::cell &cell)
|
bool operator==(int comparand, const xlnt::cell &cell)
|
||||||
{
|
{
|
||||||
return cell == comparand;
|
return cell == comparand;
|
||||||
|
@ -517,7 +528,7 @@ cell &cell::operator=(const time &value)
|
||||||
cell &cell::operator=(const date &value)
|
cell &cell::operator=(const date &value)
|
||||||
{
|
{
|
||||||
d_->type_ = type::numeric;
|
d_->type_ = type::numeric;
|
||||||
auto base_year = worksheet(d_->parent_).get_parent().get_base_year();
|
auto base_year = worksheet(d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
d_->numeric_value = value.to_number(base_year);
|
d_->numeric_value = value.to_number(base_year);
|
||||||
d_->is_date_ = true;
|
d_->is_date_ = true;
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -526,12 +537,20 @@ cell &cell::operator=(const date &value)
|
||||||
cell &cell::operator=(const datetime &value)
|
cell &cell::operator=(const datetime &value)
|
||||||
{
|
{
|
||||||
d_->type_ = type::numeric;
|
d_->type_ = type::numeric;
|
||||||
auto base_year = worksheet(d_->parent_).get_parent().get_base_year();
|
auto base_year = worksheet(d_->parent_).get_parent().get_properties().excel_base_date;
|
||||||
d_->numeric_value = value.to_number(base_year);
|
d_->numeric_value = value.to_number(base_year);
|
||||||
d_->is_date_ = true;
|
d_->is_date_ = true;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cell &cell::operator=(const timedelta &value)
|
||||||
|
{
|
||||||
|
d_->type_ = type::numeric;
|
||||||
|
d_->numeric_value = value.to_number();
|
||||||
|
d_->is_date_ = true;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
std::string cell::to_string() const
|
std::string cell::to_string() const
|
||||||
{
|
{
|
||||||
return "<Cell " + worksheet(d_->parent_).get_title() + "." + get_reference().to_string() + ">";
|
return "<Cell " + worksheet(d_->parent_).get_title() + "." + get_reference().to_string() + ">";
|
||||||
|
|
|
@ -38,11 +38,11 @@ time time::from_number(long double raw_time)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
date date::from_number(int days_since_base_year, int base_year)
|
date date::from_number(int days_since_base_year, calendar base_date)
|
||||||
{
|
{
|
||||||
date result(0, 0, 0);
|
date result(0, 0, 0);
|
||||||
|
|
||||||
if(base_year == 1904)
|
if(base_date == calendar::mac_1904)
|
||||||
{
|
{
|
||||||
days_since_base_year += 1462;
|
days_since_base_year += 1462;
|
||||||
}
|
}
|
||||||
|
@ -72,9 +72,9 @@ date date::from_number(int days_since_base_year, int base_year)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
datetime datetime::from_number(long double raw_time, int base_year)
|
datetime datetime::from_number(long double raw_time, calendar base_date)
|
||||||
{
|
{
|
||||||
auto date_part = date::from_number((int)raw_time, base_year);
|
auto date_part = date::from_number((int)raw_time, base_date);
|
||||||
auto time_part = time::from_number(raw_time);
|
auto time_part = time::from_number(raw_time);
|
||||||
return datetime(date_part.year, date_part.month, date_part.day, time_part.hour, time_part.minute, time_part.second, time_part.microsecond);
|
return datetime(date_part.year, date_part.month, date_part.day, time_part.hour, time_part.minute, time_part.second, time_part.microsecond);
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ double time::to_number() const
|
||||||
return number;
|
return number;
|
||||||
}
|
}
|
||||||
|
|
||||||
int date::to_number(int base_year) const
|
int date::to_number(calendar base_date) const
|
||||||
{
|
{
|
||||||
if(day == 29 && month == 2 && year == 1900)
|
if(day == 29 && month == 2 && year == 1900)
|
||||||
{
|
{
|
||||||
|
@ -151,7 +151,7 @@ int date::to_number(int base_year) const
|
||||||
days_since_1900--;
|
days_since_1900--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(base_year == 1904)
|
if(base_date == calendar::mac_1904)
|
||||||
{
|
{
|
||||||
return days_since_1900 - 1462;
|
return days_since_1900 - 1462;
|
||||||
}
|
}
|
||||||
|
@ -159,9 +159,9 @@ int date::to_number(int base_year) const
|
||||||
return days_since_1900;
|
return days_since_1900;
|
||||||
}
|
}
|
||||||
|
|
||||||
double datetime::to_number(int base_year) const
|
double datetime::to_number(calendar base_date) const
|
||||||
{
|
{
|
||||||
return date(year, month, day).to_number(base_year)
|
return date(year, month, day).to_number(base_date)
|
||||||
+ time(hour, minute, second, microsecond).to_number();
|
+ time(hour, minute, second, microsecond).to_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,5 +178,10 @@ datetime datetime::now()
|
||||||
std::tm now = *std::localtime(&raw_time);
|
std::tm now = *std::localtime(&raw_time);
|
||||||
return datetime(1900 + now.tm_year, now.tm_mon + 1, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec);
|
return datetime(1900 + now.tm_year, now.tm_mon + 1, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double timedelta::to_number() const
|
||||||
|
{
|
||||||
|
return days + hours / 24.0;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -13,10 +13,10 @@ struct workbook_impl
|
||||||
//bool guess_types_;
|
//bool guess_types_;
|
||||||
//bool data_only_;
|
//bool data_only_;
|
||||||
int active_sheet_index_;
|
int active_sheet_index_;
|
||||||
bool date_1904_;
|
|
||||||
std::vector<worksheet_impl> worksheets_;
|
std::vector<worksheet_impl> worksheets_;
|
||||||
std::vector<relationship> relationships_;
|
std::vector<relationship> relationships_;
|
||||||
std::vector<drawing> drawings_;
|
std::vector<drawing> drawings_;
|
||||||
|
document_properties properties_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
|
@ -61,6 +61,7 @@ struct worksheet_impl
|
||||||
std::vector<range_reference> merged_cells_;
|
std::vector<range_reference> merged_cells_;
|
||||||
std::unordered_map<std::string, range_reference> named_ranges_;
|
std::unordered_map<std::string, range_reference> named_ranges_;
|
||||||
std::vector<comment> comments_;
|
std::vector<comment> comments_;
|
||||||
|
header_footer header_footer_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
|
@ -20,6 +20,12 @@ data_type_exception::data_type_exception()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
invalid_file_exception::invalid_file_exception(const std::string &filename)
|
||||||
|
: std::runtime_error(std::string("couldn't open file: (") + filename + ")")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
cell_coordinates_exception::cell_coordinates_exception(int row, int column)
|
cell_coordinates_exception::cell_coordinates_exception(int row, int column)
|
||||||
: std::runtime_error(std::string("bad cell coordinates: (") + std::to_string(row) + "," + std::to_string(column) + ")")
|
: std::runtime_error(std::string("bad cell coordinates: (") + std::to_string(row) + "," + std::to_string(column) + ")")
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,128 +5,128 @@
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
row::iterator::iterator(worksheet ws, const cell_reference &start_cell)
|
cell_vector::iterator::iterator(worksheet ws, const cell_reference &start_cell)
|
||||||
: ws_(ws),
|
: ws_(ws),
|
||||||
current_cell_(start_cell),
|
current_cell_(start_cell),
|
||||||
range_(start_cell.to_range())
|
range_(start_cell.to_range())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
row::iterator::~iterator()
|
cell_vector::iterator::~iterator()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool row::iterator::operator==(const iterator &rhs)
|
bool cell_vector::iterator::operator==(const iterator &rhs)
|
||||||
{
|
{
|
||||||
return ws_ == rhs.ws_
|
return ws_ == rhs.ws_
|
||||||
&& current_cell_ == rhs.current_cell_;
|
&& current_cell_ == rhs.current_cell_;
|
||||||
}
|
}
|
||||||
|
|
||||||
row::iterator row::iterator::operator++(int)
|
cell_vector::iterator cell_vector::iterator::operator++(int)
|
||||||
{
|
{
|
||||||
iterator old = *this;
|
iterator old = *this;
|
||||||
++*this;
|
++*this;
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
row::iterator &row::iterator::operator++()
|
cell_vector::iterator &cell_vector::iterator::operator++()
|
||||||
{
|
{
|
||||||
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
|
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
cell row::iterator::operator*()
|
cell cell_vector::iterator::operator*()
|
||||||
{
|
{
|
||||||
return ws_[current_cell_];
|
return ws_[current_cell_];
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator::const_iterator(worksheet ws, const cell_reference &start_cell)
|
cell_vector::const_iterator::const_iterator(worksheet ws, const cell_reference &start_cell)
|
||||||
: ws_(ws),
|
: ws_(ws),
|
||||||
current_cell_(start_cell),
|
current_cell_(start_cell),
|
||||||
range_(start_cell.to_range())
|
range_(start_cell.to_range())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator::~const_iterator()
|
cell_vector::const_iterator::~const_iterator()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool row::const_iterator::operator==(const const_iterator &rhs)
|
bool cell_vector::const_iterator::operator==(const const_iterator &rhs)
|
||||||
{
|
{
|
||||||
return ws_ == rhs.ws_
|
return ws_ == rhs.ws_
|
||||||
&& rhs.current_cell_ == current_cell_;
|
&& rhs.current_cell_ == current_cell_;
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator row::const_iterator::operator++(int)
|
cell_vector::const_iterator cell_vector::const_iterator::operator++(int)
|
||||||
{
|
{
|
||||||
const_iterator old = *this;
|
const_iterator old = *this;
|
||||||
++*this;
|
++*this;
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator &row::const_iterator::operator++()
|
cell_vector::const_iterator &cell_vector::const_iterator::operator++()
|
||||||
{
|
{
|
||||||
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
|
current_cell_.set_column_index(current_cell_.get_column_index() + 1);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const cell row::const_iterator::operator*()
|
const cell cell_vector::const_iterator::operator*()
|
||||||
{
|
{
|
||||||
const worksheet ws_const = ws_;
|
const worksheet ws_const = ws_;
|
||||||
return ws_const[current_cell_];
|
return ws_const[current_cell_];
|
||||||
}
|
}
|
||||||
|
|
||||||
row::iterator row::begin()
|
cell_vector::iterator cell_vector::begin()
|
||||||
{
|
{
|
||||||
return iterator(ws_, ref_.get_top_left());
|
return iterator(ws_, ref_.get_top_left());
|
||||||
}
|
}
|
||||||
|
|
||||||
row::iterator row::end()
|
cell_vector::iterator cell_vector::end()
|
||||||
{
|
{
|
||||||
auto past_end = ref_.get_bottom_right();
|
auto past_end = ref_.get_bottom_right();
|
||||||
past_end.set_column_index(past_end.get_column_index() + 1);
|
past_end.set_column_index(past_end.get_column_index() + 1);
|
||||||
return iterator(ws_, past_end);
|
return iterator(ws_, past_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator row::cbegin() const
|
cell_vector::const_iterator cell_vector::cbegin() const
|
||||||
{
|
{
|
||||||
return const_iterator(ws_, ref_.get_top_left());
|
return const_iterator(ws_, ref_.get_top_left());
|
||||||
}
|
}
|
||||||
|
|
||||||
row::const_iterator row::cend() const
|
cell_vector::const_iterator cell_vector::cend() const
|
||||||
{
|
{
|
||||||
auto past_end = ref_.get_top_left();
|
auto past_end = ref_.get_top_left();
|
||||||
past_end.set_column_index(past_end.get_column_index() + 1);
|
past_end.set_column_index(past_end.get_column_index() + 1);
|
||||||
return const_iterator(ws_, past_end);
|
return const_iterator(ws_, past_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
cell row::operator[](std::size_t column_index)
|
cell cell_vector::operator[](std::size_t column_index)
|
||||||
{
|
{
|
||||||
return get_cell(column_index);
|
return get_cell(column_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::size_t row::num_cells() const
|
std::size_t cell_vector::num_cells() const
|
||||||
{
|
{
|
||||||
return ref_.get_width() + 1;
|
return ref_.get_width() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
row::row(worksheet ws, const range_reference &reference)
|
cell_vector::cell_vector(worksheet ws, const range_reference &reference)
|
||||||
: ws_(ws),
|
: ws_(ws),
|
||||||
ref_(reference)
|
ref_(reference)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
cell row::front()
|
cell cell_vector::front()
|
||||||
{
|
{
|
||||||
return get_cell(ref_.get_top_left().get_column_index());
|
return get_cell(ref_.get_top_left().get_column_index());
|
||||||
}
|
}
|
||||||
|
|
||||||
cell row::back()
|
cell cell_vector::back()
|
||||||
{
|
{
|
||||||
return get_cell(ref_.get_bottom_right().get_column_index());
|
return get_cell(ref_.get_bottom_right().get_column_index());
|
||||||
}
|
}
|
||||||
|
|
||||||
cell row::get_cell(std::size_t column_index)
|
cell cell_vector::get_cell(std::size_t column_index)
|
||||||
{
|
{
|
||||||
return ws_.get_cell(ref_.get_top_left().make_offset((int)column_index, 0));
|
return ws_.get_cell(ref_.get_top_left().make_offset((int)column_index, 0));
|
||||||
}
|
}
|
||||||
|
@ -142,9 +142,9 @@ range::~range()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
row range::operator[](std::size_t row)
|
cell_vector range::operator[](std::size_t index)
|
||||||
{
|
{
|
||||||
return get_row(row);
|
return get_vector(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
range_reference range::get_reference() const
|
range_reference range::get_reference() const
|
||||||
|
@ -152,7 +152,7 @@ range_reference range::get_reference() const
|
||||||
return ref_;
|
return ref_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::size_t range::num_rows() const
|
std::size_t range::length() const
|
||||||
{
|
{
|
||||||
return ref_.get_bottom_right().get_row_index() - ref_.get_top_left().get_row_index() + 1;
|
return ref_.get_bottom_right().get_row_index() - ref_.get_top_left().get_row_index() + 1;
|
||||||
}
|
}
|
||||||
|
@ -163,11 +163,11 @@ bool range::operator==(const range &comparand) const
|
||||||
&& ws_ == comparand.ws_;
|
&& ws_ == comparand.ws_;
|
||||||
}
|
}
|
||||||
|
|
||||||
row range::get_row(std::size_t row_)
|
cell_vector range::get_vector(std::size_t vector_index)
|
||||||
{
|
{
|
||||||
range_reference row_reference(ref_.get_top_left().get_column_index(), ref_.get_top_left().get_row_index() + (int)row_,
|
range_reference reference(ref_.get_top_left().get_column_index(), ref_.get_top_left().get_row_index() + (int)vector_index,
|
||||||
ref_.get_bottom_right().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)vector_index);
|
||||||
return row(ws_, row_reference);
|
return cell_vector(ws_, reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
cell range::get_cell(const cell_reference &ref)
|
cell range::get_cell(const cell_reference &ref)
|
||||||
|
@ -237,13 +237,13 @@ range::iterator &range::iterator::operator++()
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
row range::iterator::operator*()
|
cell_vector range::iterator::operator*()
|
||||||
{
|
{
|
||||||
range_reference row_range(range_.get_top_left().get_column_index(),
|
range_reference reference(range_.get_top_left().get_column_index(),
|
||||||
current_cell_.get_row_index(),
|
current_cell_.get_row_index(),
|
||||||
range_.get_bottom_right().get_column_index(),
|
range_.get_bottom_right().get_column_index(),
|
||||||
current_cell_.get_row_index());
|
current_cell_.get_row_index());
|
||||||
return row(ws_, row_range);
|
return cell_vector(ws_, reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
range::const_iterator::const_iterator(worksheet ws, const range_reference &start_cell)
|
range::const_iterator::const_iterator(worksheet ws, const range_reference &start_cell)
|
||||||
|
@ -276,13 +276,13 @@ range::const_iterator &range::const_iterator::operator++()
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const row range::const_iterator::operator*()
|
const cell_vector range::const_iterator::operator*()
|
||||||
{
|
{
|
||||||
range_reference row_range(range_.get_top_left().get_column_index(),
|
range_reference reference(range_.get_top_left().get_column_index(),
|
||||||
current_cell_.get_row_index(),
|
current_cell_.get_row_index(),
|
||||||
range_.get_bottom_right().get_column_index(),
|
range_.get_bottom_right().get_column_index(),
|
||||||
current_cell_.get_row_index());
|
current_cell_.get_row_index());
|
||||||
return row(ws_, row_range);
|
return cell_vector(ws_, reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "workbook/document_properties.hpp"
|
#include "workbook/document_properties.hpp"
|
||||||
#include "common/relationship.hpp"
|
#include "common/relationship.hpp"
|
||||||
#include "common/zip_file.hpp"
|
#include "common/zip_file.hpp"
|
||||||
|
#include "common/exceptions.hpp"
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
|
@ -106,39 +107,44 @@ std::vector<relationship> reader::read_relationships(const std::string &content)
|
||||||
return relationships;
|
return relationships;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<std::unordered_map<std::string, std::string>, std::unordered_map<std::string, std::string>> reader::read_content_types(const std::string &content)
|
std::vector<std::pair<std::string, std::string>> reader::read_content_types(const zip_file &archive)
|
||||||
{
|
{
|
||||||
pugi::xml_document doc;
|
pugi::xml_document doc;
|
||||||
doc.load(content.c_str());
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
doc.load(archive.get_file_contents("[Content_Types].xml").c_str());
|
||||||
|
}
|
||||||
|
catch(std::out_of_range)
|
||||||
|
{
|
||||||
|
throw invalid_file_exception(archive.get_filename());
|
||||||
|
}
|
||||||
|
|
||||||
auto root_node = doc.child("Types");
|
auto root_node = doc.child("Types");
|
||||||
|
|
||||||
std::unordered_map<std::string, std::string> default_types;
|
std::vector<std::pair<std::string, std::string>> override_types;
|
||||||
|
|
||||||
for(auto child : root_node.children("Default"))
|
|
||||||
{
|
|
||||||
default_types[child.attribute("Extension").as_string()] = child.attribute("ContentType").as_string();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unordered_map<std::string, std::string> override_types;
|
|
||||||
|
|
||||||
for(auto child : root_node.children("Override"))
|
for(auto child : root_node.children("Override"))
|
||||||
{
|
{
|
||||||
override_types[child.attribute("PartName").as_string()] = child.attribute("ContentType").as_string();
|
std::string part_name = child.attribute("PartName").as_string();
|
||||||
|
std::string content_type = child.attribute("ContentType").as_string();
|
||||||
|
override_types.push_back({part_name, content_type});
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::make_pair(default_types, override_types);
|
return override_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string reader::determine_document_type(const std::unordered_map<std::string, std::string> &override_types)
|
std::string reader::determine_document_type(const std::vector<std::pair<std::string, std::string>> &override_types)
|
||||||
{
|
{
|
||||||
std::string type;
|
auto match = std::find_if(override_types.begin(), override_types.end(), [](const std::pair<std::string, std::string> &p) { return p.first == "/xl/workbook.xml"; });
|
||||||
|
|
||||||
if(override_types.find("/xl/workbook.xml") != override_types.end())
|
if(match == override_types.end())
|
||||||
{
|
{
|
||||||
type = override_types.at("/xl/workbook.xml");
|
return "unsupported";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string type = match->second;
|
||||||
|
|
||||||
if(type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml")
|
if(type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml")
|
||||||
{
|
{
|
||||||
return "excel";
|
return "excel";
|
||||||
|
@ -212,7 +218,7 @@ void read_worksheet_common(worksheet ws, const pugi::xml_node &root_node, const
|
||||||
}
|
}
|
||||||
else if(number_format_id == 14) // date
|
else if(number_format_id == 14) // date
|
||||||
{
|
{
|
||||||
ws.get_cell(address) = datetime::from_number(cell_node.child("v").text().as_double(), ws.get_parent().get_base_year());
|
ws.get_cell(address) = datetime::from_number(cell_node.child("v").text().as_double(), ws.get_parent().get_properties().excel_base_date);
|
||||||
}
|
}
|
||||||
else if(number_format_id == 18) // time
|
else if(number_format_id == 18) // time
|
||||||
{
|
{
|
||||||
|
@ -220,7 +226,7 @@ void read_worksheet_common(worksheet ws, const pugi::xml_node &root_node, const
|
||||||
}
|
}
|
||||||
else if(number_format_id == 22) // datetime
|
else if(number_format_id == 22) // datetime
|
||||||
{
|
{
|
||||||
ws.get_cell(address) = datetime::from_number(cell_node.child("v").text().as_double(), 1900);
|
ws.get_cell(address) = datetime::from_number(cell_node.child("v").text().as_double(), ws.get_parent().get_properties().excel_base_date);
|
||||||
}
|
}
|
||||||
else if(number_format_id == 14) // decimal
|
else if(number_format_id == 14) // decimal
|
||||||
{
|
{
|
||||||
|
@ -282,5 +288,12 @@ std::vector<std::string> reader::read_shared_string(const std::string &xml_strin
|
||||||
|
|
||||||
return shared_strings;
|
return shared_strings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
workbook reader::load_workbook(const std::string &filename, bool guess_types)
|
||||||
|
{
|
||||||
|
workbook wb;
|
||||||
|
wb.load(filename);
|
||||||
|
return wb;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "worksheet/worksheet.hpp"
|
#include "worksheet/worksheet.hpp"
|
||||||
#include "writer/writer.hpp"
|
#include "writer/writer.hpp"
|
||||||
#include "common/zip_file.hpp"
|
#include "common/zip_file.hpp"
|
||||||
|
#include "workbook/document_properties.hpp"
|
||||||
#include "detail/cell_impl.hpp"
|
#include "detail/cell_impl.hpp"
|
||||||
#include "detail/workbook_impl.hpp"
|
#include "detail/workbook_impl.hpp"
|
||||||
#include "detail/worksheet_impl.hpp"
|
#include "detail/worksheet_impl.hpp"
|
||||||
|
@ -43,7 +44,7 @@ static std::string CreateTemporaryFilename()
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
workbook_impl::workbook_impl() : active_sheet_index_(0), date_1904_(false)
|
workbook_impl::workbook_impl() : active_sheet_index_(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -288,9 +289,9 @@ bool workbook::load(const std::string &filename)
|
||||||
zip_file f(filename, file_mode::open);
|
zip_file f(filename, file_mode::open);
|
||||||
//auto core_properties = read_core_properties();
|
//auto core_properties = read_core_properties();
|
||||||
//auto app_properties = read_app_properties();
|
//auto app_properties = read_app_properties();
|
||||||
auto content_types = reader::read_content_types(f.get_file_contents("[Content_Types].xml"));
|
auto content_types = reader::read_content_types(f);
|
||||||
|
|
||||||
auto type = reader::determine_document_type(content_types.second);
|
auto type = reader::determine_document_type(content_types);
|
||||||
|
|
||||||
if(type != "excel")
|
if(type != "excel")
|
||||||
{
|
{
|
||||||
|
@ -312,7 +313,7 @@ bool workbook::load(const std::string &filename)
|
||||||
auto root_node = doc.child("workbook");
|
auto root_node = doc.child("workbook");
|
||||||
|
|
||||||
auto workbook_pr_node = root_node.child("workbookPr");
|
auto workbook_pr_node = root_node.child("workbookPr");
|
||||||
d_->date_1904_ = workbook_pr_node.attribute("date1904") != nullptr && workbook_pr_node.attribute("date1904").as_int() != 0;
|
get_properties().excel_base_date = (workbook_pr_node.attribute("date1904") != nullptr && workbook_pr_node.attribute("date1904").as_int() != 0) ? calendar::mac_1904 : calendar::windows_1900;
|
||||||
|
|
||||||
auto sheets_node = root_node.child("sheets");
|
auto sheets_node = root_node.child("sheets");
|
||||||
|
|
||||||
|
@ -367,11 +368,6 @@ relationship workbook::get_relationship(const std::string &id) const
|
||||||
throw std::runtime_error("");
|
throw std::runtime_error("");
|
||||||
}
|
}
|
||||||
|
|
||||||
int workbook::get_base_year() const
|
|
||||||
{
|
|
||||||
return d_->date_1904_ ? 1904 : 1900;
|
|
||||||
}
|
|
||||||
|
|
||||||
void workbook::remove_sheet(worksheet ws)
|
void workbook::remove_sheet(worksheet ws)
|
||||||
{
|
{
|
||||||
auto match_iter = std::find_if(d_->worksheets_.begin(), d_->worksheets_.end(), [=](detail::worksheet_impl &comp) { return worksheet(&comp) == ws; });
|
auto match_iter = std::find_if(d_->worksheets_.begin(), d_->worksheets_.end(), [=](detail::worksheet_impl &comp) { return worksheet(&comp) == ws; });
|
||||||
|
@ -418,13 +414,21 @@ worksheet workbook::create_sheet(const std::string &title)
|
||||||
throw sheet_title_exception(title);
|
throw sheet_title_exception(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(std::find_if(d_->worksheets_.begin(), d_->worksheets_.end(), [&](detail::worksheet_impl &ws) { return worksheet(&ws).get_title() == title; }) != d_->worksheets_.end())
|
std::string unique_title = title;
|
||||||
|
|
||||||
|
if(std::find_if(d_->worksheets_.begin(), d_->worksheets_.end(), [&](detail::worksheet_impl &ws) { return worksheet(&ws).get_title() == unique_title; }) != d_->worksheets_.end())
|
||||||
{
|
{
|
||||||
throw std::runtime_error("sheet exists");
|
std::size_t suffix = 1;
|
||||||
|
|
||||||
|
while(std::find_if(d_->worksheets_.begin(), d_->worksheets_.end(), [&](detail::worksheet_impl &ws) { return worksheet(&ws).get_title() == unique_title; }) != d_->worksheets_.end())
|
||||||
|
{
|
||||||
|
unique_title = title + std::to_string(suffix);
|
||||||
|
suffix++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ws = create_sheet();
|
auto ws = create_sheet();
|
||||||
ws.set_title(title);
|
ws.set_title(unique_title);
|
||||||
|
|
||||||
return ws;
|
return ws;
|
||||||
}
|
}
|
||||||
|
@ -476,8 +480,8 @@ void workbook::clear()
|
||||||
d_->worksheets_.clear();
|
d_->worksheets_.clear();
|
||||||
d_->relationships_.clear();
|
d_->relationships_.clear();
|
||||||
d_->active_sheet_index_ = 0;
|
d_->active_sheet_index_ = 0;
|
||||||
d_->date_1904_ = false;
|
|
||||||
d_->drawings_.clear();
|
d_->drawings_.clear();
|
||||||
|
d_->properties_ = document_properties();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool workbook::save(std::vector<unsigned char> &data)
|
bool workbook::save(std::vector<unsigned char> &data)
|
||||||
|
@ -518,7 +522,12 @@ bool workbook::save(const std::string &filename)
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool workbook::operator==(std::nullptr_t) const
|
||||||
|
{
|
||||||
|
return d_.get() == nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool workbook::operator==(const workbook &rhs) const
|
bool workbook::operator==(const workbook &rhs) const
|
||||||
{
|
{
|
||||||
return d_.get() == rhs.d_.get();
|
return d_.get() == rhs.d_.get();
|
||||||
|
@ -538,4 +547,19 @@ std::vector<content_type> xlnt::workbook::get_content_types() const
|
||||||
return content_types;
|
return content_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document_properties &workbook::get_properties()
|
||||||
|
{
|
||||||
|
return d_->properties_;
|
||||||
|
}
|
||||||
|
|
||||||
|
const document_properties &workbook::get_properties() const
|
||||||
|
{
|
||||||
|
return d_->properties_;
|
||||||
|
}
|
||||||
|
|
||||||
|
workbook::workbook(const workbook &other) : d_(other.d_)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -431,6 +431,11 @@ xlnt::range worksheet::rows() const
|
||||||
return get_range(calculate_dimension());
|
return get_range(calculate_dimension());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xlnt::range worksheet::columns() const
|
||||||
|
{
|
||||||
|
return get_range(calculate_dimension());
|
||||||
|
}
|
||||||
|
|
||||||
bool worksheet::operator==(const worksheet &other) const
|
bool worksheet::operator==(const worksheet &other) const
|
||||||
{
|
{
|
||||||
return d_ == other.d_;
|
return d_ == other.d_;
|
||||||
|
@ -510,5 +515,30 @@ std::size_t worksheet::get_comment_count() const
|
||||||
{
|
{
|
||||||
return d_->comments_.size();
|
return d_->comments_.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header_footer &worksheet::get_header_footer()
|
||||||
|
{
|
||||||
|
return d_->header_footer_;
|
||||||
|
}
|
||||||
|
|
||||||
|
const header_footer &worksheet::get_header_footer() const
|
||||||
|
{
|
||||||
|
return d_->header_footer_;
|
||||||
|
}
|
||||||
|
|
||||||
|
header_footer::header_footer()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
header::header() : font_size_(12)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
footer::footer() : font_size_(12)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace xlnt
|
} // namespace xlnt
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "common/zip_file.hpp"
|
#include "common/zip_file.hpp"
|
||||||
|
#include "common/exceptions.hpp"
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
|
|
||||||
|
@ -321,7 +322,7 @@ void zip_file::start_read()
|
||||||
|
|
||||||
if(unzip_file_ == nullptr)
|
if(unzip_file_ == nullptr)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("bad or non-existant file");
|
throw invalid_file_exception(filename_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,9 +78,9 @@ public:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string GetDataDirectory()
|
static std::string GetDataDirectory(const std::string &append = "")
|
||||||
{
|
{
|
||||||
return GetExecutableDirectory() + "../tests/test_data";
|
return GetExecutableDirectory() + "../tests/test_data" + append;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CopyFile(const std::string &source, const std::string &destination, bool overwrite)
|
static void CopyFile(const std::string &source, const std::string &destination, bool overwrite)
|
||||||
|
|
|
@ -70,11 +70,11 @@ public:
|
||||||
void runTest() { suite_test_cell.test_bad_column_index(); }
|
void runTest() { suite_test_cell.test_bad_column_index(); }
|
||||||
} testDescription_suite_test_cell_test_bad_column_index;
|
} testDescription_suite_test_cell_test_bad_column_index;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_column_letter_boundries : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_column_letter_boundaries : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_column_letter_boundries() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 79, "test_column_letter_boundries" ) {}
|
TestDescription_suite_test_cell_test_column_letter_boundaries() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 79, "test_column_letter_boundaries" ) {}
|
||||||
void runTest() { suite_test_cell.test_column_letter_boundries(); }
|
void runTest() { suite_test_cell.test_column_letter_boundaries(); }
|
||||||
} testDescription_suite_test_cell_test_column_letter_boundries;
|
} testDescription_suite_test_cell_test_column_letter_boundaries;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_column_letter : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_column_letter : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
|
@ -208,51 +208,57 @@ public:
|
||||||
void runTest() { suite_test_cell.test_time(); }
|
void runTest() { suite_test_cell.test_time(); }
|
||||||
} testDescription_suite_test_cell_test_time;
|
} testDescription_suite_test_cell_test_time;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_cell_test_timedelta : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_cell_test_timedelta() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 340, "test_timedelta" ) {}
|
||||||
|
void runTest() { suite_test_cell.test_timedelta(); }
|
||||||
|
} testDescription_suite_test_cell_test_timedelta;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_date_format_on_non_date : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_date_format_on_non_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_date_format_on_non_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 340, "test_date_format_on_non_date" ) {}
|
TestDescription_suite_test_cell_test_date_format_on_non_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 350, "test_date_format_on_non_date" ) {}
|
||||||
void runTest() { suite_test_cell.test_date_format_on_non_date(); }
|
void runTest() { suite_test_cell.test_date_format_on_non_date(); }
|
||||||
} testDescription_suite_test_cell_test_date_format_on_non_date;
|
} testDescription_suite_test_cell_test_date_format_on_non_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_set_get_date : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_set_get_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_set_get_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 350, "test_set_get_date" ) {}
|
TestDescription_suite_test_cell_test_set_get_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 360, "test_set_get_date" ) {}
|
||||||
void runTest() { suite_test_cell.test_set_get_date(); }
|
void runTest() { suite_test_cell.test_set_get_date(); }
|
||||||
} testDescription_suite_test_cell_test_set_get_date;
|
} testDescription_suite_test_cell_test_set_get_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_repr : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_repr : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_repr() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 361, "test_repr" ) {}
|
TestDescription_suite_test_cell_test_repr() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 371, "test_repr" ) {}
|
||||||
void runTest() { suite_test_cell.test_repr(); }
|
void runTest() { suite_test_cell.test_repr(); }
|
||||||
} testDescription_suite_test_cell_test_repr;
|
} testDescription_suite_test_cell_test_repr;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_is_date : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_is_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_is_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 369, "test_is_date" ) {}
|
TestDescription_suite_test_cell_test_is_date() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 379, "test_is_date" ) {}
|
||||||
void runTest() { suite_test_cell.test_is_date(); }
|
void runTest() { suite_test_cell.test_is_date(); }
|
||||||
} testDescription_suite_test_cell_test_is_date;
|
} testDescription_suite_test_cell_test_is_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_is_not_date_color_format : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_is_not_date_color_format : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_is_not_date_color_format() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 383, "test_is_not_date_color_format" ) {}
|
TestDescription_suite_test_cell_test_is_not_date_color_format() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 393, "test_is_not_date_color_format" ) {}
|
||||||
void runTest() { suite_test_cell.test_is_not_date_color_format(); }
|
void runTest() { suite_test_cell.test_is_not_date_color_format(); }
|
||||||
} testDescription_suite_test_cell_test_is_not_date_color_format;
|
} testDescription_suite_test_cell_test_is_not_date_color_format;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_comment_count : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_comment_count : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_comment_count() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 394, "test_comment_count" ) {}
|
TestDescription_suite_test_cell_test_comment_count() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 404, "test_comment_count" ) {}
|
||||||
void runTest() { suite_test_cell.test_comment_count(); }
|
void runTest() { suite_test_cell.test_comment_count(); }
|
||||||
} testDescription_suite_test_cell_test_comment_count;
|
} testDescription_suite_test_cell_test_comment_count;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_comment_assignment : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_comment_assignment : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_comment_assignment() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 410, "test_comment_assignment" ) {}
|
TestDescription_suite_test_cell_test_comment_assignment() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 420, "test_comment_assignment" ) {}
|
||||||
void runTest() { suite_test_cell.test_comment_assignment(); }
|
void runTest() { suite_test_cell.test_comment_assignment(); }
|
||||||
} testDescription_suite_test_cell_test_comment_assignment;
|
} testDescription_suite_test_cell_test_comment_assignment;
|
||||||
|
|
||||||
static class TestDescription_suite_test_cell_test_cell_offset : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_cell_test_cell_offset : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_cell_test_cell_offset() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 424, "test_cell_offset" ) {}
|
TestDescription_suite_test_cell_test_cell_offset() : CxxTest::RealTestDescription( Tests_test_cell, suiteDescription_test_cell, 434, "test_cell_offset" ) {}
|
||||||
void runTest() { suite_test_cell.test_cell_offset(); }
|
void runTest() { suite_test_cell.test_cell_offset(); }
|
||||||
} testDescription_suite_test_cell_test_cell_offset;
|
} testDescription_suite_test_cell_test_cell_offset;
|
||||||
|
|
||||||
|
@ -599,123 +605,189 @@ public:
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_standard_workbook : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_standard_workbook : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_standard_workbook() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 31, "test_read_standard_workbook" ) {}
|
TestDescription_suite_test_read_test_read_standard_workbook() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 37, "test_read_standard_workbook" ) {}
|
||||||
void runTest() { suite_test_read.test_read_standard_workbook(); }
|
void runTest() { suite_test_read.test_read_standard_workbook(); }
|
||||||
} testDescription_suite_test_read_test_read_standard_workbook;
|
} testDescription_suite_test_read_test_read_standard_workbook;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_standard_workbook_from_fileobj : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_standard_workbook_from_fileobj : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_standard_workbook_from_fileobj() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 38, "test_read_standard_workbook_from_fileobj" ) {}
|
TestDescription_suite_test_read_test_read_standard_workbook_from_fileobj() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 42, "test_read_standard_workbook_from_fileobj" ) {}
|
||||||
void runTest() { suite_test_read.test_read_standard_workbook_from_fileobj(); }
|
void runTest() { suite_test_read.test_read_standard_workbook_from_fileobj(); }
|
||||||
} testDescription_suite_test_read_test_read_standard_workbook_from_fileobj;
|
} testDescription_suite_test_read_test_read_standard_workbook_from_fileobj;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_worksheet : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_worksheet : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_worksheet() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 46, "test_read_worksheet" ) {}
|
TestDescription_suite_test_read_test_read_worksheet() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 50, "test_read_worksheet" ) {}
|
||||||
void runTest() { suite_test_read.test_read_worksheet(); }
|
void runTest() { suite_test_read.test_read_worksheet(); }
|
||||||
} testDescription_suite_test_read_test_read_worksheet;
|
} testDescription_suite_test_read_test_read_worksheet;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_nostring_workbook : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_nostring_workbook : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_nostring_workbook() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 57, "test_read_nostring_workbook" ) {}
|
TestDescription_suite_test_read_test_read_nostring_workbook() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 61, "test_read_nostring_workbook" ) {}
|
||||||
void runTest() { suite_test_read.test_read_nostring_workbook(); }
|
void runTest() { suite_test_read.test_read_nostring_workbook(); }
|
||||||
} testDescription_suite_test_read_test_read_nostring_workbook;
|
} testDescription_suite_test_read_test_read_nostring_workbook;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_empty_file : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_empty_file : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_empty_file() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 64, "test_read_empty_file" ) {}
|
TestDescription_suite_test_read_test_read_empty_file() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 68, "test_read_empty_file" ) {}
|
||||||
void runTest() { suite_test_read.test_read_empty_file(); }
|
void runTest() { suite_test_read.test_read_empty_file(); }
|
||||||
} testDescription_suite_test_read_test_read_empty_file;
|
} testDescription_suite_test_read_test_read_empty_file;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_empty_archive : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_empty_archive : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_empty_archive() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 72, "test_read_empty_archive" ) {}
|
TestDescription_suite_test_read_test_read_empty_archive() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 74, "test_read_empty_archive" ) {}
|
||||||
void runTest() { suite_test_read.test_read_empty_archive(); }
|
void runTest() { suite_test_read.test_read_empty_archive(); }
|
||||||
} testDescription_suite_test_read_test_read_empty_archive;
|
} testDescription_suite_test_read_test_read_empty_archive;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_dimension : public CxxTest::RealTestDescription {
|
|
||||||
public:
|
|
||||||
TestDescription_suite_test_read_test_read_dimension() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 79, "test_read_dimension" ) {}
|
|
||||||
void runTest() { suite_test_read.test_read_dimension(); }
|
|
||||||
} testDescription_suite_test_read_test_read_dimension;
|
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_calculate_dimension_iter : public CxxTest::RealTestDescription {
|
|
||||||
public:
|
|
||||||
TestDescription_suite_test_read_test_calculate_dimension_iter() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 89, "test_calculate_dimension_iter" ) {}
|
|
||||||
void runTest() { suite_test_read.test_calculate_dimension_iter(); }
|
|
||||||
} testDescription_suite_test_read_test_calculate_dimension_iter;
|
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_get_highest_row_iter : public CxxTest::RealTestDescription {
|
|
||||||
public:
|
|
||||||
TestDescription_suite_test_read_test_get_highest_row_iter() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 99, "test_get_highest_row_iter" ) {}
|
|
||||||
void runTest() { suite_test_read.test_get_highest_row_iter(); }
|
|
||||||
} testDescription_suite_test_read_test_get_highest_row_iter;
|
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_workbook_with_no_properties : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_no_properties : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_workbook_with_no_properties() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 109, "test_read_workbook_with_no_properties" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_no_properties() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 80, "test_read_workbook_with_no_properties" ) {}
|
||||||
void runTest() { suite_test_read.test_read_workbook_with_no_properties(); }
|
void runTest() { suite_test_read.test_read_workbook_with_no_properties(); }
|
||||||
} testDescription_suite_test_read_test_read_workbook_with_no_properties;
|
} testDescription_suite_test_read_test_read_workbook_with_no_properties;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_general_style : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_styles_general : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_general_style() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 116, "test_read_general_style" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_styles_general() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 92, "test_read_workbook_with_styles_general" ) {}
|
||||||
void runTest() { suite_test_read.test_read_general_style(); }
|
void runTest() { suite_test_read.test_read_workbook_with_styles_general(); }
|
||||||
} testDescription_suite_test_read_test_read_general_style;
|
} testDescription_suite_test_read_test_read_workbook_with_styles_general;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_date_style : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_styles_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_date_style() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 121, "test_read_date_style" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_styles_date() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 99, "test_read_workbook_with_styles_date" ) {}
|
||||||
void runTest() { suite_test_read.test_read_date_style(); }
|
void runTest() { suite_test_read.test_read_workbook_with_styles_date(); }
|
||||||
} testDescription_suite_test_read_test_read_date_style;
|
} testDescription_suite_test_read_test_read_workbook_with_styles_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_number_style : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_styles_number : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_number_style() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 126, "test_read_number_style" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_styles_number() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 106, "test_read_workbook_with_styles_number" ) {}
|
||||||
void runTest() { suite_test_read.test_read_number_style(); }
|
void runTest() { suite_test_read.test_read_workbook_with_styles_number(); }
|
||||||
} testDescription_suite_test_read_test_read_number_style;
|
} testDescription_suite_test_read_test_read_workbook_with_styles_number;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_time_style : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_styles_time : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_time_style() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 131, "test_read_time_style" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_styles_time() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 113, "test_read_workbook_with_styles_time" ) {}
|
||||||
void runTest() { suite_test_read.test_read_time_style(); }
|
void runTest() { suite_test_read.test_read_workbook_with_styles_time(); }
|
||||||
} testDescription_suite_test_read_test_read_time_style;
|
} testDescription_suite_test_read_test_read_workbook_with_styles_time;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_percentage_style : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_workbook_with_styles_percentage : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_percentage_style() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 136, "test_read_percentage_style" ) {}
|
TestDescription_suite_test_read_test_read_workbook_with_styles_percentage() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 120, "test_read_workbook_with_styles_percentage" ) {}
|
||||||
void runTest() { suite_test_read.test_read_percentage_style(); }
|
void runTest() { suite_test_read.test_read_workbook_with_styles_percentage(); }
|
||||||
} testDescription_suite_test_read_test_read_percentage_style;
|
} testDescription_suite_test_read_test_read_workbook_with_styles_percentage;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_win_base_date : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_win_base_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_win_base_date() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 141, "test_read_win_base_date" ) {}
|
TestDescription_suite_test_read_test_read_win_base_date() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 139, "test_read_win_base_date" ) {}
|
||||||
void runTest() { suite_test_read.test_read_win_base_date(); }
|
void runTest() { suite_test_read.test_read_win_base_date(); }
|
||||||
} testDescription_suite_test_read_test_read_win_base_date;
|
} testDescription_suite_test_read_test_read_win_base_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_mac_base_date : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_mac_base_date : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_mac_base_date() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 146, "test_read_mac_base_date" ) {}
|
TestDescription_suite_test_read_test_read_mac_base_date() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 145, "test_read_mac_base_date" ) {}
|
||||||
void runTest() { suite_test_read.test_read_mac_base_date(); }
|
void runTest() { suite_test_read.test_read_mac_base_date(); }
|
||||||
} testDescription_suite_test_read_test_read_mac_base_date;
|
} testDescription_suite_test_read_test_read_mac_base_date;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_date_style_mac : public CxxTest::RealTestDescription {
|
|
||||||
public:
|
|
||||||
TestDescription_suite_test_read_test_read_date_style_mac() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 151, "test_read_date_style_mac" ) {}
|
|
||||||
void runTest() { suite_test_read.test_read_date_style_mac(); }
|
|
||||||
} testDescription_suite_test_read_test_read_date_style_mac;
|
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_date_style_win : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_date_style_win : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_date_style_win() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 156, "test_read_date_style_win" ) {}
|
TestDescription_suite_test_read_test_read_date_style_win() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 151, "test_read_date_style_win" ) {}
|
||||||
void runTest() { suite_test_read.test_read_date_style_win(); }
|
void runTest() { suite_test_read.test_read_date_style_win(); }
|
||||||
} testDescription_suite_test_read_test_read_date_style_win;
|
} testDescription_suite_test_read_test_read_date_style_win;
|
||||||
|
|
||||||
static class TestDescription_suite_test_read_test_read_date_value : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_read_test_read_date_style_mac : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_read_test_read_date_value() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 161, "test_read_date_value" ) {}
|
TestDescription_suite_test_read_test_read_date_style_mac() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 158, "test_read_date_style_mac" ) {}
|
||||||
void runTest() { suite_test_read.test_read_date_value(); }
|
void runTest() { suite_test_read.test_read_date_style_mac(); }
|
||||||
} testDescription_suite_test_read_test_read_date_value;
|
} testDescription_suite_test_read_test_read_date_style_mac;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_compare_mac_win_dates : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_compare_mac_win_dates() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 165, "test_read_compare_mac_win_dates" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_compare_mac_win_dates(); }
|
||||||
|
} testDescription_suite_test_read_test_read_compare_mac_win_dates;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_repair_central_directory : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_repair_central_directory() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 177, "test_repair_central_directory" ) {}
|
||||||
|
void runTest() { suite_test_read.test_repair_central_directory(); }
|
||||||
|
} testDescription_suite_test_read_test_repair_central_directory;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_no_theme : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_no_theme() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 192, "test_read_no_theme" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_no_theme(); }
|
||||||
|
} testDescription_suite_test_read_test_read_no_theme;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_cell_formulae : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_cell_formulae() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 199, "test_read_cell_formulae" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_cell_formulae(); }
|
||||||
|
} testDescription_suite_test_read_test_read_cell_formulae;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_complex_formulae : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_complex_formulae() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 219, "test_read_complex_formulae" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_complex_formulae(); }
|
||||||
|
} testDescription_suite_test_read_test_read_complex_formulae;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_data_only : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_data_only() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 224, "test_data_only" ) {}
|
||||||
|
void runTest() { suite_test_read.test_data_only(); }
|
||||||
|
} testDescription_suite_test_read_test_data_only;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_detect_worksheets : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_detect_worksheets() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 229, "test_detect_worksheets" ) {}
|
||||||
|
void runTest() { suite_test_read.test_detect_worksheets(); }
|
||||||
|
} testDescription_suite_test_read_test_detect_worksheets;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_rels : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_rels() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 234, "test_read_rels" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_rels(); }
|
||||||
|
} testDescription_suite_test_read_test_read_rels;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_content_types : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_content_types() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 239, "test_read_content_types" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_content_types(); }
|
||||||
|
} testDescription_suite_test_read_test_read_content_types;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_sheets : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_sheets() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 269, "test_read_sheets" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_sheets(); }
|
||||||
|
} testDescription_suite_test_read_test_read_sheets;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_guess_types : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_guess_types() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 290, "test_guess_types" ) {}
|
||||||
|
void runTest() { suite_test_read.test_guess_types(); }
|
||||||
|
} testDescription_suite_test_read_test_guess_types;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_read_autofilter : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_read_autofilter() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 306, "test_read_autofilter" ) {}
|
||||||
|
void runTest() { suite_test_read.test_read_autofilter(); }
|
||||||
|
} testDescription_suite_test_read_test_read_autofilter;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_bad_formats_xlsb : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_bad_formats_xlsb() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 314, "test_bad_formats_xlsb" ) {}
|
||||||
|
void runTest() { suite_test_read.test_bad_formats_xlsb(); }
|
||||||
|
} testDescription_suite_test_read_test_bad_formats_xlsb;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_bad_formats_xls : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_bad_formats_xls() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 320, "test_bad_formats_xls" ) {}
|
||||||
|
void runTest() { suite_test_read.test_bad_formats_xls(); }
|
||||||
|
} testDescription_suite_test_read_test_bad_formats_xls;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_read_test_bad_formats_no : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_read_test_bad_formats_no() : CxxTest::RealTestDescription( Tests_test_read, suiteDescription_test_read, 326, "test_bad_formats_no" ) {}
|
||||||
|
void runTest() { suite_test_read.test_bad_formats_no(); }
|
||||||
|
} testDescription_suite_test_read_test_bad_formats_no;
|
||||||
|
|
||||||
#include "/Users/thomas/Development/xlnt/tests/test_strings.hpp"
|
#include "/Users/thomas/Development/xlnt/tests/test_strings.hpp"
|
||||||
|
|
||||||
|
@ -1010,144 +1082,192 @@ public:
|
||||||
void runTest() { suite_test_worksheet.test_set_bad_title(); }
|
void runTest() { suite_test_worksheet.test_set_bad_title(); }
|
||||||
} testDescription_suite_test_worksheet_test_set_bad_title;
|
} testDescription_suite_test_worksheet_test_set_bad_title;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_increment_title : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_increment_title() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 37, "test_increment_title" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_increment_title(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_increment_title;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_set_bad_title_character : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_set_bad_title_character : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_set_bad_title_character() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 37, "test_set_bad_title_character" ) {}
|
TestDescription_suite_test_worksheet_test_set_bad_title_character() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 45, "test_set_bad_title_character" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_set_bad_title_character(); }
|
void runTest() { suite_test_worksheet.test_set_bad_title_character(); }
|
||||||
} testDescription_suite_test_worksheet_test_set_bad_title_character;
|
} testDescription_suite_test_worksheet_test_set_bad_title_character;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_worksheet_dimension : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_worksheet_dimension : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_worksheet_dimension() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 48, "test_worksheet_dimension" ) {}
|
TestDescription_suite_test_worksheet_test_worksheet_dimension() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 56, "test_worksheet_dimension" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_worksheet_dimension(); }
|
void runTest() { suite_test_worksheet.test_worksheet_dimension(); }
|
||||||
} testDescription_suite_test_worksheet_test_worksheet_dimension;
|
} testDescription_suite_test_worksheet_test_worksheet_dimension;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_worksheet_range : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_worksheet_range : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_worksheet_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 57, "test_worksheet_range" ) {}
|
TestDescription_suite_test_worksheet_test_worksheet_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 65, "test_worksheet_range" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_worksheet_range(); }
|
void runTest() { suite_test_worksheet.test_worksheet_range(); }
|
||||||
} testDescription_suite_test_worksheet_test_worksheet_range;
|
} testDescription_suite_test_worksheet_test_worksheet_range;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_worksheet_named_range : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_worksheet_named_range : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_worksheet_named_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 65, "test_worksheet_named_range" ) {}
|
TestDescription_suite_test_worksheet_test_worksheet_named_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 73, "test_worksheet_named_range" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_worksheet_named_range(); }
|
void runTest() { suite_test_worksheet.test_worksheet_named_range(); }
|
||||||
} testDescription_suite_test_worksheet_test_worksheet_named_range;
|
} testDescription_suite_test_worksheet_test_worksheet_named_range;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_bad_named_range : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_bad_named_range : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_bad_named_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 75, "test_bad_named_range" ) {}
|
TestDescription_suite_test_worksheet_test_bad_named_range() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 83, "test_bad_named_range" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_bad_named_range(); }
|
void runTest() { suite_test_worksheet.test_bad_named_range(); }
|
||||||
} testDescription_suite_test_worksheet_test_bad_named_range;
|
} testDescription_suite_test_worksheet_test_bad_named_range;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_named_range_wrong_sheet : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_named_range_wrong_sheet : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_named_range_wrong_sheet() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 81, "test_named_range_wrong_sheet" ) {}
|
TestDescription_suite_test_worksheet_test_named_range_wrong_sheet() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 89, "test_named_range_wrong_sheet" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_named_range_wrong_sheet(); }
|
void runTest() { suite_test_worksheet.test_named_range_wrong_sheet(); }
|
||||||
} testDescription_suite_test_worksheet_test_named_range_wrong_sheet;
|
} testDescription_suite_test_worksheet_test_named_range_wrong_sheet;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_cell_offset : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_cell_offset : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_cell_offset() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 89, "test_cell_offset" ) {}
|
TestDescription_suite_test_worksheet_test_cell_offset() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 97, "test_cell_offset" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_cell_offset(); }
|
void runTest() { suite_test_worksheet.test_cell_offset(); }
|
||||||
} testDescription_suite_test_worksheet_test_cell_offset;
|
} testDescription_suite_test_worksheet_test_cell_offset;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_range_offset : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_range_offset : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_range_offset() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 95, "test_range_offset" ) {}
|
TestDescription_suite_test_worksheet_test_range_offset() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 103, "test_range_offset" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_range_offset(); }
|
void runTest() { suite_test_worksheet.test_range_offset(); }
|
||||||
} testDescription_suite_test_worksheet_test_range_offset;
|
} testDescription_suite_test_worksheet_test_range_offset;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_cell_alternate_coordinates : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_cell_alternate_coordinates : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_cell_alternate_coordinates() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 104, "test_cell_alternate_coordinates" ) {}
|
TestDescription_suite_test_worksheet_test_cell_alternate_coordinates() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 112, "test_cell_alternate_coordinates" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_cell_alternate_coordinates(); }
|
void runTest() { suite_test_worksheet.test_cell_alternate_coordinates(); }
|
||||||
} testDescription_suite_test_worksheet_test_cell_alternate_coordinates;
|
} testDescription_suite_test_worksheet_test_cell_alternate_coordinates;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_cell_range_name : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_cell_range_name : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_cell_range_name() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 111, "test_cell_range_name" ) {}
|
TestDescription_suite_test_worksheet_test_cell_range_name() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 119, "test_cell_range_name" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_cell_range_name(); }
|
void runTest() { suite_test_worksheet.test_cell_range_name(); }
|
||||||
} testDescription_suite_test_worksheet_test_cell_range_name;
|
} testDescription_suite_test_worksheet_test_cell_range_name;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_garbage_collect : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_garbage_collect : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_garbage_collect() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 123, "test_garbage_collect" ) {}
|
TestDescription_suite_test_worksheet_test_garbage_collect() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 131, "test_garbage_collect" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_garbage_collect(); }
|
void runTest() { suite_test_worksheet.test_garbage_collect(); }
|
||||||
} testDescription_suite_test_worksheet_test_garbage_collect;
|
} testDescription_suite_test_worksheet_test_garbage_collect;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_hyperlink_relationships : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_hyperlink_relationships : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_hyperlink_relationships() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 145, "test_hyperlink_relationships" ) {}
|
TestDescription_suite_test_worksheet_test_hyperlink_relationships() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 153, "test_hyperlink_relationships" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_hyperlink_relationships(); }
|
void runTest() { suite_test_worksheet.test_hyperlink_relationships(); }
|
||||||
} testDescription_suite_test_worksheet_test_hyperlink_relationships;
|
} testDescription_suite_test_worksheet_test_hyperlink_relationships;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_bad_relationship_type : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_bad_relationship_type : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_bad_relationship_type() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 165, "test_bad_relationship_type" ) {}
|
TestDescription_suite_test_worksheet_test_bad_relationship_type() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 173, "test_bad_relationship_type" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_bad_relationship_type(); }
|
void runTest() { suite_test_worksheet.test_bad_relationship_type(); }
|
||||||
} testDescription_suite_test_worksheet_test_bad_relationship_type;
|
} testDescription_suite_test_worksheet_test_bad_relationship_type;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_append_list : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_append_list : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_append_list() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 170, "test_append_list" ) {}
|
TestDescription_suite_test_worksheet_test_append_list() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 178, "test_append_list" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_append_list(); }
|
void runTest() { suite_test_worksheet.test_append_list(); }
|
||||||
} testDescription_suite_test_worksheet_test_append_list;
|
} testDescription_suite_test_worksheet_test_append_list;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_append_dict_letter : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_append_dict_letter : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_append_dict_letter() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 180, "test_append_dict_letter" ) {}
|
TestDescription_suite_test_worksheet_test_append_dict_letter() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 188, "test_append_dict_letter" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_append_dict_letter(); }
|
void runTest() { suite_test_worksheet.test_append_dict_letter(); }
|
||||||
} testDescription_suite_test_worksheet_test_append_dict_letter;
|
} testDescription_suite_test_worksheet_test_append_dict_letter;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_append_dict_index : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_append_dict_index : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_append_dict_index() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 190, "test_append_dict_index" ) {}
|
TestDescription_suite_test_worksheet_test_append_dict_index() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 198, "test_append_dict_index" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_append_dict_index(); }
|
void runTest() { suite_test_worksheet.test_append_dict_index(); }
|
||||||
} testDescription_suite_test_worksheet_test_append_dict_index;
|
} testDescription_suite_test_worksheet_test_append_dict_index;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_append_2d_list : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_append_2d_list : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_append_2d_list() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 200, "test_append_2d_list" ) {}
|
TestDescription_suite_test_worksheet_test_append_2d_list() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 208, "test_append_2d_list" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_append_2d_list(); }
|
void runTest() { suite_test_worksheet.test_append_2d_list(); }
|
||||||
} testDescription_suite_test_worksheet_test_append_2d_list;
|
} testDescription_suite_test_worksheet_test_append_2d_list;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_rows : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_rows : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_rows() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 215, "test_rows" ) {}
|
TestDescription_suite_test_worksheet_test_rows() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 223, "test_rows" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_rows(); }
|
void runTest() { suite_test_worksheet.test_rows(); }
|
||||||
} testDescription_suite_test_worksheet_test_rows;
|
} testDescription_suite_test_worksheet_test_rows;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_cols : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_cols() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 238, "test_cols" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_cols(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_cols;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_auto_filter : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_auto_filter : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_auto_filter() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 230, "test_auto_filter" ) {}
|
TestDescription_suite_test_worksheet_test_auto_filter() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 253, "test_auto_filter" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_auto_filter(); }
|
void runTest() { suite_test_worksheet.test_auto_filter(); }
|
||||||
} testDescription_suite_test_worksheet_test_auto_filter;
|
} testDescription_suite_test_worksheet_test_auto_filter;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_freeze : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_freeze() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 267, "test_freeze" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_freeze(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_freeze;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_write_empty : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_write_empty() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 284, "test_write_empty" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_write_empty(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_write_empty;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_page_margins : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_page_margins : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_page_margins() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 244, "test_page_margins" ) {}
|
TestDescription_suite_test_worksheet_test_page_margins() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 296, "test_page_margins" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_page_margins(); }
|
void runTest() { suite_test_worksheet.test_page_margins(); }
|
||||||
} testDescription_suite_test_worksheet_test_page_margins;
|
} testDescription_suite_test_worksheet_test_page_margins;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_merge : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_merge : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_merge() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 290, "test_merge" ) {}
|
TestDescription_suite_test_worksheet_test_merge() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 308, "test_merge" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_merge(); }
|
void runTest() { suite_test_worksheet.test_merge(); }
|
||||||
} testDescription_suite_test_worksheet_test_merge;
|
} testDescription_suite_test_worksheet_test_merge;
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_freeze : public CxxTest::RealTestDescription {
|
|
||||||
public:
|
|
||||||
TestDescription_suite_test_worksheet_test_freeze() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 359, "test_freeze" ) {}
|
|
||||||
void runTest() { suite_test_worksheet.test_freeze(); }
|
|
||||||
} testDescription_suite_test_worksheet_test_freeze;
|
|
||||||
|
|
||||||
static class TestDescription_suite_test_worksheet_test_printer_settings : public CxxTest::RealTestDescription {
|
static class TestDescription_suite_test_worksheet_test_printer_settings : public CxxTest::RealTestDescription {
|
||||||
public:
|
public:
|
||||||
TestDescription_suite_test_worksheet_test_printer_settings() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 376, "test_printer_settings" ) {}
|
TestDescription_suite_test_worksheet_test_printer_settings() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 320, "test_printer_settings" ) {}
|
||||||
void runTest() { suite_test_worksheet.test_printer_settings(); }
|
void runTest() { suite_test_worksheet.test_printer_settings(); }
|
||||||
} testDescription_suite_test_worksheet_test_printer_settings;
|
} testDescription_suite_test_worksheet_test_printer_settings;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_header_footer : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_header_footer() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 342, "test_header_footer" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_header_footer(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_header_footer;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_positioning_point : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_positioning_point() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 419, "test_positioning_point" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_positioning_point(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_positioning_point;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_positioning_roundtrip : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_positioning_roundtrip() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 427, "test_positioning_roundtrip" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_positioning_roundtrip(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_positioning_roundtrip;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_page_setup : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_page_setup() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 438, "test_page_setup" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_page_setup(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_page_setup;
|
||||||
|
|
||||||
|
static class TestDescription_suite_test_worksheet_test_page_options : public CxxTest::RealTestDescription {
|
||||||
|
public:
|
||||||
|
TestDescription_suite_test_worksheet_test_page_options() : CxxTest::RealTestDescription( Tests_test_worksheet, suiteDescription_test_worksheet, 449, "test_page_options" ) {}
|
||||||
|
void runTest() { suite_test_worksheet.test_page_options(); }
|
||||||
|
} testDescription_suite_test_worksheet_test_page_options;
|
||||||
|
|
||||||
#include "/Users/thomas/Development/xlnt/tests/test_write.hpp"
|
#include "/Users/thomas/Development/xlnt/tests/test_write.hpp"
|
||||||
|
|
||||||
static test_write suite_test_write;
|
static test_write suite_test_write;
|
||||||
|
|
|
@ -342,7 +342,7 @@ public:
|
||||||
xlnt::worksheet ws = wb.create_sheet();
|
xlnt::worksheet ws = wb.create_sheet();
|
||||||
xlnt::cell cell(ws, "A1");
|
xlnt::cell cell(ws, "A1");
|
||||||
|
|
||||||
cell = xlnt::timedelta().days(1).hours(3);
|
cell = xlnt::timedelta(1, 3, 0, 0, 0);
|
||||||
TS_ASSERT_EQUALS(cell, 1.125);
|
TS_ASSERT_EQUALS(cell, 1.125);
|
||||||
TS_ASSERT_EQUALS(cell.get_data_type(), xlnt::cell::type::numeric);
|
TS_ASSERT_EQUALS(cell.get_data_type(), xlnt::cell::type::numeric);
|
||||||
}
|
}
|
||||||
|
|
0
tests/test_data/genuine/a.no-format
Normal file
0
tests/test_data/genuine/a.no-format
Normal file
0
tests/test_data/genuine/a.xls
Normal file
0
tests/test_data/genuine/a.xls
Normal file
0
tests/test_data/genuine/a.xlsb
Normal file
0
tests/test_data/genuine/a.xlsb
Normal file
|
@ -12,7 +12,7 @@ class test_read : public CxxTest::TestSuite
|
||||||
public:
|
public:
|
||||||
void test_read_standalone_worksheet()
|
void test_read_standalone_worksheet()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory() + "/reader/sheet2.xml";
|
auto path = PathHelper::GetDataDirectory("/reader/sheet2.xml");
|
||||||
xlnt::workbook wb;
|
xlnt::workbook wb;
|
||||||
xlnt::worksheet ws(wb);
|
xlnt::worksheet ws(wb);
|
||||||
{
|
{
|
||||||
|
@ -30,8 +30,8 @@ public:
|
||||||
|
|
||||||
xlnt::workbook standard_workbook()
|
xlnt::workbook standard_workbook()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("genuine/emtpy.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/empty.xlsx");
|
||||||
return xlnt::load_workbook(path);
|
return xlnt::reader::load_workbook(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_standard_workbook()
|
void test_read_standard_workbook()
|
||||||
|
@ -41,15 +41,15 @@ public:
|
||||||
|
|
||||||
void test_read_standard_workbook_from_fileobj()
|
void test_read_standard_workbook_from_fileobj()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("genuine/emtpy.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/empty.xlsx");
|
||||||
std::ifstream fo(path, std::ios::binary);
|
std::ifstream fo(path, std::ios::binary);
|
||||||
auto wb = xlnt::load_workbook(path);
|
auto wb = xlnt::reader::load_workbook(path);
|
||||||
TS_ASSERT_DIFFERS(standard_workbook(), nullptr);
|
TS_ASSERT_DIFFERS(standard_workbook(), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_worksheet()
|
void test_read_worksheet()
|
||||||
{
|
{
|
||||||
auto wb = standard_workbook()
|
auto wb = standard_workbook();
|
||||||
auto sheet2 = wb.get_sheet_by_name("Sheet2 - Numbers");
|
auto sheet2 = wb.get_sheet_by_name("Sheet2 - Numbers");
|
||||||
TS_ASSERT_DIFFERS(sheet2, nullptr);
|
TS_ASSERT_DIFFERS(sheet2, nullptr);
|
||||||
TS_ASSERT_EQUALS("This is cell G5", sheet2.get_cell("G5"));
|
TS_ASSERT_EQUALS("This is cell G5", sheet2.get_cell("G5"));
|
||||||
|
@ -61,112 +61,112 @@ public:
|
||||||
void test_read_nostring_workbook()
|
void test_read_nostring_workbook()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/empty-no-string.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/empty-no-string.xlsx");
|
||||||
auto wb = xlnt::load_workbook(path);
|
auto wb = xlnt::reader::load_workbook(path);
|
||||||
TS_ASSERT_DIFFERS(standard_workbook(), nullptr);
|
TS_ASSERT_DIFFERS(standard_workbook(), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_empty_file()
|
void test_read_empty_file()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/null_file.xlsx";
|
auto path = PathHelper::GetDataDirectory("/reader/null_file.xlsx");
|
||||||
TS_ASSERT_THROWS(xlnt::load_workbook(path), xlnt::invalid_file_exception);
|
TS_ASSERT_THROWS(xlnt::reader::load_workbook(path), xlnt::invalid_file_exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_empty_archive()
|
void test_read_empty_archive()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/null_archive.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/null_archive.xlsx");
|
||||||
TS_ASSERT_THROWS(xlnt::load_workbook(path), xlnt::invalid_file_exception);
|
TS_ASSERT_THROWS(xlnt::reader::load_workbook(path), xlnt::invalid_file_exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_no_properties()
|
void test_read_workbook_with_no_properties()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/null_archive.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/empty_with_no_properties.xlsx");
|
||||||
xlnt::load_workbook(path);
|
xlnt::reader::load_workbook(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void workbook_with_styles()
|
xlnt::workbook workbook_with_styles()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/empty-with-styles.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/empty-with-styles.xlsx");
|
||||||
return xlnt::load_workbook(path);
|
return xlnt::reader::load_workbook(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_styles_general()
|
void test_read_workbook_with_styles_general()
|
||||||
{
|
{
|
||||||
auto wb = workbook_with_styles();
|
auto wb = workbook_with_styles();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT(ws.get_cell("A1").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::general);
|
TS_ASSERT_EQUALS(ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::general);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_styles_date()
|
void test_read_workbook_with_styles_date()
|
||||||
{
|
{
|
||||||
auto wb = workbook_with_styles();
|
auto wb = workbook_with_styles();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT(ws.get_cell("A2").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::date_xlsx14);
|
TS_ASSERT_EQUALS(ws.get_cell("A2").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_styles_number()
|
void test_read_workbook_with_styles_number()
|
||||||
{
|
{
|
||||||
auto wb = workbook_with_styles();
|
auto wb = workbook_with_styles();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT(ws.get_cell("A3").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::number00);
|
TS_ASSERT_EQUALS(ws.get_cell("A3").get_style().get_number_format().get_format_code(), xlnt::number_format::format::number00);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_styles_time()
|
void test_read_workbook_with_styles_time()
|
||||||
{
|
{
|
||||||
auto wb = workbook_with_styles();
|
auto wb = workbook_with_styles();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT(ws.get_cell("A4").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::date_time_3);
|
TS_ASSERT_EQUALS(ws.get_cell("A4").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_time3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_workbook_with_styles_percentage()
|
void test_read_workbook_with_styles_percentage()
|
||||||
{
|
{
|
||||||
auto wb = workbook_with_styles();
|
auto wb = workbook_with_styles();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT(ws.get_cell("A5").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::percentage00);
|
TS_ASSERT_EQUALS(ws.get_cell("A5").get_style().get_number_format().get_format_code(), xlnt::number_format::format::percentage00);
|
||||||
}
|
}
|
||||||
|
|
||||||
void date_mac_1904()
|
xlnt::workbook date_mac_1904()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/date_1904.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/date_1904.xlsx");
|
||||||
return xlnt::load_workbook(path);
|
return xlnt::reader::load_workbook(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void date_std_1900()
|
xlnt::workbook date_std_1900()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/date_1900.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/date_1900.xlsx");
|
||||||
return xlnt::load_workbook(path);
|
return xlnt::reader::load_workbook(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_win_base_date()
|
void test_read_win_base_date()
|
||||||
{
|
{
|
||||||
auto wb = date_std_1900();
|
auto wb = date_std_1900();
|
||||||
TS_ASSERT_EQUALS(wb.get_properties().get_excel_base_date(), xlnt::calendar::windows_1900);
|
TS_ASSERT_EQUALS(wb.get_properties().excel_base_date, xlnt::calendar::windows_1900);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_mac_base_date()
|
void test_read_mac_base_date()
|
||||||
{
|
{
|
||||||
auto wb = date_mac_1904();
|
auto wb = date_mac_1904();
|
||||||
TS_ASSERT_EQUALS(wb.get_properties().get_excel_base_date(), xlnt::calendar::mac_1904);
|
TS_ASSERT_EQUALS(wb.get_properties().excel_base_date, xlnt::calendar::mac_1904);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_date_style_win()
|
void test_read_date_style_win()
|
||||||
{
|
{
|
||||||
auto wb = date_std_1900();
|
auto wb = date_std_1900();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT_EQUALS(ws.get_cell("A1").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::date_xlsx14);
|
TS_ASSERT_EQUALS(ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_date_style_mac()
|
void test_read_date_style_mac()
|
||||||
{
|
{
|
||||||
auto wb = date_mac_1904();
|
auto wb = date_mac_1904();
|
||||||
auto ws = wb["Sheet1"];
|
auto ws = wb["Sheet1"];
|
||||||
TS_ASSERT_EQUALS(ws.get_cell("A1").get_style().get_number_format().get_format_code() == xlnt::number_format::known_formats::date_xlsx14);
|
TS_ASSERT_EQUALS(ws.get_cell("A1").get_style().get_number_format().get_format_code(), xlnt::number_format::format::date_xlsx14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_win_base_date()
|
void test_read_compare_mac_win_dates()
|
||||||
{
|
{
|
||||||
auto wb_mac = date_mac_1904();
|
auto wb_mac = date_mac_1904();
|
||||||
auto ws_mac = wb_mac["Sheet1"];
|
auto ws_mac = wb_mac["Sheet1"];
|
||||||
auto wb_win = date_win_1900();
|
auto wb_win = date_std_1900();
|
||||||
auto ws_win = wb_win["Sheet1"];
|
auto ws_win = wb_win["Sheet1"];
|
||||||
xlnt::datetime dt(2011, 10, 31);
|
xlnt::datetime dt(2011, 10, 31);
|
||||||
TS_ASSERT_EQUALS(ws_mac.get_cell("A1"), dt);
|
TS_ASSERT_EQUALS(ws_mac.get_cell("A1"), dt);
|
||||||
|
@ -192,17 +192,19 @@ public:
|
||||||
void test_read_no_theme()
|
void test_read_no_theme()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/libreoffice_nrt.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/libreoffice_nrt.xlsx");
|
||||||
auto wb = xlnt::load_workbook(path);
|
auto wb = xlnt::reader::load_workbook(path);
|
||||||
TS_ASSERT_DIFFERS(wb, nullptr);
|
TS_ASSERT_DIFFERS(wb, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_cell_formulae()
|
void test_read_cell_formulae()
|
||||||
{
|
{
|
||||||
|
TS_ASSERT(false);
|
||||||
|
/*
|
||||||
xlnt::workbook wb;
|
xlnt::workbook wb;
|
||||||
auto ws = wb.get_active_sheet();
|
auto ws = wb.get_active_sheet();
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/worksheet_formula.xml");
|
auto path = PathHelper::GetDataDirectory("/reader/worksheet_formula.xml");
|
||||||
std::ifstream ws_stream(path);
|
std::ifstream ws_stream(path);
|
||||||
xlnt::fast_parse(ws, ws_stream, {"", ""}, {}, 0);
|
xlnt::reader::fast_parse(ws, ws_stream, {"", ""}, {}, 0);
|
||||||
|
|
||||||
auto b1 = ws.get_cell("B1");
|
auto b1 = ws.get_cell("B1");
|
||||||
TS_ASSERT_EQUALS(b1.get_data_type(), xlnt::cell::type::formula);
|
TS_ASSERT_EQUALS(b1.get_data_type(), xlnt::cell::type::formula);
|
||||||
|
@ -211,6 +213,7 @@ public:
|
||||||
auto a6 = ws.get_cell("A6");
|
auto a6 = ws.get_cell("A6");
|
||||||
TS_ASSERT_EQUALS(a6.get_data_type(), xlnt::cell::type::formula);
|
TS_ASSERT_EQUALS(a6.get_data_type(), xlnt::cell::type::formula);
|
||||||
TS_ASSERT_EQUALS(a6, "=SUM(A4:A5)");
|
TS_ASSERT_EQUALS(a6, "=SUM(A4:A5)");
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_complex_formulae()
|
void test_read_complex_formulae()
|
||||||
|
@ -254,42 +257,47 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/bug137.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/bug137.xlsx");
|
||||||
xlnt::zip_file f(path);
|
xlnt::zip_file f(path, xlnt::file_mode::open);
|
||||||
auto result = xlnt::workbook_reader::read_conent_types(f);
|
auto result = xlnt::reader::read_content_types(f);
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(result, expected);
|
for(std::size_t i = 0; i < expected.size(); i++)
|
||||||
|
{
|
||||||
|
TS_ASSERT_EQUALS(result[i], expected[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_read_sheets()
|
void test_read_sheets()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/bug137.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/bug137.xlsx");
|
||||||
xlnt::zip_file f(path);
|
xlnt::zip_file f(path, xlnt::file_mode::open);
|
||||||
auto sheets = xlnt::workbook_reader::read_sheets(f);
|
auto sheets = xlnt::reader::read_sheets(f);
|
||||||
TS_ASSERT_EQUALS(sheets["rId1"], "Chart1");
|
std::vector<std::pair<std::string, std::string>> expected =
|
||||||
TS_ASSERT_EQUALS(sheets["rId2"], "Sheet1");
|
{{"rId1", "Chart1"}, {"rId2", "Sheet1"}};
|
||||||
|
TS_ASSERT_EQUALS(sheets, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/bug304.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/bug304.xlsx");
|
||||||
xlnt::zip_file f(path);
|
xlnt::zip_file f(path, xlnt::file_mode::open);
|
||||||
auto sheets = xlnt::workbook_reader::read_sheets(f);
|
auto sheets = xlnt::reader::read_sheets(f);
|
||||||
TS_ASSERT_EQUALS(sheets["rId1"], "Sheet1");
|
std::vector<std::pair<std::string, std::string>> expected =
|
||||||
TS_ASSERT_EQUALS(sheets["rId2"], "Sheet2");
|
{{"rId1", "Sheet1"}, {"rId2", "Sheet2"}, {"rId3", "Sheet3"}};
|
||||||
TS_ASSERT_EQUALS(sheets["rId3"], "Sheet3");
|
TS_ASSERT_EQUALS(sheets, expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_guess_types()
|
void test_guess_types()
|
||||||
{
|
{
|
||||||
bool guess;
|
bool guess;
|
||||||
xlnt::cell:type dtype;
|
xlnt::cell::type dtype;
|
||||||
|
std::vector<std::pair<bool, xlnt::cell::type>> test_cases = {{true, xlnt::cell::type::numeric}, {false, xlnt::cell::type::string}};
|
||||||
|
|
||||||
for(const auto &expected : {true, xlnt::cell::type::number}, {false, xlnt::cell::type::string})
|
for(const auto &expected : test_cases)
|
||||||
{
|
{
|
||||||
std::tie(guess, dtype) = expected;
|
std::tie(guess, dtype) = expected;
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/guess_types.xlsx");
|
auto path = PathHelper::GetDataDirectory("/genuine/guess_types.xlsx");
|
||||||
auto wb = xlnt::load_workbook(path, guess);
|
auto wb = xlnt::reader::load_workbook(path, guess);
|
||||||
auto ws = wb.get_active_sheet();
|
auto ws = wb.get_active_sheet();
|
||||||
TS_ASSERT_EQUALS(ws.get_cell("D2").get_data_type(), dtype);
|
TS_ASSERT_EQUALS(ws.get_cell("D2").get_data_type(), dtype);
|
||||||
}
|
}
|
||||||
|
@ -298,26 +306,26 @@ public:
|
||||||
void test_read_autofilter()
|
void test_read_autofilter()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/reader/bug275.xlsx");
|
auto path = PathHelper::GetDataDirectory("/reader/bug275.xlsx");
|
||||||
auto wb = xlnt::load_workbook(path);
|
auto wb = xlnt::reader::load_workbook(path);
|
||||||
auto ws = wb.get_active_sheet();
|
auto ws = wb.get_active_sheet();
|
||||||
TS_ASSERT_EQUALS(ws.get_auto_filter.get_reference(), "A1:B6");
|
TS_ASSERT_EQUALS(ws.get_auto_filter().to_string(), "A1:B6");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bad_formats_xlsb()
|
void test_bad_formats_xlsb()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/a.xlsb");
|
auto path = PathHelper::GetDataDirectory("/genuine/a.xlsb");
|
||||||
TS_ASSERT_THROWS(xlnt::load_workbook(path), xlnt::invaid_file_exception);
|
TS_ASSERT_THROWS(xlnt::reader::load_workbook(path), xlnt::invalid_file_exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bad_formats_xls()
|
void test_bad_formats_xls()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/a.xls");
|
auto path = PathHelper::GetDataDirectory("/genuine/a.xls");
|
||||||
TS_ASSERT_THROWS(xlnt::load_workbook(path), xlnt::invaid_file_exception);
|
TS_ASSERT_THROWS(xlnt::reader::load_workbook(path), xlnt::invalid_file_exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bad_formats_no()
|
void test_bad_formats_no()
|
||||||
{
|
{
|
||||||
auto path = PathHelper::GetDataDirectory("/genuine/a.no-format");
|
auto path = PathHelper::GetDataDirectory("/genuine/a.no-format");
|
||||||
TS_ASSERT_THROWS(xlnt::load_workbook(path), xlnt::invaid_file_exception);
|
TS_ASSERT_THROWS(xlnt::reader::load_workbook(path), xlnt::invalid_file_exception);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
auto ws1 = wb_.create_sheet("Test");
|
auto ws1 = wb_.create_sheet("Test");
|
||||||
TS_ASSERT_EQUALS(ws1.get_title(), "Test");
|
TS_ASSERT_EQUALS(ws1.get_title(), "Test");
|
||||||
auto ws2 = wb_.create_sheet("Test");
|
auto ws2 = wb_.create_sheet("Test");
|
||||||
TS_ASSERT_EQUALS(ws1.get_title(), "Test1");
|
TS_ASSERT_EQUALS(ws2.get_title(), "Test1");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_set_bad_title_character()
|
void test_set_bad_title_character()
|
||||||
|
@ -66,7 +66,7 @@ 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.num_rows());
|
TS_ASSERT_EQUALS(4, xlrange.length());
|
||||||
TS_ASSERT_EQUALS(3, xlrange[0].num_cells());
|
TS_ASSERT_EQUALS(3, xlrange[0].num_cells());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ 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.num_rows());
|
TS_ASSERT_EQUALS(1, xlrange.length());
|
||||||
TS_ASSERT_EQUALS(1, xlrange[0].num_cells());
|
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());
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ 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.num_rows());
|
TS_ASSERT_EQUALS(4, xlrange.length());
|
||||||
TS_ASSERT_EQUALS(3, xlrange[0].num_cells());
|
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());
|
||||||
}
|
}
|
||||||
|
@ -246,8 +246,8 @@ public:
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(cols.length(), 3);
|
TS_ASSERT_EQUALS(cols.length(), 3);
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(rows[0][0], "first");
|
TS_ASSERT_EQUALS(cols[0][0], "first");
|
||||||
TS_ASSERT_EQUALS(rows[2][8], "last");
|
TS_ASSERT_EQUALS(cols[2][8], "last");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_auto_filter()
|
void test_auto_filter()
|
||||||
|
@ -364,7 +364,7 @@ public:
|
||||||
ws.get_header_footer().get_right_footer().set_font_size(14);
|
ws.get_header_footer().get_right_footer().set_font_size(14);
|
||||||
ws.get_header_footer().get_right_footer().set_font_color("AABBCC");
|
ws.get_header_footer().get_right_footer().set_font_color("AABBCC");
|
||||||
|
|
||||||
auto expected_xml_string =
|
std::string expected_xml_string =
|
||||||
"<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
|
"<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
|
||||||
" <sheetPr>"
|
" <sheetPr>"
|
||||||
" <outlinePr summaryRight=\"1\" summaryBelow=\"1\"/>"
|
" <outlinePr summaryRight=\"1\" summaryBelow=\"1\"/>"
|
||||||
|
@ -384,66 +384,79 @@ public:
|
||||||
" </headerFooter>"
|
" </headerFooter>"
|
||||||
"</worksheet>";
|
"</worksheet>";
|
||||||
|
|
||||||
pugi::xml_document doc;
|
pugi::xml_document expected_doc;
|
||||||
doc.load(expected_xml_string.c_str());
|
pugi::xml_document observed_doc;
|
||||||
|
|
||||||
TS_ASSERT(Helper::compare_xml(doc, xlnt::worksheet_writer::write_worksheet(ws, {}, {})));
|
expected_doc.load(expected_xml_string.c_str());
|
||||||
|
observed_doc.load(xlnt::writer::write_worksheet(ws, {}, {}).c_str());
|
||||||
|
|
||||||
auto ws = wb_.create_sheet();
|
TS_ASSERT(Helper::compare_xml(expected_doc, observed_doc));
|
||||||
|
|
||||||
|
ws = wb_.create_sheet();
|
||||||
|
|
||||||
expected_xml_string =
|
expected_xml_string =
|
||||||
"<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
|
"<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
|
||||||
" <sheetPr>"
|
" <sheetPr>"
|
||||||
" <outlinePr summaryRight="1" summaryBelow="1"/>"
|
" <outlinePr summaryRight=\"1\" summaryBelow=\"1\"/>"
|
||||||
" </sheetPr>"
|
" </sheetPr>"
|
||||||
" <dimension ref="A1:A1"/>"
|
" <dimension ref=\"A1:A1\"/>"
|
||||||
" <sheetViews>"
|
" <sheetViews>"
|
||||||
" <sheetView workbookViewId="0">"
|
" <sheetView workbookViewId=\"0\">"
|
||||||
" <selection sqref="A1" activeCell="A1"/>"
|
" <selection sqref=\"A1\" activeCell=\"A1\"/>"
|
||||||
" </sheetView>"
|
" </sheetView>"
|
||||||
" </sheetViews>"
|
" </sheetViews>"
|
||||||
" <sheetFormatPr baseColWidth="10" defaultRowHeight="15"/>"
|
" <sheetFormatPr baseColWidth=\"10\" defaultRowHeight=\"15\"/>"
|
||||||
" <sheetData/>"
|
" <sheetData/>"
|
||||||
" <pageMargins left="0.75" right="0.75" top="1" bottom="1" header="0.5" footer="0.5"/>"
|
" <pageMargins left=\"0.75\" right=\"0.75\" top=\"1\" bottom=\"1\" header=\"0.5\" footer=\"0.5\"/>"
|
||||||
"</worksheet>";
|
"</worksheet>";
|
||||||
|
|
||||||
pugi::xml_document doc;
|
expected_doc.load(expected_xml_string.c_str());
|
||||||
doc.load(expected_xml_string.c_str());
|
observed_doc.load(xlnt::writer::write_worksheet(ws, {}, {}).c_str());
|
||||||
|
|
||||||
TS_ASSERT(Helper::compare_xml(doc, xlnt::worksheet_writer::write_worksheet(ws, {}, {})));
|
TS_ASSERT(Helper::compare_xml(expected_doc, observed_doc));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_positioning_point()
|
void test_positioning_point()
|
||||||
{
|
{
|
||||||
auto ws = wb_.create_sheet();
|
|
||||||
TS_ASSERT(false);
|
TS_ASSERT(false);
|
||||||
|
/*
|
||||||
|
auto ws = wb_.create_sheet();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_positioning_roundtrip()
|
void test_positioning_roundtrip()
|
||||||
{
|
{
|
||||||
|
TS_ASSERT(false);
|
||||||
|
/*
|
||||||
auto ws = wb_.create_sheet();
|
auto ws = wb_.create_sheet();
|
||||||
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("A1").get_anchor()), xlnt::cell_reference("A1"));
|
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("A1").get_anchor()), xlnt::cell_reference("A1"));
|
||||||
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("D52").get_anchor()), xlnt::cell_reference("D52"));
|
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("D52").get_anchor()), xlnt::cell_reference("D52"));
|
||||||
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("X11").get_anchor()), xlnt::cell_reference("X11"));
|
TS_ASSERT_EQUALS(ws.get_point_pos(ws.get_cell("X11").get_anchor()), xlnt::cell_reference("X11"));
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_page_setup()
|
void test_page_setup()
|
||||||
{
|
{
|
||||||
|
TS_ASSERT(false);
|
||||||
|
/*
|
||||||
xlnt::page_setup p;
|
xlnt::page_setup p;
|
||||||
TS_ASSERT(p.get_setup().empty());
|
TS_ASSERT(p.get_page_setup().empty());
|
||||||
p.set_scale(1);
|
p.set_scale(1);
|
||||||
TS_ASSERT_EQUALS(p.get_setup().at("scale"), 1);
|
TS_ASSERT_EQUALS(p.get_page_setup().at("scale"), 1);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_page_options()
|
void test_page_options()
|
||||||
{
|
{
|
||||||
|
TS_ASSERT(false);
|
||||||
|
/*
|
||||||
xlnt::page_setup p;
|
xlnt::page_setup p;
|
||||||
TS_ASSERT(p.get_options().empty());
|
TS_ASSERT(p.get_options().empty());
|
||||||
p.set_horizontal_centered(true);
|
p.set_horizontal_centered(true);
|
||||||
p.set_vertical_centered(true);
|
p.set_vertical_centered(true);
|
||||||
TS_ASSERT_EQUALS(p.get_options().at("verticalCentered"), "1");
|
TS_ASSERT_EQUALS(p.get_options().at("verticalCentered"), "1");
|
||||||
TS_ASSERT_EQUALS(p.get_options().at("horizontalCentered"), "1");
|
TS_ASSERT_EQUALS(p.get_options().at("horizontalCentered"), "1");
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user