使用openpyxl和to_excel用逗号分隔符格式化整数

时间:2019-08-09 18:45:07

标签: python pandas dataframe openpyxl

我正在使用to_excel()将DataFrames写入Excel。我认为,我需要使用openpyxl而不是XlsxWriter作为编写器引擎,因为我需要打开现有的Excel文件并添加工作表。不管怎样,我都对使用openpyxl进行其他格式化有深入的了解,所以我不热衷于更改。

这将编写DataFrame并格式化浮点数,但我不知道如何格式化int dtypes。

import pandas as pd
from openpyxl import load_workbook

df = pd.DataFrame({'county':['Cnty1','Cnty2','Cnty3'], 'ints':[5245,70000,4123123], 'floats':[3.212, 4.543, 6.4555]})

fileName = "Maryland - test.xlsx"
book = load_workbook(fileName)
writer = pd.ExcelWriter(fileName, engine='openpyxl')
writer.book = book

df.to_excel(writer, sheet_name='Test', float_format='%.2f', header=False, index=False, startrow=3)
ws = writer.sheets['Test']

writer.save()
writer.close()

尝试使用此方法,但我认为它仅适用于XlsxWriter:

intFormat = book.add_format({'num_format': '#,###'})
ws.set_column('B:B', intFormat)

这种类型的东西可以逐个循环使用,但是有很多数据:

ws['B2'].number_format = '#,###'

1 个答案:

答案 0 :(得分:0)

这可以通过使用 openpyxl.styles 中的 number_fomat 来修复

from openpyxl.styles import numbers

def sth():
   #This will output a number like: 2,000.00
   cell.number_format = numbers.FORMAT_NUMBER_COMMA_SEPARATED1

查看此链接以进一步阅读thedocs