打开带有换行文本保存的Excel文件,而无需在Libreoffice和soffice中换行

时间:2018-12-05 10:10:09

标签: python excel ms-office openpyxl libreoffice

我在Microsoft Office 2007中为单元格和自动高度设置了自动换行文本,格式为xlsx(与旧的xls相同)。

当我保存文件并使用Libreoffice打开文件时,自动换行文本不起作用(它在一行中显示了单元格,而其中的文本可能被换行了-但我看不到)。然后我进入菜单File-> Text->,然后在这里看到Wrap text被选中。我取消选择它,然后列高自动更改为高度,即包裹文本的单元格的高度,但是文本在一行上。然后我再次转到“文件”->“文本”->“自动换行”,然后选择它,最后一切看上去都正常。

问题是我需要以某种方式让Libreoffice识别换行文本的列高,以使所有内容在打开xlsx文件后都能正常工作,而无需对其进行任何更改。

有没有办法设置Libreoffice可以识别的Microsoft Office的行高度。为了创建Microsoft excel文件,我使用模板+ openpyxl。我已经在python上的xlsx模板(使用openpyxl)和之前的模板中设置了自动换行文本。

但是我认为这不是特定于openpyxl的,因为仅使用Microsoft Office,保存xlsx文件以及使用Libreoffice打开显示单元的方式是错误的。 使用整个过程1.Microsoft xlsx 2.python openpyxl 3.保存文件将导致正常的Microsoft文件具有行高正常工作,并且在Libreoffice中有一个行单元格用于包装文本。 所以我不知道该怎么解决。可能有使用openpyxl或仅使用Microsoft Office的解决方案,但我必须在libre office中使用此包装的文本(行高)正常工作来打开文件,因为此后,我会以编程方式将文件发送至办公室,以将其导出为pdf

subprocess.call(['soffice', '--headless', '--convert-to', 'pdf', path_xlsx, '--outdir', directory_xlsx])

,因此我没有选择打开文件并手动更改此选项。 不能选择pdf导出解决方案

==============

在从Libreoffice编辑包装选项之前,该行在工作表中看起来是这样的(此代码是从工作表文件xl / worksheets / sheet1.xml的xlsx归档文件中提取的):

<row r="4" spans="1:13">

编辑后,它看起来像这样:

<row r="4" customFormat="false" ht="41.95" hidden="false" customHeight="false" outlineLevel="0" collapsed="false">

因此,也许可以通过openpyxl添加塌塌的=“ false”,customHeight =“ false”和customFormat =“ false”的方法来解决此问题。

编辑1: 我在openpyxl.worksheet.dimensions模块中找到了它们。但是无法设置。

1 个答案:

答案 0 :(得分:0)

对我来说,解决方案是根据使用openpyxl的内容设置每一行的高度。如果我们使用单色字体,然后根据行中最大的单元格计算可能的宽度和高度,则可以完成此操作。这不是完美的解决方案,因为可能会有多余的空间,并且在某些情况下可能会损坏,因此我不接受此答案。我增加了常量,在任何情况下都提供了更多空间(使高度更大),因此这是无法接受的答案,但仍然是解决方案。