aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/TableTemplate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Model/Template/TableTemplate.cpp')
-rw-r--r--core/src/Model/Template/TableTemplate.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/core/src/Model/Template/TableTemplate.cpp b/core/src/Model/Template/TableTemplate.cpp
index caf0e21..0684c77 100644
--- a/core/src/Model/Template/TableTemplate.cpp
+++ b/core/src/Model/Template/TableTemplate.cpp
@@ -1,5 +1,7 @@
#include "TableTemplate.hpp"
+#include <xlsxwriter.h>
+
bool TableCell::IsPrimaryCell() const
{
return PrimaryCellLocation == Location;
@@ -117,3 +119,32 @@ TableTemplate::BreakCellsResult TableTemplate::BreakCells(Vec2i topLeft)
return BCR_Success;
}
+
+lxw_workbook* TableTemplate::InstanciateToExcelWorkbook(const TableInstanciationParameters& params) const
+{
+ auto workbook = workbook_new("Table.xlsx");
+ InstanciateToExcelWorksheet(workbook, params);
+ return workbook;
+}
+
+lxw_worksheet* TableTemplate::InstanciateToExcelWorksheet(lxw_workbook* workbook, const TableInstanciationParameters& params) const
+{
+ auto worksheet = workbook_add_worksheet(workbook, "Cplt Export");
+
+ for (int y = 0; y < mTableHeight; ++y) {
+ for (int x = 0; x < mTableWidth; ++x) {
+ auto& cell = GetCell({ x, y });
+ switch (cell.Type) {
+ case TableCell::ConstantCell: {
+ worksheet_write_string(worksheet, y, x, cell.Content.c_str(), nullptr);
+ } break;
+
+ case TableCell::ParametricCell: {
+ // TODO
+ } break;
+ }
+ }
+ }
+
+ return worksheet;
+}