• 大小: 4.17KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-18
  • 语言: C/C++
  • 标签: Excel  Qt  工具  

资源简介

使用Qt实现一个Excel读取工具,显示到界面。

资源截图

代码片段和文件信息

#include “ExcelReadTool.h“
#include 
#include 



CExcelReadTool::CExcelReadTool(QWidget *parent)
: QMainWindow(parent)
 excel(nullptr)
 work_books(nullptr)
 work_book(nullptr)
 work_sheets(nullptr)
 work_sheet(nullptr)
{
ui.setupUi(this);
menuWidget()->hide();

//setFixedSize(size());

ui.tableWidget->horizontalHeader()->setSectionresizeMode(QHeaderView::Stretch);

ui.listWidget_time->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_address->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_vol->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_type->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_no->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_tool->setSelectionMode(QAbstractItemView::MultiSelection);
ui.listWidget_person->setSelectionMode(QAbstractItemView::MultiSelection);



connect(ui.pushButton &QPushButton::clicked this &CExcelReadTool::OnPushButtonclicked);
connect(ui.pushButton_select &QPushButton::clicked this &CExcelReadTool::OnFilterPushButtonclicked);
connect(ui.pushButton_clear &QPushButton::clicked this &CExcelReadTool::OnClearButtonclicked);




}


CExcelReadTool::~CExcelReadTool()
{
if (work_book != nullptr)
{
work_book->dynamicCall(“Close()“);//关闭工作簿
}

if (excel != nullptr)
{
excel->dynamicCall(“Quit()“);//关闭excel
delete excel;
excel = NULL;
}
}

void CExcelReadTool::OnPushButtonclicked()
{
static bool bfirst = false;
if (bfirst)
{
return;
}
QString file_path = QFileDialog::getOpenFileName(this QString() QString() “excel(*.xls *.xlsx)“);
qDebug() << “file path:“ << file_path;
if (!file_path.isEmpty())
{
bfirst = true;
OpenExcel(file_path);
}
}


void CExcelReadTool::OpenExcel(QString filePath)
{
excel = new QAxobject(this);
excel->setControl(“Excel.Application“);//连接Excel控件
excel->setProperty(“Visible“ false);
// excel->dynamicCall(“SetVisible (bool Visible)“ “false“);//不显示窗体
excel->setProperty(“DisplayAlerts“ false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示

work_books = excel->querySubobject(“WorkBooks“);
work_books->dynamicCall(“Open(const QString&)“ filePath);
work_book = excel->querySubobject(“ActiveWorkBook“);
work_sheets = work_book->querySubobject(“Sheets“);  //Sheets也可换用WorkSheets
int sheet_count = work_sheets->property(“Count“).toInt();  //获取工作表数目
if (sheet_count > 0)
{
work_sheet = work_book->querySubobject(“Sheets(int)“ 1);
QVariant var = readAll(work_sheet);
Variant2ListListVariant(var);

}

}

QVariant CExcelReadTool::readAll(QAxobject* sheet)
{

QVariant var;
if (sheet != NULL && !sheet->isNull())
{
QAxobject *usedRange = sheet->querySubobject(“UsedRange“);
if (NULL == usedRange || usedRange->isNull())
{
return var;
}
var = usedRange->dynamicCall(“Value“);
delete usedRange;
}
re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9439  2019-09-04 22:58  QtReadExcelTool\ExcelReadTool.cpp

     文件        870  2019-09-04 22:37  QtReadExcelTool\ExcelReadTool.h

     文件       6909  2020-10-23 00:27  QtReadExcelTool\ExcelReadTool.ui

     文件        186  2019-09-04 02:11  QtReadExcelTool\main.cpp

     目录          0  2020-10-23 00:26  QtReadExcelTool

----------- ---------  ---------- -----  ----

                17404                    5


评论

共有 条评论