33 #include <unordered_map> 36 #include <xlnt/xlnt_config.hpp> 37 #include <xlnt/internal/features.hpp> 39 #if XLNT_HAS_INCLUDE(<string_view>) && XLNT_HAS_FEATURE(U8_STRING_VIEW) 40 #include <string_view> 52 class calculation_properties;
56 class const_worksheet_iterator;
62 class metadata_property;
69 class range_reference;
71 class streaming_workbook_reader;
73 class style_serializer;
78 class worksheet_iterator;
87 struct worksheet_impl;
158 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 173 workbook(std::istream &data,
const std::string &password);
175 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 176 workbook(std::istream &data, std::u8string_view password);
216 worksheet create_sheet(std::size_t index);
253 void active_sheet(std::size_t index);
260 worksheet sheet_by_title(
const std::string &title);
267 const worksheet sheet_by_title(
const std::string &title)
const;
273 worksheet sheet_by_index(std::size_t index);
279 const worksheet sheet_by_index(std::size_t index)
const;
285 bool has_sheet_id(std::size_t
id)
const;
303 const worksheet sheet_by_id(std::size_t
id)
const;
310 bool sheet_hidden_by_index(std::size_t index)
const;
315 bool contains(
const std::string &title)
const;
386 void apply_to_cells(std::function<
void(
cell)> f);
392 std::vector<std::string> sheet_titles()
const;
397 std::size_t sheet_count()
const;
410 std::vector<xlnt::core_property> core_properties()
const;
433 std::vector<xlnt::extended_property> extended_properties()
const;
450 bool has_custom_property(
const std::string &property_name)
const;
456 std::vector<std::string> custom_properties()
const;
463 variant custom_property(
const std::string &property_name)
const;
468 void custom_property(
const std::string &property_name,
const variant &value);
486 bool has_title()
const;
493 std::string title()
const;
498 void title(
const std::string &title);
503 void abs_path(
const std::string &
path);
508 void arch_id_flags(
const std::size_t flags);
515 std::vector<xlnt::named_range> named_ranges()
const;
525 void create_named_range(
const std::string &name,
worksheet worksheet,
const std::string &reference_string);
530 bool has_named_range(
const std::string &name)
const;
544 void remove_named_range(const std::string &name);
552 void save(std::vector<std::uint8_t> &data) const;
558 void save(std::vector<std::uint8_t> &data, const std::string &password) const;
560 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 561 void save(std::vector<std::uint8_t> &data, std::u8string_view password) const;
572 void save(const std::string &filename) const;
578 void save(const std::string &filename, const std::string &password) const;
580 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 581 void save(std::u8string_view filename) const;
591 void save(std::u8string_view filename, std::u8string_view password) const;
595 void save(const std::wstring &filename) const;
605 void save(const std::wstring &filename, const std::string &password) const;
612 void save(const xlnt::path &filename) const;
618 void save(const xlnt::path &filename, const std::string &password) const;
620 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 621 void save(const xlnt::path &filename, std::u8string_view password) const;
631 void save(std::ostream &stream) const;
637 void save(std::ostream &stream, const std::string &password) const;
639 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 640 void save(std::ostream &stream, std::u8string_view password) const;
654 void load(const std::vector<std::uint8_t> &data);
663 void load(const std::vector<std::uint8_t> &data, const std::string &password);
665 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 666 void load(const std::vector<std::uint8_t> &data, std::u8string_view password);
683 void load(const std::string &filename);
692 void load(const std::string &filename, const std::string &password);
694 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 695 void load(std::u8string_view filename);
711 void load(std::u8string_view filename, std::u8string_view password);
716 void load(const std::wstring &filename);
732 void load(const std::wstring &filename, const std::string &password);
742 void load(const xlnt::path &filename);
751 void load(const xlnt::path &filename, const std::string &password);
753 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 754 void load(const xlnt::path &filename, std::u8string_view password);
771 void load(std::istream &stream);
780 void load(std::istream &stream, const std::string &password);
782 #if XLNT_HAS_FEATURE(U8_STRING_VIEW) 783 void load(std::istream &stream, std::u8string_view password);
798 bool has_view() const;
810 void view(const workbook_view &view);
817 bool has_code_name() const;
824 std::string code_name() const;
829 void code_name(const std::string &code_name);
834 bool has_file_version() const;
839 void clear_file_version();
844 bool has_app_name() const;
851 const std::string &app_name() const;
856 void app_name(const std::string &app_name);
861 bool has_last_edited() const;
868 const std::string &last_edited_str() const;
876 std::size_t last_edited() const;
882 void last_edited(const std::string &last_edited);
888 void last_edited(std::size_t last_edited);
893 bool has_lowest_edited() const;
900 const std::string &lowest_edited_str() const;
908 std::size_t lowest_edited() const;
914 void lowest_edited(const std::string &lowest_edited);
920 void lowest_edited(std::size_t lowest_edited);
925 bool has_rup_build() const;
932 const std::string &rup_build_str() const;
940 std::size_t rup_build() const;
946 void rup_build(const std::string &rup_build);
952 void rup_build(std::size_t rup_build);
959 bool has_theme() const;
971 void
theme(const class theme &value);
990 xlnt::format create_format(bool default_format = false);
996 void clear_formats();
1001 std::size_t format_count() const;
1008 bool has_style(const std::string &name) const;
1022 const class
style style(const std::string &name) const;
1027 class
style create_style(const std::string &name);
1034 class
style create_builtin_style(std::size_t builtin_id);
1041 void clear_styles();
1046 void default_slicer_style(const std::string &value);
1051 std::string default_slicer_style() const;
1056 void enable_known_fonts();
1061 void disable_known_fonts();
1066 bool known_fonts_enabled() const;
1088 std::size_t add_shared_string(const rich_text &shared, bool allow_duplicates = false);
1093 const
rich_text &shared_strings(std::size_t index) const;
1099 std::vector<rich_text> &shared_strings();
1105 const std::vector<rich_text> &shared_strings() const;
1113 void thumbnail(const std::vector<std::uint8_t> &thumbnail,
1114 const std::string &extension, const std::string &content_type);
1119 bool has_thumbnail() const;
1126 const std::vector<std::uint8_t> &thumbnail() const;
1131 const std::unordered_map<std::string, std::vector<std::uint8_t>>& binaries() const;
1138 bool has_calculation_properties() const;
1143 void clear_calculation_properties();
1162 bool compare(const workbook &other, bool compare_by_reference) const;
1170 workbook &operator=(const workbook &other) = default;
1176 workbook &operator=(workbook &&other) = default;
1183 worksheet operator[](const std::string &name);
1190 worksheet operator[](std::size_t index);
1196 bool operator==(const workbook &rhs) const;
1202 bool operator!=(const workbook &rhs) const;
1208 friend class detail::xlsx_consumer;
1209 friend class detail::xlsx_producer;
1210 friend struct detail::worksheet_impl;
1224 xlnt::format clone_format_from(const xlnt::format &source_format);
1230 bool owns_format(const class format &fmt) const;
1236 workbook(std::shared_ptr<detail::workbook_impl> impl);
1242 workbook(std::weak_ptr<detail::workbook_impl> impl);
1247 void set_impl(std::shared_ptr<detail::workbook_impl> impl);
1252 template <typename T>
1253 void construct(const xlnt::path &file, const T &password);
1258 template <typename T>
1259 void construct(std::istream &data, const T &password);
1265 template <typename T>
1266 void save_internal(std::vector<std::uint8_t> &data, const T &password) const;
1272 template <typename T>
1273 void save_internal(const T &filename) const;
1279 template <typename T>
1280 void save_internal(const T &filename, const T &password) const;
1286 template <typename T>
1287 void save_internal(const xlnt::path &filename, const T &password) const;
1293 template <typename T>
1294 void save_internal(std::ostream &stream, const T &password) const;
1303 template <typename T>
1304 void load_internal(const std::vector<std::uint8_t> &data, const T &password);
1313 template <typename T>
1314 void load_internal(const T &filename);
1323 template <typename T>
1324 void load_internal(const T &filename, const T &password);
1333 template <typename T>
1334 void load_internal(const xlnt::path &filename, const T &password);
1343 template <typename T>
1344 void load_internal(std::istream &stream, const T &password);
1350 detail::workbook_impl &impl();
1356 const detail::workbook_impl &impl() const;
1363 void register_package_part(relationship_type type);
1371 void register_workbook_part(relationship_type type);
1379 void register_worksheet_part(worksheet ws, relationship_type type);
1384 void garbage_collect_formulae();
1389 void update_sheet_properties();
1394 void swap(workbook &other);
1399 void reorder_relationships();
1404 void default_format(const xlnt::format& format);
1409 std::shared_ptr<detail::workbook_impl> d_;
core_property
Every core property in a workbook must be one of these types.
Definition: metadata_property.hpp:34
A range is a 2D collection of cells with defined extens that can be iterated upon.
Definition: range.hpp:53
Represents an association between a source Package or part, and a target object which can be a part o...
Definition: relationship.hpp:103
Represents an object that can have variable type.
Definition: variant.hpp:40
Definition: cell_reference.hpp:288
A workbook can be opened in multiple windows with different views. This class represents a particular...
Definition: workbook_view.hpp:37
Enumerates the possible types a cell can be determined by it's current value.
Definition: cell.hpp:36
extended_property
Every extended property in a workbook must be one of these types.
Definition: metadata_property.hpp:56
std::reverse_iterator< iterator > reverse_iterator
typedef for the iterator used for iterating through this workbook (non-const) in a range-based for lo...
Definition: workbook.hpp:125
A worksheet is a 2D array of cells starting with cell A1 in the top-left corner and extending indefin...
Definition: worksheet.hpp:75
A theme is a combination of fonts, colors, and effects. This isn't really supported yet...
Definition: theme.hpp:35
Describes a unit of data in a worksheet at a specific coordinate and its associated properties...
Definition: cell.hpp:83
Encapsulates zero or more formatted text runs where a text run is a string of text with the same defi...
Definition: rich_text.hpp:41
An iterator which is used to iterate over the worksheets in a workbook.
Definition: worksheet_iterator.hpp:44
Encapsulates a path that points to location in a filesystem.
Definition: path.hpp:43
relationship_type
All package relationships must be one of these defined types.
Definition: relationship.hpp:54
Workbook file properties relating to calculations.
Definition: calculation_properties.hpp:36
An iterator which is used to iterate over the worksheets in a const workbook.
Definition: worksheet_iterator.hpp:154
A 2D range of cells in a worksheet that is referred to by name. ws->range("A1:B2") could be replaced ...
Definition: named_range.hpp:42
workbook is the container for all other parts of the document.
Definition: streaming_workbook_reader.hpp:55
The manifest keeps track of all files in the OOXML package and their type and relationships.
Definition: manifest.hpp:41
A range_reference describes a rectangular area of a worksheet with positive width and height defined ...
Definition: range_reference.hpp:36
Describes a style which has a name and can be applied to multiple individual formats. In Excel this is a "Cell Style".
Definition: style.hpp:55
std::reverse_iterator< const_iterator > const_reverse_iterator
typedef for the iterator used for iterating through this workbook (const) in a range-based for loop i...
Definition: workbook.hpp:132
workbook is the container for all other parts of the document.
Definition: workbook.hpp:96
calendar
An enumeration of possible base dates. Dates in Excel are stored as days since this base date...
Definition: calendar.hpp:35
clone_method
The method for cloning workbooks.
Definition: workbook.hpp:102