我正在使用pandas和xlsxwriter將許多數據框導出並格式化爲Excel。熊貓:如何在導出到Excel時格式化行和列(行格式優先)?
的xlsxwriter文檔中提到: http://xlsxwriter.readthedocs.io/worksheet.html?highlight=set_column
A row format takes precedence over a default column format
優先意味着,如果格式化塔B爲百分比,然後第2行粗體,細胞B2不會加粗並以% - 它只會是大膽的,但不是%!
我在下面提供了一個例子。 有沒有辦法解決它?也許是xlsxwriter以外的引擎?也許某種方式將數據框導出爲excel後應用格式化?
不管我以後格式化第一列還是列,或反之亦然,它們都沒有區別。
它沒有在下面的例子中顯示,但在我的代碼中,我導出了一些數據框,所有列都相同,到同一個Excel表。數據框相當於一個Excel數據透視表,底部有一個「總計」行。我希望標題行和總行是粗體,並且每個列都根據數據(%,數千,數百萬等)具有特定的格式。下面的示例代碼。
想法?謝謝!
import pandas as pd
writer = pd.ExcelWriter('test.xlsx')
wk = writer.book.add_worksheet('Test')
fmt_bold = writer.book.add_format({'bold':True})
fmt_pct = writer.book.add_format({'num_format': '0.0%'})
wk.write(1,1,1)
wk.write(2,1,2)
wk.set_column(1,1, None, fmt_pct)
wk.set_row(1,None, fmt_bold)
writer.close()
所以,如果我理解正確,你的意思是,我需要應用逐格格式化單元格?換句話說,沒有辦法只是說:列B在%,第2行以粗體顯示,並且B2以粗體和百分比表示,如果我要在Excel中手動打開文件,我會這樣做嗎? 相反,我需要想出一個腳本,其中設置:B2:粗體和%,C2僅粗體,B3:僅限於%等 此外,當您說迭代時,是指迭代應用格式,或不是依靠to_excel()方法,而是通過單元格寫入數據框? –
你說OpenPyXL可以讓你在寫入數據框後添加格式,但是我已經在使用XlsxWriter來做這件事了,所以我有點困惑。使用以xlsxwriter作爲引擎的to_excel()方法將數據框導出爲excel,然後使用set_format()和set_column將格式應用於已導出到Excel的數據框。 –
PS或者也許我可以使用win32com模塊從Python內控制Excel?Basiclaly我想要的是模仿手動使用Excel時發生的情況,即添加,而不是替換格式。 –