#python #excel #pandas #dataframe #xlwings
#python #excel #панды #фрейм данных #xlвинги
Вопрос:
Пожалуйста, мне нужна ваша помощь.
Я хочу скопировать фрейм данных Excel в лист Excel, но только для белых ячеек, я использую actuall xl wings. фрейм данных pandas
excel 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
Комментарии:
1. непонятно, чего вы хотите. Я полагаю, вы хотите применить стили к фрейму данных pandas на основе условий Excel, правильно?
2.
df.to_excel('filename', sheet_names='Feuil1')
мог бы помочь3. @Yuca, я редактирую свой вопрос.
4. Я хочу скопировать фрейм данных python в Excel, но копирую только белые ячейки. С помощью xl wings я могу скопировать фрейм данных, но я не знаю, как добавить условие для копирования только в белые ячейки Excel.
5. @PaulBrennan, спасибо, но я знаю, как экспортировать фрейм данных в Excel, мой вопрос в том, как скопировать фрейм данных pandas на листе Excel, созданном xl wings, и копировать только в белые ячейки
Ответ №1:
Если я понял ваш вопрос…
Вы можете использовать pandas Excel writer (посмотрите также параметры to_excel
):
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)
Здесь вы можете найти большой учебник
Комментарии:
1. @Rhoman Zhuravlev, спасибо, но это не отвечает на мой вопрос, спасибо, мой вопрос в том, как скопировать фрейм данных pandas на листе Excel, созданном xl wings, и скопировать только белые ячейки. Пожалуйста, ознакомьтесь с примерами листа Excel и фрейма данных.
Ответ №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 вашего цвета фона .rgb_to_int((217,217,217))
.