From 822bc4c08c2f79fbd45bf8b99d21e6693c728aaa Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 20 Aug 2023 23:42:11 +1000 Subject: [PATCH] Fix #3610. Glitch where editing existing float cells in IfcCSV ODS files created new cells or didn't update. --- src/ifccsv/ifccsv.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ifccsv/ifccsv.py b/src/ifccsv/ifccsv.py index a4784be867..e35b693ca1 100755 --- a/src/ifccsv/ifccsv.py +++ b/src/ifccsv/ifccsv.py @@ -29,6 +29,7 @@ import ifcopenshell.util.element import ifcopenshell.util.schema try: + from odf.namespaces import OFFICENS from odf.opendocument import OpenDocumentSpreadsheet, load from odf.style import Style, TableCellProperties from odf.table import Table, TableRow, TableCell @@ -138,7 +139,7 @@ class IfcCsv: for col_index, value in enumerate(row): cell = self.get_col(table_row, col_index) - self.set_cell_value(cell, str(value)) + self.set_cell_value(cell, value) # If the DataFrame has fewer rows than the table, blank out the extra rows num_rows_table = len(first_table.getElementsByType(TableRow)) - 1 # Exclude header row @@ -158,14 +159,13 @@ class IfcCsv: cell.removeChild(item) if isinstance(value, (int, float)): - # Create a new cell with float value - new_cell = TableCell(valuetype="float", value=str(value)) - cell.parentNode.insertBefore(new_cell, cell) - cell.parentNode.removeChild(cell) + cell.setAttrNS(OFFICENS, "value-type", "float") + cell.setAttrNS(OFFICENS, "value", value) else: - # Add string value in a text paragraph - p_element = P(text=str(value)) - cell.addElement(p_element) + cell.setAttrNS(OFFICENS, "value-type", "string") + cell.setAttrNS(OFFICENS, "value", str(value)) + p_element = P(text=str(value)) + cell.addElement(p_element) def get_row(self, table, row_index): rows = table.getElementsByType(TableRow)