使用 openpyxl 将图表数据标签格式化为 1dp 的百分比

Format chart data labels as percentage to 1dp with openpyxl

我正在尝试使用 Python 和 openpyxl 浏览大量工作簿并收集数据,然后将数据写入报告。这包括一个饼图,我想将数据标签显示为 1dp 的百分比。我似乎无法找到这样做的方法。通过格式化数据标签 -> 数字 -> 类别(百分比) -> 小数位,可以在 Excel 中轻松完成。但是我似乎找不到使用 openpyxl 来完成它的方法。有什么建议么?我发现了一个类似的问题 ,但它没有回答我的问题。

示例代码:

import openpyxl as op
from openpyxl.chart import(
    PieChart,
    Reference
)
from openpyxl.chart.label import DataLabelList

# Creating excel sheet
wb = op.Workbook()
ws = wb.active

# Data, writing to excel sheet
data = [
    ['Pie', 'Sold'],
    ['Apple', 24],
    ['Pumpkin', 13],
    ['Berry', 17]
]
for row in data:
    ws.append(row)

# Creating pie chart
pie = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=4)
data = Reference(ws, min_col=2, min_row=1, max_row=4)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)
pie.title = 'Pies sold'

# Showing data labels as percentage
pie.dataLabels = DataLabelList()
pie.dataLabels.showPercent = True

# Adding chart
ws.add_chart(pie, 'D1')

# Saving
save_location = r"C:\Users\jw\Desktop\"
wb.save(save_location + "Test.xlsx")

找到解决方法。

在将数据写入excel之前,需要将其重新格式化为总数的小数部分(0.67、0.02 等)。然后写入excel,根据需要更改格式: ws.cell(row=row, column=column).number_format = '0.0%' 照常创建图表,但使用 pie.dataLabels.showVal = True 而不是 pie.dataLabels.showPercent = True 饼图现在将以 1dp 显示数据标签。如果您追求非传统的东西,其他格式也适用。希望这对某人有帮助