使用熊猫读取/写入Excel文件时如何保留Excel文本格式?

www*_*ald 6 python pandas

我有一个脚本,该脚本基本上将模板Excel文件读取到Pandas数据框,添加额外的列,然后将其写入输出Excel文件。

Excel文件中的一列包含具有特殊格式的文本(子脚本,超级脚本删除线,...)。当将该列写回到输出文件时,所有这些格式都会丢失并转换为纯文本。

有没有办法在输入和输出之间保留文本格式?

Fog*_*ggy 1

对 Excel 格式设置的最佳直接控制来自 win32 库。安装方法如下:

https://anaconda.org/anaconda/pywin32

以下是如何在 Excel 中设置单元格格式的示例:

https://pythonexcels.com/python/2009/10/05/python-excel-mini-cookbook

pywin32(包括 win32com.client)最强大的部分是您可以访问所有底层 VBA 命令。因此,在查找有关 win32com.client 与 Excel 交互的文档时,您需要查看 Excel 的对象模型,它位于此处的下拉菜单中:

https://learn.microsoft.com/en-us/office/vba/api/overview/excel

要解决下标的问题,你可以看这里:

https://learn.microsoft.com/en-us/office/vba/api/excel.font.subscript

您应该能够使用 win32com.client 写回 Excel 文档,而无需更改格式,但这比 pandas.to_excel() 这样简单的函数要重得多。

下面的代码将“apples2”写入已打开的名为“Sample Workbook”的工作簿。它还使最后一个字符成为上标。

import win32com.client
# app = win32com.client.dynamic.Dispatch("Excel.Application")
app = win32com.client.gencache.EnsureDispatch("Excel.Application")
app.Interactive = True
app.Visible = True
wb = app.Workbooks("Sample Workbook.xlsx")
ws = wb.Worksheets("Sheet1")

ws.Cells(1,1).Value="Apples2"

ws.Range("A1").Font.Bold = True
ws.Range("A1").GetCharacters(7,1).Font.Superscript = True
Run Code Online (Sandbox Code Playgroud)