使用QAxObject获取excel的值

sheath 2010-12-07 03:48:40
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的问题.求解答
...全文
567 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
range->property("Value");
改成:
range->dynamicCall("Value2()");
a103176270 2011-01-23
  • 打赏
  • 举报
回复
我的情况跟楼主一样,不知怎么办呢!
vv_cool 2010-12-09
  • 打赏
  • 举报
回复
你装的office2010什么版本?专业版的话,应该跟office没关系。其它版本貌似是不行的。读取office方法还是很是有其他的,如odbc,你网上搜搜,很容易找到。

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧