如何在Excel工作表中复制条件为单元格颜色的python数据框?

2024-09-21 03:25:56 发布

您现在位置:Python中文网/ 问答频道 /正文

求你了,我需要你的帮助

我想在Excel工作表中复制Excel数据框,但仅在白色单元格上使用actuall xl wings。 pandas dataframeexcel sheet

我不想复制红细胞

下面是我的python代码:

import pandas as pd
import xlwings as xw
#dataframe creation
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df

#Copy in a excel sheet with xl wings

wb=xw.Book()
ws=wb.sheets['Feuil1']
ws.range("A1").options(index=False).value=df 

Tags: 数据importdataframepandasdfwsasexcel
2条回答

excel工作表的图片显示没有任何内容的红细胞。这意味着以下解决方案应该有效。
只需像您在问题中所做的那样复制数据框,然后删除红色背景的单元格内容。只需在代码中添加以下行:

for cell in ws.used_range:
    if cell.api.Interior.Color == xw.utils.rgb_to_int((217,217,217)):
        cell.clear_contents()

您需要在.rgb_to_int((217,217,217))中填写背景色的RGB值

如果我理解你的问题…

您可以使用pandasexcel writer(也可以查看^{}的参数):

writer = pd.ExcelWriter("Output.xlsx", engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Feuil1')

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Feuil1']

# Add some cell formats
header_format = workbook.add_format({
    'bold': True,
    'text_wrap': True,
    'valign': 'vcenter',
    'align': 'center',
    'bottom': 1}
)

# Create a base format
format1 = workbook.add_format({'align': 'center', 'border': False})

# Create a "red" format
format2 = workbook.add_format({'bg_color': '#FFC7CE',
                               'font_color': '#9C0006'})

# Create a "green" format
format3 = workbook.add_format({'bg_color': '#CDFFC7',
                               'font_color': '#324f2F'})

# Set the column width and format
worksheet.set_column('A:N', 16, format1)
worksheet.conditional_format(
    'A1:N800',
    {'type': 'cell', 'criteria': '==', 'value': '"no data"','format': format2}
)

worksheet.conditional_format(
    'A1:N500',
    {'type': 'cell', 'criteria': '==', 'value': '"not applicable"', 'format': format3}
)

# Write the column headers with the defined format.
for col_num, value in enumerate(df.columns.values):
    worksheet.write(0, col_num, value, header_format)

Here你可以找到一个大型教程

相关问题 更多 >

    热门问题