QT获取excel 单元格位置

QT怎么获取excel单元格的位置,已知单元格的内容,获取单元格的坐标。... QT怎么获取excel 单元格的位置,已知单元格的内容,获取单元格的坐标。 展开
 我来答
cooke1234
2016-05-19 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3608万
展开全部

Qt可以通过QAxServer和QAxContainer库来获取excel单元格位置。

方法是:通过QAxServer获得Excel应用程序对象QAxObject,然后使用QAxObject打开相应的excel文档,找到指定的工作表,从里面读取指定位置上的单元格。

示例:

在cpp文件中

#include <QAxObject>
QAxObject *workbooks = NULL;
QAxObject *workbook = NULL;
QAxObject *cell=NULL;
QAxObject *excel = new QAxObject("Excel.Application");//运行excel程序
if (excel->isNull()) {
    QMessageBox::critical(0, "错误信息", "没有找到EXCEL应用程序");
    return;
}
excel->dynamicCall("SetVisible(bool)", false);
workbooks = excel->querySubObject("WorkBooks");//查找工作表对象
workbook = workbooks->querySubObject("Open(QString,QVariant,QVariant)", fileName,3,true);//两个参数时,三个参数true和false都很正常,false 锁定excel文件,其它程序只能只读方式打开,否则程序正在处理excel文件时,在外面打开excel,程序异常退出
if (!workbook) {
    QMessageBox::critical(0, "错误信息", "excel 文件不存在");
    return;
}
QAxObject * worksheet = workbook->querySubObject("WorkSheets(int)", 1);//打开第一个sheet
QAxObject * usedrange = worksheet->querySubObject("UsedRange");//获取该sheet的使用范围对象
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=intRowstsrt;i <intRowStart + intRows;i++){
    for(j=intColStart ;j<intColStrt+intCols;j++){
        cell = worksheet->querySubObject("Cells(int,int)", i,j ); //获取单元格
        if(cell->property("Value").type()==QVariant::Double){
            qDebug()<<QString::number(cell->property("Value").toDouble(),'f',0);
        }else if(cell->property("Value").type()==QVariant::QString){
            qDebug()<<cell->property("Value").toString();
        }
    }
}
workbook->dynamicCall("Close (Boolean)", false);
excel->dynamicCall("Quit (void)");
delete workbook;
delete workbooks;
delete excel;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式