乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>QT</em>获取<em>excel</em> 单元格位置

<em>QT</em>获取<em>excel</em> 单元格位置

作者:乔山办公网日期:

返回目录:excel表格制作


Qt操作Excel,无论后缀是xls还是xlsx都可以。

1.如下e799bee5baa6e4b893e5b19e338,是下载的一个Excel VBA参考手册,内容不算太全!

2.Excel读取
为了便于测试,假设已存在一个excel文件,操作内容已经被红色标记出来。如下所示:
主要读取内容:
标题
工作表数目
工作表名称
起始行
起始列
行数
列数
单元格内容
代码如下:

QAxObject excel("Excel.Application");
excel.setProperty("Visible", true);
QAxObject *work_books = excel.querySubObject("WorkBooks");
work_books->dynamicCall("Open (const QString&)", QString("E:/test.xlsx"));
QVariant title_value = excel.property("Caption"); //获取标题

qDebug()<<QString("excel title : ")<<title_value;

QAxObject *work_book = excel.querySubObject("ActiveWorkBook");

QAxObject *work_sheets = work_book->querySubObject("Sheets"); //Sheets也可换用WorkSheets

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

1、使用QDataStream进行二进制数据读写。

2、从流中读取二进制数据

3、在代码中使用硬编码指定流的版本号。

4、在文件头中写入一个简短的幻数字符串和一个版本号,以便将来进行扩展。

5、它可以通过以下方式阅读。

6、使用事务完成不完整的数据读取即可。



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

方法是:通过QAxServer获得Excel应用e799bee5baa6e997aee7ad94e78988e69d83337程序对象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;

相关阅读

  • <em>QT</em>获取<em>excel</em> 单元格位置

  • 乔山办公网excel表格制作
  • Qt操作Excel,无论后缀是xls还是xlsx都可以。 1.如下e799bee5baa6e4b893e5b19e338,是下载的一个Excel VBA参考手册,内容不算太全!2.Excel读取为了便于测试,假设已存在一个excel文件,操作内容已经
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网