python - 使用 Pandas 读/写 Excel 文件时如何保留 Excel 文本格式?

标签 python pandas

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

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

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

最佳答案

对 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”写入一个名为“示例工作簿”的已打开工作簿。它还使最后一个字符成为上标。

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

关于python - 使用 Pandas 读/写 Excel 文件时如何保留 Excel 文本格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35288801/

相关文章:

python - ipython pylab : print histogram from dictionary

python - flask 在容器内工作,但当我将其转发时却没有

python - 用于捕获元素 textContent 的正则表达式

python - python 中是否有一个用于评估类的神奇方法?

python - Pandas 数据框条件变化

python - 在 pandas groupby 的列内进行比较

python - 使用 matplotlib 显示 MNIST 图像

python - 在 Numpy 数组中找到高原

python - 从变量中的值构造pandas DataFrame给出 "ValueError: If using all scalar values, you must pass an index"

python - 将参数传递给 pandas.DataFrame.transform 中的函数