2015-04-07 389 views
3

我有一个脚本来格式化一堆数据,然后将其推送到excel,在那里我可以轻松地擦洗破损的数据,并做更多的分析。openpyxl和stdev.p名称错误

作为这个的一部分,我推送了大量的数据来优化,并希望excel做一些legwork,所以我把一定数量的公式放到表单中。 (“= AVERAGE(...)”“= A1 + 3”等)工作绝对好,但当我加上标准偏差(“= STDEV.P(...)”我得到当我在Excel 2013中打开时出现名称错误。

如果我点击excel中的单元格并命中(即不更改单元格内的任何内容),单元格将重新计算而不会出现名称错误,所以我有点糊涂了。

是否有任何额外的东西,需要做才能得到这个工作?

任何人都有这样的经验吗?

谢谢,

威尔 -

回答

0

我怀疑有可能是你在想什么,你需要写的公式和实际需要的是一个微妙的差异。 openpyxl本身对公式没有任何作用,甚至不检查它。您可以通过比较两个文件(一个来自openpyxl,一个来自Excel)来调查这个表面上看似相同的公式。差异可能很简单 - 使用“。”对于小数和“,”作为值之间的分隔符,即使英语不是语言 - 或者可能需要额外的功能:Microsoft多年来一直在继续扩展规范。

一旦你有一些指针,请提交一个关于openpyxl问题跟踪器的错误报告。

+0

非常感谢您的建议。我将添加错误报告。 – will

+0

该公式取决于对原始规范的扩展。对这种差异的支持超出了openpyxl的范围,我怀疑其他库。您可能希望查看使用xlwings让Excel在控制它时执行更多工作。 –

2

我进一步调查,这是问题:

当保存openpyxl将其保存为公式“STDEV.P”:

"=_xludf.STDEV.P(...)" 

这是正确的许多公式,但不是这个一。 结果应该是:

"=_xlfn.STDEV.P(...)" 

当我明确地改变功能后,它按预期工作。 我会提交一份错误报告,希望将来可以自动完成。