资源简介
使用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
- 上一篇:Tcp自定义命令调试工具
- 下一篇:c++ 虚拟摄像头
相关资源
- Tcp自定义命令调试工具
- Qt 通讯软件模块的开发
- Qt TCP聊天室demo
- 对话框中实现浮动工具栏
- ftp工具代码
- Qt曲线
- c++语法查询工具
- qt样式表武林秘籍(73页)
- stm32 MQTT
- dll依赖文件检测工具
- Linux开发工具手册
- QT信号槽开发
- Wemos D1 mini阿里云MQTT例程
- QT 计算文件夹内所有代码行数
- qt写的记事本
- QT自定义皮肤例子56387
- qt上位机采集51单片机温湿度数据
- MQTT协议
- VC6查找与替换插件
- 一个C++实现的源代码行数统计工具
- Delphi反编译工具
- C++ 读取excel2007文件,转成lua文件
- 简单通讯录C语言实现
- 五子棋C++(Qt版).zip
- Qt飞机大战小游戏源代码
- c++ test9.5破解工具
- Dev-C++ V5.7.1中文版(32位64;位)_C++ 开
- 基于qt的c++编写的贪吃蛇游戏
- VS2010 C++ 操作Excel表格的编程实现
- SLAM算法大全,包括代码和文档、工具
评论
共有 条评论