#include <QDebug>
#include <QAxObject>
#include <QStandardPaths>
#include <QFileDialog>
#include <QVariant>
#include <QCoreApplication>

QAxObject *pApplication = NULL;
QAxObject *pWorkBooks = NULL;
QAxObject *pWorkBook = NULL;
QAxObject *pSheets = NULL;
QAxObject *pSheet = NULL;

ExcelImfo excel;

//初始化相关指针
void ExcelImfo::initExcelConfig()
{
    pApplication = new QAxObject;
    pWorkBooks = new QAxObject;
    pWorkBook = new QAxObject;
    pSheets = new QAxObject;
    pSheet = new QAxObject;
}

//新建excel
void ExcelImfo::newExcel(QString &fileName)
{
    pApplication->setControl("Excel.Application");
    pApplication->setProperty("Visible", false);           //不显示任何警告信息
    pApplication->dynamicCall("SetVisible(bool)",false);   //不显示窗体

    pWorkBooks = pApplication->querySubObject("WorkBooks");     //获取工作簿集合

    QFile file(fileName);
    if(!file.exists())
    {
        pWorkBooks->dynamicCall("Add");
        pWorkBook = pApplication->querySubObject("ActiveWorkBook");

        #ifdef EXCEL_WORK_DEBUG
        qDebug()<<"创建新文件"<<"printerData.xls";
        #endif
    }
    else
    {
        pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
        #ifdef EXCEL_WORK_DEBUG
        qDebug()<<"打开文件"<<"printerData.xls";
        #endif
    }

    pSheets = pWorkBook->querySubObject("Sheets");
    pSheet = pSheets->querySubObject("Item(int)", 1);

}

//2.增加1个Worksheet
void ExcelImfo::appendSheet(const QString &sheetName,int cnt)
{
    QAxObject *pLastSheet = pSheets->querySubObject("Item(int)", cnt);
    pSheets->querySubObject("Add(QVariant)", pLastSheet->asVariant());
    pSheet = pSheets->querySubObject("Item(int)", cnt);
    pLastSheet->dynamicCall("Move(QVariant)", pSheet->asVariant());
    pSheet->setProperty("Name", sheetName);
}

//3.向Excel单元格中写入数据
void ExcelImfo::setCellValue(int row, int column, const QString &value)
{
    QAxObject *pRange = pSheet->querySubObject("Cells(int,int)", row, column);
    pRange->dynamicCall("Value", value);
}

//5.保存Excel
void ExcelImfo::saveExcel(const QString &fileName)
{
    pWorkBook->dynamicCall("SaveAs(const QString &)",
    QDir::toNativeSeparators(fileName));
}

//6.释放Excel
void  ExcelImfo::freeExcel()
{
    if (pApplication != NULL)
    {
        pApplication->dynamicCall("Quit()");
        delete pApplication;
        pApplication = NULL;
    }
}

Qt excel操作相关的更多相关文章

  1. Qt ------ excel 操作

    写 excel // step1:连接控件 QAxObject* excel = new QAxObject(this); excel->setControl("Excel.Appli ...

  2. MFC -- Excel操作简介(基于VS2010)

    一.添加与 Excel 操作相关的头文件 项目 -> 类向导,在右上方有一个下拉栏,选择其中的 类型库中的MFC类(T),即可看到下图所示界面,选择“文件”选项,然后在下方的位置选项中添加本地文 ...

  3. python中的excel操作

    一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...

  4. Qt QAxObject操作excel文件过程总结(转):

    正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...

  5. Qt之操作Excel

    Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...

  6. Qt之excel 操作使用说明

    学习背景: 适合熟悉些qt开发,但是不是深入了解的开发者学习.具体实现(qt 5.1版本),office2007 Excel做验证,Win 7(64位),如有讲解有误,欢迎斧正! 一.简单介绍 QAx ...

  7. C# 对 Excel 的相关操作

    C# 对Excel的操作 学习自: 教练辅导 C# 对Excel的读取操作 我们需要额外添加引用: References 搜索Excel 这样我们的基础就添加完成了. 并且在using 中添加: us ...

  8. PyQt(Python+Qt)学习随笔:QTableWidgetItem项操作相关的flags、isSelected、checkState方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget中项操作相关的属性包括是否可用.是否可选中.是否可编辑.是否可复选.是否选中 ...

  9. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

  10. Excel报表开发(本节主要讲述导出到Excel操作)

    一.Excel导入到GridView以及数据库操作比较简单,这儿不做过多讲解,需要注意的有二点: 1.设置IMEX=1将强制混合数据转换为文本. 2.解决Excel驱动程序默认读取8行:将" ...

随机推荐

  1. mybatis全局配置:下划线转驼峰

    处理字段名和属性名不一致的情况: mybatis-config.xml配置 <settings> <setting name="mapUnderscoreToCamelCa ...

  2. WeNet调试

    运行: 参照:markdown 问题: CMake Error: Error: generator : Ninja Ninja:提高构建速度 wenet/runtime/libtorch/fc_bas ...

  3. Deer_GF之IOS出热更包

    Hi,今天介绍一下Deer_GF_Wolong,框架基于HybridCLR热更新技术,出IOS热更包 首先我们需要准备的工作: 环境:Mac Unity 版本 2021.3.1f1c1 热更方案:Hy ...

  4. UIAutomator API定位元素

    一.根据class name和text属性  包名不可省略 code= new UiSelector().text("我的").classname("android.wi ...

  5. 当越来越多的企业放弃使用FTP,该用什么更好的方式替代?

    FTP作为第一个完整的文件传输协议,在互联网技术发展史上具有浓墨重彩的意义,它解决了文件传输协议有无的问题,在全世界范围内被广泛使用.但如今,随着网络技术的发展,企业生产类型和生产资料的丰富化,文件传 ...

  6. VS2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误

    .net 6.0的项目,vs2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误,同样的项目在wi ...

  7. Windows10安装VMware

    系统环境: Windows 10 安装步骤: 1.下载vmware https://my.vmware.com/cn/web/vmware/downloads 2.安装(这里安装语言我选择的是中文) ...

  8. GitHub访问缓慢

    参考:https://www.cnblogs.com/liuchao888/p/11733996.html

  9. C#-out和ref 参数修饰符

    参数修饰符: 无参数修饰符:如果一个参数没有任何参数修饰符修饰,那么认为它是值传递,意味着方法内部收到的是实参数据的副本 out:输出参数由方法内部进行赋值,(引用传递),如果方法内部没有给被out修 ...

  10. 爬B站并保存成csv文件。提供数据

    """b站排行榜爬虫(scrapy)https://www.bilibili.com/ranking#!/all/0/0/7/爬取编号,标题,url,综合评分,播放量,评 ...