在 Python 中输出 .xls 文件
Outputting A .xls File In Python
我一直在自学 Python 使我们的一些工作流程自动化。到目前为止,从 Excel 个文件(.xls、.xlsx)中读取的结果非常好。
目前我遇到了一些障碍。虽然我可以很好地输出 .xlsx 文件,但我们必须用于主要工作任务的软件系统只能将 .xls 文件作为输入 - 它无法处理 .xlsx 文件,并且供应商认为没有理由添加 .xlsx 支持在可预见的未来的任何时候。
当我尝试使用 Pandas 或 OpenPyXl 输出 .xls 文件并在 Excel 中打开该文件时,我收到一条警告,指出该文件的文件格式和扩展名不正确匹配,这使我认为尝试使用我们的软件打开此文件可能会导致一些意想不到的后果(因为它实际上是一个 .xlsx 文件,而不是 named 本身)
我试图在 Google 上搜索如何解决这一切,但我所能找到的只是关于如何将 .xls 文件转换为 .xlsx 文件的指南(这几乎是相反的我需要的)。所以我想知道是否有人可以帮我看看这是否可以实现,如果可以,如何实现。
非常感谢您的宝贵时间
在 pandas.DataFrame.to_excel
文档下,您应该注意到一个名为 engine
的参数,其中指出:
engine : str, optional
Write engine to use, openpyxl
or xlsxwriter
. You can also set this via the options io.excel.xlsx.writer
, io.excel.xls.writer
, and io.excel.xlsm.writer
.
它没有说明 engine
参数是根据您的文件扩展名自动选择的——因此,很容易修复:
import pandas as pd
df = pd.DataFrame({"data": [1, 2, 3]})
df.to_excel("file.xls") # Notice desired file extension.
这将自动使用 xlwt
引擎,因此请确保您通过 pip install xlwt
.
安装了它
我终于有了答案!
我安装了 libreoffice 并在 windows:
上的命令行中使用以下命令
"C:\Program Files\LibreOffice\program\soffice.exe" --headless --convert-to xlsx test2.xls
目前正在尝试使用子流程来自动执行此操作。
Felipe 是对的,文件扩展名将设置引擎参数。
所以基本上它所说的是 Pandas 不再支持旧的 Excel 格式“.xls”扩展名。因此,如果您指定带有“.xlsx”扩展名的输出电子表格,警告消息就会消失。
我一直在自学 Python 使我们的一些工作流程自动化。到目前为止,从 Excel 个文件(.xls、.xlsx)中读取的结果非常好。
目前我遇到了一些障碍。虽然我可以很好地输出 .xlsx 文件,但我们必须用于主要工作任务的软件系统只能将 .xls 文件作为输入 - 它无法处理 .xlsx 文件,并且供应商认为没有理由添加 .xlsx 支持在可预见的未来的任何时候。
当我尝试使用 Pandas 或 OpenPyXl 输出 .xls 文件并在 Excel 中打开该文件时,我收到一条警告,指出该文件的文件格式和扩展名不正确匹配,这使我认为尝试使用我们的软件打开此文件可能会导致一些意想不到的后果(因为它实际上是一个 .xlsx 文件,而不是 named 本身)
我试图在 Google 上搜索如何解决这一切,但我所能找到的只是关于如何将 .xls 文件转换为 .xlsx 文件的指南(这几乎是相反的我需要的)。所以我想知道是否有人可以帮我看看这是否可以实现,如果可以,如何实现。
非常感谢您的宝贵时间
在 pandas.DataFrame.to_excel
文档下,您应该注意到一个名为 engine
的参数,其中指出:
engine : str, optional
Write engine to use,
openpyxl
orxlsxwriter
. You can also set this via the optionsio.excel.xlsx.writer
,io.excel.xls.writer
, andio.excel.xlsm.writer
.
它没有说明 engine
参数是根据您的文件扩展名自动选择的——因此,很容易修复:
import pandas as pd
df = pd.DataFrame({"data": [1, 2, 3]})
df.to_excel("file.xls") # Notice desired file extension.
这将自动使用 xlwt
引擎,因此请确保您通过 pip install xlwt
.
我终于有了答案! 我安装了 libreoffice 并在 windows:
上的命令行中使用以下命令"C:\Program Files\LibreOffice\program\soffice.exe" --headless --convert-to xlsx test2.xls
目前正在尝试使用子流程来自动执行此操作。
Felipe 是对的,文件扩展名将设置引擎参数。
所以基本上它所说的是 Pandas 不再支持旧的 Excel 格式“.xls”扩展名。因此,如果您指定带有“.xlsx”扩展名的输出电子表格,警告消息就会消失。