我正在使用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时发生的情况,即添加,而不是替换格式。 –