簡體   English   中英

Xlsxwriter將不同的格式轉換為同一列中的不同單元格

[英]Xlsxwriter different formats to different cells in same column

設置不同單元格的格式時遇到問題。 我有兩個數據幀,其中包含應以不同格式顯示的數字。 我創建了一個簡單的例子來展示我的問題。

import pandas as pd
import numpy as np
import xlsxwriter

frame1 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),  columns=list('ABCD'))

#want to show this frame as percentage in Excel later
frame2 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),    columns=list('EFGH'))

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

frame1.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow= 0)

frame2.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow = (2 + len(frame1)))

writer.save()

此代碼生成此Excel工作表:

顯示輸出

現在問題是我可能想要將黃色標記的單元格設置為%或其他格式。 我知道我可以在整個列或行上設置格式,但我無法解決如何為某些特定單元格設置格式。 我想有一些非常簡單的解決方案。

解決方法是使用conditional_format ,如@jmcnamara所述,你只需應用{'type': 'top','value': str(f2rows),'format': format1} ,其中f2rows是行數您的數據format1format1是您要應用的格式。

import pandas as pd
import numpy as np
import xlsxwriter

frame1 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),  columns=list('ABCD'))

#want to show this frame as percentage in Excel later
frame2 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),    columns=list('EFGH'))

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

frame1.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow= 0)

frame2.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow = (2 + len(frame1)))

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

f2rows = frame2.shape[0]
startR = 4 + len(frame1)
endR = startR + f2rows -1

# Apply a conditional format to the cell range.
format1 = workbook.add_format({'bg_color': '#FFFF00',
                               'font_color': '#9C0006'})

worksheet.conditional_format('C{}:C{}'.format(startR, endR), {'type': 'top',
                                           'value': str(f2rows),
                                           'format': format1})

worksheet.conditional_format('E{}:E{}'.format(startR, endR), {'type': 'top',
                                           'value': str(f2rows),
                                           'format': format1})

writer.save()

Excel中的列格式適用於整個列,只能由行格式或單元格格式覆蓋。

因此,您需要將單元格格式應用於要進行不同格式化的單元格,而Pandas界面無法實現這種格式。

另一種方法是對您感興趣的單元格區域使用條件格式。例如,請參閱XlsxWriter文檔中的此Pandas程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM