qt activex操作excel,该怎么解决
1个回答
展开全部
为了便于测试,假设已存在一个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 int sheet_count = work_sheets->property("Count").toInt(); //获取工作表数目 qDebug()<<QString("sheet count : ")<<sheet_count; for(int i=1; i<=sheet_count; i++) { QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", i); //Sheets(int)也可换用Worksheets(int) QString work_sheet_name = work_sheet->property("Name").toString(); //获取工作表名称 QString message = QString("sheet ")+QString::number(i, 10)+ QString(" name"); qDebug()<<message<<work_sheet_name; } if(sheet_count > 0) { QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", 1); QAxObject *used_range = work_sheet->querySubObject("UsedRange"); QAxObject *rows = used_range->querySubObject("Rows"); QAxObject *columns = used_range->querySubObject("Columns"); int row_start = used_range->property("Row").toInt(); //获取起始行 int column_start = used_range->property("Column").toInt(); //获取起始列 int row_count = rows->property("Count").toInt(); //获取行数 int column_count = columns->property("Count").toInt(); //获取列数 for(int i=row_start; i { for(int j=column_start; j { QAxObject *cell = work_sheet->querySubObject("Cells(int,int)", i, j); QVariant cell_value = cell->property("Value"); //获取单元格内容 QString message = QString("row-")+QString::number(i, 10)+QString("-column-")+QString::number(j, 10)+QString(":"); qDebug()<<message<<cell_value; } } }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询