我正在尝试找出一种方法,让我的Python脚本从工作簿中读取单元格,使用正确的数据和格式复制它们(包括单个单元格中的多种颜色字体),然后将它们粘贴到不同的工作簿中使用 openpyxl 库或其他库。
我已成功复制和粘贴数据,同时保持部分格式完整。但是,我找不到保留字体的颜色的方法。
包含颜色字体的单元格是混合的,有时是黑色字体,然后是同一单元格中的红色字体或其他颜色,我也需要将该类型的信息传递到其他工作簿
我找到了这个旧的“可能的解决方案”帖子,尽管它对我不起作用。 从单元格中检索完整的富文本数据(单元格内的多种字体颜色/样式)
我的示例代码如下:
from openpyxl import load_workbook
from openpyxl.styles import Font
# Paths
source_path = "D:\\Python Projects\\Testing Copy Color Font\\Test 1.xlsx"
target_path = "D:\\Python Projects\\Testing Paste Color Font\\Test 2.xlsx"
# Workbooks
source_wb = load_workbook(source_path)
target_wb = load_workbook(target_path)
# Sheets
source_sheet = source_wb.active
target_sheet = target_wb.active
# Cells
source_cell = source_sheet['A1']
target_cell = target_sheet['A1']
# Copy
target_cell.value = source_cell.value
# Copy format
font = source_cell.font
target_cell.font = Font(name=font.name, size=font.size, bold=font.bold, italic=font.italic,
vertAlign=font.vertAlign, underline=font.underline, strike=font.strike,
color=font.color)
# Save
target_wb.save(target_path)
我制作了一个示例,在测试 1 的第一个单元格中编写了“Hello World”。 “Hello”是自动黑色,“World”是红色。但是,当我多次尝试执行脚本时,它只是将数据粘贴为黑色。
我尝试使用旧帖子中发布的所有库以及该补丁。我还尝试使用 pywin32 来模仿手动复制/粘贴操作和启用 VBA 宏的文件作为帮助程序,但它太复杂了。
如果您遇到过这个问题并且有想法,我将非常感谢您的反馈
这应该可以通过 Xlwings 只需使用 Excel 复制/粘贴来实现。 下面显示的示例代码使用“Hello World”副本,其中“Hello”字体默认为黑色,“World”字体为红色。
import xlwings as xw
# Paths
source_path = "Target.xlsx"
target_path = "Destination.xlsx"
with xw.App(visible=True) as app:
# Workbooks
source_wb = xw.Book(source_path)
target_wb = xw.Book(target_path)
# Sheets
source_sheet = source_wb.sheets.active
target_sheet = target_wb.sheets.active
source_sheet.range("A1").copy()
target_sheet.range("A1").paste()
target_wb.save(target_path)