使用 python openpyxl 或另一个将单个单元格中的 Excel 多种字体颜色从一个工作簿传输到另一个工作簿

问题描述 投票:0回答:1

我正在尝试找出一种方法,让我的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 宏的文件作为帮助程序,但它太复杂了。

如果您遇到过这个问题并且有想法,我将非常感谢您的反馈

python excel colors fonts openpyxl
1个回答
0
投票

这应该可以通过 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)

© www.soinside.com 2019 - 2024. All rights reserved.