Python: невозможно отформатировать строки выходной сводной таблицы в Excel - PullRequest
0 голосов
/ 21 марта 2019

Я использую xlsxwriter и форматирую строки и столбцы, поскольку выходные данные предварительно определены.

- worksheet.set_row (2, None, header_format) не работает - Worksheet.write (Commented in Sample) не работает. Его форматирование отправляет значения данных, а не ячейки с данными.Любое руководство / помощь будут великолепны.

import pandas as pd
import xlsxwriter
import numpy as np
Raw_Lum=pd.read_excel("C:\\Users\\600009336\\Desktop\\Report\\Input\\All_Luminaire2.xlsx",encoding='cp1252',skiprows=4)
Raw_Lum2=Raw_Lum[Raw_Lum['Is Remotely Managed (Luminaire)']==True]
#a=['0']
#b=['0']
Raw_Lum2.loc[:,'Commissioned']=0
#Raw_Lum2.loc[:,'NonCommissioned']=0
#Raw_Lum2['Commissioned2'] = Raw_Lum2['Commissioning Date'].apply(lambda x: 1 if x=='NaN' else 0)
Raw_Lum['Commissioned']=np.where(Raw_Lum['Commissioning Date'].isnull(),1,0)
Raw_Lum['NonCommissioned']=np.where(Raw_Lum['Commissioning Date'].isnull(),0,1)
Raw_Lum_pt=Raw_Lum.groupby(['Control System (Luminaire)','Commissioned','NonCommissioned']).agg({'ID (Luminaire)':'nunique'}).reset_index()
Raw_Lum_pt3=Raw_Lum.groupby(['Control System (Luminaire)']).agg({'Commissioned':'sum','NonCommissioned':'sum'}).reset_index()
Raw_Opn_Pt_Tot=Raw_Lum_pt3.pivot(columns='Control System (Luminaire)',values=['Commissioned','NonCommissioned'])
Raw_Opn_Pt_Tot2=Raw_Opn_Pt_Tot.sum()
Raw_Opn_Pt_Tot.loc['Luminaire']=Raw_Opn_Pt_Tot.sum()
Raw_Opn_Pt_Tot5=Raw_Opn_Pt_Tot.tail(1)  
pd.io.formats.format.header_format=None
#Open an excel file 
writer=pd.ExcelWriter("C:\\Users\\600009336\\Desktop\\Report\\Output\\Lum_Total.xlsx", engine='xlsxwriter')
#Rename the sheet
Raw_Opn_Pt_Tot5.to_excel(writer,sheet_name="Lum_Total",startrow=1,header=True)
#Make workbook Object
workbook  = writer.book
#Make worksheet object
worksheet = writer.sheets['Lum_Total']
#Define header format
header_format=workbook.add_format({
    'border':1,
    'border_color':'#ffffff',
    'valign': 'top',
    'fg_color': '#ff375f',
    'font_name':'Calibri',
    'font_size': 10,
    'font_color':'#ffffff',
    'text_wrap': False,
    'bold': True
     })
cell_format1 = workbook.add_format()
cell_format1.set_border(1)
cell_format1.set_border_color('#808080')
format1 = workbook.add_format({'bg_color': '#595959',
                              'font_color': '#ffffff'})
#Set column widths for the excels
#worksheet.merge_range('B1:E1', None, header_format)

worksheet.set_column('B:B', 24,cell_format1)
worksheet.set_column('C:C', 24,cell_format1)
worksheet.set_column('D:D', 24,cell_format1)
worksheet.set_column('E:E', 24,cell_format1)
worksheet.set_column('F:F', 24,cell_format1)
worksheet.set_column('G:G', 24,cell_format1)
worksheet.set_column('H:H', 24,cell_format1)
worksheet.set_column('I:I', 24,cell_format1)
worksheet.set_column('J:J', 24,cell_format1)
worksheet.set_column('K:K', 24,cell_format1)
#worksheet.set_row(2,None,header_format)

#4row
#worksheet.merge_range('B2:E2','None',header_format)
worksheet.set_row(2,None,header_format)
#worksheet.set_row(7, 60)
 #Write the column headers with the defined format.
#for col_num, value in enumerate(Raw_Opn_Pt_Tot5.columns.values):
#    worksheet.write(0, col_num + 1, value, header_format)


writer.save()    
print("Total Done!!")

1 Ответ

0 голосов
/ 25 марта 2019

Мне нужно было добавить ниже, чтобы он мог удалить предварительный формат заголовка таблицы при экспорте.

    import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None

Это сработало, и я могу отформатировать заголовок сводной таблицы с объединенными ячейками.

...