Python:无法在excel中格式化输出数据透视表的行

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

我正在使用xlsxwriter并格式化行和列,因为输出是预定义的。

--worksheet.set_row(2,None,header_format)不起作用--worksheet.write(在Sample中注释)不起作用它的put格式发布数据值而不是有数据的单元格。任何指导/帮助都会很棒。

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!!")
python pandas format pivot xlsxwriter
1个回答
0
投票

我需要添加以下内容,以便它可以在导出时删除表头的预格式。

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

这工作,我能够格式化具有合并单元格的数据透视表的标题。

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