chronossc/openpyxl

save_workbook raises TypeError in 3.0.2

Closed this issue · 1 comments

This code works without error in 2.6.2. In 3.0.2 it raises TypeError. (it fails in the same way with a real Workbook, the empty Workbook is just the simplest way to repro).

import tempfile
from openpyxl.workbook.workbook import Workbook
from openpyxl.writer.excel import save_workbook


with tempfile.NamedTemporaryFile() as tf:
    save_workbook(Workbook(), tf.name)
$ python save.py
Traceback (most recent call last):
  File "save.py", line 7, in <module>
    save_workbook(Workbook(), tf.name)
  File "/site/venv/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 293, in save_workbook
    writer.save()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 275, in save
    self.write_data()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 75, in write_data
    self._write_worksheets()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 215, in _write_worksheets
    self.write_worksheet(ws)
  File "/site/venv/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 200, in write_worksheet
    writer.write()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/worksheet/_writer.py", line 354, in write
    self.write_top()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/worksheet/_writer.py", line 98, in write_top
    self.write_properties()
  File "/site/venv/lib/python3.7/site-packages/openpyxl/worksheet/_writer.py", line 60, in write_properties
    self.xf.send(props.to_tree())
  File "/site/venv/lib/python3.7/site-packages/openpyxl/worksheet/_writer.py", line 294, in get_stream
    xf.write(el)
  File "src/lxml/serializer.pxi", line 1652, in lxml.etree._IncrementalFileWriter.write
TypeError: got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element

python 3.7.5 on Ubuntu 18.04 with the following installed:

et-xmlfile==1.0.1
jdcal==1.4.1
openpyxl==3.0.2

wrong openpyxl