• 6593阅读
  • 4回复

给点力啊~继续sheath的问题 读excel [复制链接]

上一主题 下一主题
离线ff007bit
 
只看楼主 倒序阅读 楼主  发表于: 2011-01-15
  1.     QAxObject *excel = NULL;
  2.     QAxObject *workbooks = NULL;
  3.     QAxObject *workbook = NULL;
  4.     excel = new QAxObject("Excel.Application");
  5.     if (!excel)
  6.     {
  7.         QMessageBox::critical(this, "错误信息", "EXCEL对象丢失");
  8.         return;
  9.     }
  10.     excel->dynamicCall("SetVisible(bool)", false);
  11.     workbooks = excel->querySubObject("WorkBooks");
  12.     workbook = workbooks->querySubObject("Open(QString, QVariant)", QString(tr("g:\\BFS.xls")));
  13.     QAxObject * worksheet = workbook->querySubObject("WorkSheets(int)", 1);//打开第一个sheet
  14.     QAxObject * usedrange = worksheet->querySubObject("UsedRange");//获取该sheet的使用范围对象
  15.     QAxObject * rows = usedrange->querySubObject("Rows");
  16.     QAxObject * columns = usedrange->querySubObject("Columns");
  17.     /*获取行数和列数*/
  18.     int intRowStart = usedrange->property("Row").toInt();
  19.     int intColStart = usedrange->property("Column").toInt();
  20.     int intCols = columns->property("Count").toInt();
  21.     int intRows = rows->property("Count").toInt();
  22.     /*获取excel内容*/
  23.     for (int i = intRowStart; i < intRowStart + intRows; i++)  //行
  24.     {
  25.         for (int j = intColStart; j < intColStart + intCols; j++)  //列
  26.         {
  27.             QAxObject * range = worksheet->querySubObject("Cells(int,int)", i, j );  //获取单元格
  28.             qDebug() << i << j << range->property("Value");         //*****************************出问题!!!!!!
  29.         }
  30.     }

和sheath的问题一样,一直没有得到回复..于是自己又重新发了一遍
打开excel表格是正确的,因为qDebug()出来的行和列数是对的,但是range->property("Value") 这句(标注出问题!!!!)的显示总是QVariant(QVariant, )
请问怎么解决?在后面加上toString()则显示""  
大神们,给点力啊~
离线XChinux

只看该作者 1楼 发表于: 2011-01-15
出什么问题了?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ff007bit
只看该作者 2楼 发表于: 2011-01-15
回 1楼(XChinux) 的帖子
qDebug() << i << j << range->property("Value");
这句总是显示QVariant(QVariant, )
加上toString()后,总是为空
我能确定是选中了我要的excel文件
求斑竹帮忙~
离线XChinux

只看该作者 3楼 发表于: 2011-01-16
确认你的下标没越界吧?excel中的索引是从1开始的,不是0.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线compumatic

只看该作者 4楼 发表于: 2013-07-29
qDebug() << i << j << range->property("Value");更改成 qDebug() << i << j << range->dynamicCall("Value2()").toString()
快速回复
限100 字节
 
上一个 下一个