Есть ли способ добавить неэкранированный символ новой строки или сделать так, чтобы символ новой строки отображался как
без LXML-искажения. XML-документы Excel не учитывают новые строки без отображения при отображении таблиц.
book = Element("Workbook", nsmap=nsmap)
sheet = Element("Worksheet")
sheet.set(SS + "Name", "Test")
table = Element("Table")
row = Element("Row")
cell = Element("Cell")
data = Element("Data")
data.set(SS + "Type", "String")
data.text = "Foo\nBar\nBaz"
cell.append(data)
row.append(cell)
table.append(row)
sheet.append(table)
book.append(sheet)
tostring(book,
encoding="utf-8",
method="xml",
doctype="<?mso-app...?>",
xml_declaration=True,
pretty_print=True)
Это выдаст
<?xml version...?>
<?mso-app...?>
<Workbook xmlns="..." ...>
<Worksheet ss:Name="Test">
<Table>
<Row>
<Cell>
<Data ss:Type="String">foo
bar
baz</Data>
</Cell>
...
</Workbook>
, который, к сожалению, не отображается должным образом. Excel ожидает увидеть это вместо:
<Data ...>foo bar baz</Data>
Я уже пробовал этот ответ , но использование BeautifulSoup либо удаляет атрибуты xmlns (при использовании синтаксического анализатора lxml-xml, как предлагает ответ), либо не сохраняет регистр (при использовании lxml или парсеры html5lib), и Excel очень требователен к использованию элементов titlecase и имен атрибутов.