使用 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 显示数据标签。如果您追求非传统的东西,其他格式也适用。希望这对某人有帮助
我正在尝试使用 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 显示数据标签。如果您追求非传统的东西,其他格式也适用。希望这对某人有帮助