Commit 9d2cce3c authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

xlsx export method in Collection class

parent 8356b930
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
__version__ = "0.1.102"
__version__ = "0.1.103"
+28 −0
Original line number Diff line number Diff line
@@ -1008,6 +1008,34 @@ class Collection(models.Model):
        for res in self.descendants_resources():
            yield _flatten_resource(res, known_metadatas, known_metadatas_labels)

    def export_to_xlsx(self, xlsx_path: str):
        from openpyxl import Workbook
        from openpyxl.utils.exceptions import IllegalCharacterError

        wb = Workbook()
        ws = wb.active
        row_number = 2  # /!\ Index starts at 1. Leave the first row for headers.
        r = {}
        for r in self.yield_resource_data_for_export():
            col_number = 1
            for value in r.values():
                cell = ws.cell(row=row_number, column=col_number)
                try:
                    cell.value = value
                except IllegalCharacterError:
                    logger.warning(
                        f"Could not add value of type {type(value)} to cell: {value}"
                    )
                col_number = col_number + 1
            row_number = row_number + 1
            print(row_number)
        col_number = 1
        for key in r.keys():
            cell = ws.cell(row=1, column=col_number)
            cell.value = key
            col_number = col_number + 1
        wb.save(xlsx_path)


def _recurse_collection(collection: Collection) -> Iterator[Collection]:
    try: