Table constructor argument "ref"
Created originally on Bitbucket by KaKiLa
I am trying to build a table from a list of known size. It seems I need to specify ref in the constructor of the table to define the size of the table, without ref, writing produces the error
#!python
Traceback (most recent call last):
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/workbook/workbook.py", line 367, in save
save_workbook(self, filename)
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 284, in save_workbook
writer.save(filename)
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 266, in save
self.write_data()
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 83, in write_data
self._write_worksheets()
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 203, in _write_worksheets
xml = ws._write()
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/worksheet/worksheet.py", line 852, in _write
return write_worksheet(self)
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/worksheet.py", line 164, in write_worksheet
tables = _add_table_headers(ws)
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/writer/worksheet.py", line 183, in _add_table_headers
table._initialise_columns()
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/worksheet/table.py", line 328, in _initialise_columns
min_col, min_row, max_col, max_row = range_boundaries(self.ref)
File "/home/juanpi/virtualenvironment/anlagebw/lib/python3.6/site-packages/openpyxl/utils/cell.py", line 133, in range_boundaries
m = ABSOLUTE_RE.match(range_string)
TypeError: expected string or bytes-like object
Looking at the code in openpyxl.worksheet.table.Table, it seems the argument ref can be a cellRange. At least the class attribute ref is initialized to this class. However the construction with a cellRange fails:
#!python
tablerange = openpyxl.worksheet.cell_range.CellRange(
min_row=1, min_col=1,\
max_row=10, max_col=3,\
)
tab = openpyxl.worksheet.table.Table(displayName="Table1", ref=tablerange)
Looking at the code in openpyxl.worksheet.table.Table, it seems the argument ref can be a cellRange. At least the class attribute ref is initialized to this class. However the construction with a cellRange fails:
#!python
tablerange = openpyxl.worksheet.cell_range.CellRange(
min_row=1, min_col=1,\
max_row=10, max_col=3,\
)
tab = openpyxl.worksheet.table.Table(displayName="Table1", ref=tablerange)
produces
#!python
AttributeError: 'CellRange' object has no attribute 'upper'
It seems the implementation is expecting a string, indeed this works
#!python
tab = openpyxl.worksheet.table.Table(displayName="Table1", ref=tablerange.coord)