MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / Ifc5DOdsWriter

Class Ifc5DOdsWriter

src/ifc5d/ifc5d/ifc5Dspreadsheet.py:421–536  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

419
420
421class Ifc5DOdsWriter(Ifc5Dwriter):
422 def write(self) -> None:
423 from odf.number import CurrencyStyle, CurrencySymbol, Number
424 from odf.opendocument import OpenDocumentSpreadsheet
425 from odf.style import Style, TableCellProperties
426
427 super().write()
428
429 self.doc = OpenDocumentSpreadsheet()
430
431 for value in self.colours.values():
432 style = Style(name=value, family="table-cell")
433 bg_color = TableCellProperties(backgroundcolor="#" + value)
434 style.addElement(bg_color)
435 self.doc.styles.addElement(style)
436
437 ns1 = CurrencyStyle(name="positive-AUD", volatile="true")
438 ns1.addElement(CurrencySymbol(language="en", country="AU", text="$"))
439 ns1.addElement(Number(decimalplaces="2", minintegerdigits="1", grouping="true"))
440 self.doc.styles.addElement(ns1)
441
442 os.makedirs(self.output, exist_ok=True)
443 file_name = ""
444 for cost_schedule in self.cost_schedules:
445 if file_name:
446 file_name += "_" + cost_schedule.Name or ""
447 else:
448 file_name += cost_schedule.Name or ""
449 self.write_table(cost_schedule)
450 self.doc.save(os.path.join(self.output, file_name), True)
451
452 def write_table(self, cost_schedule):
453 from odf.number import CurrencySymbol, Number
454 from odf.table import Table, TableCell, TableRow
455 from odf.text import P
456
457 def row():
458 return TableRow()
459
460 def add_cell(type, value=None, row=None, style=None):
461 if type == "currency":
462 cell = TableCell(valuetype="currency", stylename=style)
463 cell.addElement(Number(numberstyle="Currency", value=value))
464 cell.addElement(CurrencySymbol(currency="USD"))
465 cell.setAttribute("number:currency-style", "USD")
466 elif type == "number":
467 cell = TableCell(valuetype="float", stylename=style)
468 cell.addElement(Number(numberstyle="Number", value=value))
469 elif type == "text":
470 cell = TableCell(valuetype="string", stylename=style)
471 cell.addElement(P(text=value))
472 elif type == "formula":
473 cell = TableCell(formula=value, stylename=style)
474 row.addElement(cell)
475
476 def add_cost_item_rows(table, cost_data):
477 row = TableRow()
478 self.row_count += 1

Callers 2

export_cost_schedulesMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected