Python openpyxl 公式在 Excel 中显示不正确

问题描述 投票:0回答:1

我在 Excel 中通过 Python openpyxl 正确导出公式时遇到问题。我想在 Excel 中导出某个范围内的平均值和 75% 四分位数的公式。我使用的是德语 Excel 版本。这对于平均值来说效果很好,这里英语公式“=AVERAGE(A2:A7)”显示为德语公式“=MITTELWERT(A2:A7)”。不幸的是,这不适用于 75% 四分位数,这里英文公式“=QUARTILE.INC(A2:A7,75%)”显示为“[email protected](A2:A7;75%)”,这会导致 Excel 中出现错误,而不是像德国公式“=QUARTILE.INKL(A2:A7; 0,75)”那样有效。 这是示例代码:

import pandas as pd
import os

# Change directory
directory = r'C:\Users\abc\Desktop\Test Formula'
os.chdir(directory)

# Create dataframe
data = {
    'Test1': [1, 2, 3, 4, 5, 6],
    'Test2': [16.46, 17.21, 14.98, 21.3, 89.1, 71.77]
}

data['Test1'].append('=AVERAGE(A2:A7)')
data['Test2'].append('=AVERAGE(B2:B7)')

data['Test1'].append('=QUARTILE.INC(A2:A7,75%)')
data['Test2'].append('=QUARTILE.INC(B2:B7,75%)')

df = pd.DataFrame(data)

# Create an Excel file
output_file = os.path.join(directory, "Output.xlsx")
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:  # Specify engine='openpyxl'
    df.to_excel(writer, sheet_name='Test_Output', index=False)

在(德语)Excel 中,此代码将生成以下公式/评估:

=MITTELWERT(A2:A7)(正确评估为 3.5),

[电子邮件受保护](A2:A7;75%)(对 #NAME 的计算结果不正确?)

而不是 [email protected](A2:A7;75%),应该是 =QUARTILE.INKL(A2:A7; 0,75) (正确计算结果为 1)。 有谁知道为什么这段代码不能在 Excel 中生成正确的公式?

python excel excel-formula openpyxl
1个回答
0
投票

您需要添加

_xlfn.
以下应该有效:

data['Test1'].append('=_xlfn.QUARTILE.INC(A2:A7,75%)')
data['Test2'].append('=_xlfn.QUARTILE.INC(B2:B7,75%)')
© www.soinside.com 2019 - 2024. All rights reserved.