双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

使用QAxObject获取excel的值

sheath sheath 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
QApplication a(argc, argv);
QAxObject* excel = new QAxObject("Excel.Application");
excel->setProperty("Visible", true);
QAxObject* workbooks = excel->querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)", QString("d:\\projects\\QT\\ninja\\a.xls"));
QAxObject* workbook = excel->querySubObject("ActiveWorkBook");
QAxObject* worksheets = workbook->querySubObject("WorkSheets");

QAxObject* worksheet = workbook->querySubObject("Worksheets(int)", 1);
QAxObject* usedrange = worksheet->querySubObject("UsedRange");
QAxObject* rows = usedrange->querySubObject("Rows");
QAxObject* columns = usedrange->querySubObject("Columns");
int intRowStart = usedrange->property("Row").toInt();
int intColStart = usedrange->property("Column").toInt();
int intCols = columns->property("Count").toInt();
int intRows = rows->property("Count").toInt();
for (int i = intRowStart; i < intRowStart + intRows; i++)
{
for (int j = intColStart; j < intColStart + intCols; j++)
{
QAxObject * range = worksheet->querySubObject("Cells(int,int)", i, j );
qDebug() << i << j << range->property("Value");
}
}
excel->setProperty("DisplayAlerts", 0);
workbook->dynamicCall("Save(void)");
workbook->dynamicCall("Close (Boolean)", false);
excel->setProperty("DisplayAlerts",1);


delete excel;


myxls w;
w.show();
return a.exec();








参考各种各样的资料,完整代码就是这样了.上面的代码基本没什么问题.就是
qDebug() << i << j << range->property("Value");
这里获取不到内容.输出的结果是1 1 QVariant(QVariant, ) .我装的是office2010.觉得应该不是office的问题.求解答
...全文
评论 4
收藏 已收藏
分享
返回顶部
sheath
Qt 21,503 成员 26,693 内容