Broken writer with lxml + defusedxml
*Created originally on Bitbucket by [alexisf (Alexis Fouilhé)](https://bitbucket.org/%7B2456d4fe-dbfd-4e7d-9b36-619fb08aa424%7D/)*
Release 3.0.2 broke the following test script, when run in an environment containing both `lxml` and `defusedxml`.
```
import openpyxl
import openpyxl.writer.excel
def _main():
wb = openpyxl.Workbook()
ws = wb.active
ws.cell(row=1, column=1, value="a")
openpyxl.writer.excel.save_virtual_workbook(wb)
if __name__ == "__main__":
_main()
```
It works without problem on Openpyxl 3.0.1 and crashes on Openpyxl 3.0.2 with the following trace.
```
Traceback (most recent call last):
File "t.py", line 13, in <module>
_main()
File "t.py", line 9, in _main
openpyxl.writer.excel.save_virtual_workbook(wb)
File "/Users/alexisfouilhe/e/lib/python3.6/site-packages/openpyxl/compat/__init__.py", line 38, in new_func1
return func1(*args, **kwargs)
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 304, in save_virtual_workbook
writer.save()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 275, in save
self.write_data()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 75, in write_data
self._write_worksheets()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 215, in _write_worksheets
self.write_worksheet(ws)
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/writer/excel.py", line 200, in write_worksheet
writer.write()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/worksheet/_writer.py", line 354, in write
self.write_top()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/worksheet/_writer.py", line 98, in write_top
self.write_properties()
File "/Users/a/e/lib/python3.6/site-packages/openpyxl/worksheet/_writer.py", line 60, in write_properties
self.xf.send(props.to_tree())
File "/Users/a/e/lib/python3.6/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
```
The script works, as a workaround, when called with `OPENPYXL_LXML=0` or `OPENPYXL_DEFUSEDXML=0` in the environment.
My guess is that the commit below introduced the breaking change.
[https://bitbucket.org/openpyxl/openpyxl/commits/5b1290f571af7e6f93c3417bbb679d735a67c1c1?at=3.0.2](https://bitbucket.org/openpyxl/openpyxl/commits/5b1290f571af7e6f93c3417bbb679d735a67c1c1?at=3.0.2)
When both `LXML` and `DEFUSEDXML` are `True`, the `if` on line 50 leads to a setup where `lxml` is used with objects from `xml.etree`.
Note: I am using Python 3.6.5, lxml 4.4.2 and defusedxml 0.6.0 on macOS.
issue