今天遇到一个业务场景,需要在Qt中调用Excel中的FDIST函数

此函数返回两个数据集的(右尾)F 概率分布(变化程度)。 使用此函数可以确定两组数据是否存在变化程度上的不同。 例如,分析进入中学的男生、女生的考试分数,来确定女生分数的变化程度是否与男生不同。

用Qt去实现太麻烦,直接用Excel中的函数好了。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <QCoreApplication>
#ifdef Q_OS_WIN
#include <objbase.h>
#include <QAxObject>
#endif
#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

#ifdef Q_OS_WIN
::CoInitialize(NULL);
QAxObject *obj = new QAxObject("Excel.Application");
double x = 7.25284;
int deg_freedom1 = 8;
int deg_freedom2 = 3;
QString expression = QString("Evaluate(\"FDIST(%1, %2, %3)\")")
.arg(x).arg(deg_freedom1).arg(deg_freedom2);
auto result = obj->dynamicCall(expression.toStdString().c_str());
qDebug() << result;
#endif

return a.exec();
}

Reference