1:连接控件Excel
2: 打开工作簿(新建或打开Excel文件)
3: 打开sheet
4: 获取行数,列数
5: 读和写
6:设置样式
7: 保存文件
8:另存为
9:关闭文件1:连接控件Excel
QAxObject excel("Excel.Application");//连接Excel控件
excel.setProperty("Visible", false);// 不显示窗体
excel->setProperty("DisplayAlerts", false);  // 不显示任何警告信息。如果为true, 那么关闭时会出现类似"文件已修改,是否保存"的提示2: 打开工作簿(新建或打开Excel文件)QAxObject* workbooks = excel->querySubObject("WorkBooks"); // 获取工作簿集合2.1新建workbooks->dynamicCall("Add"); // 新建一个工作簿QAxObject* workbook = excel->querySubObject("ActiveWorkBook"); // 获取当前工作簿2.2打开QAxObject* workbook = workbooks->querySubObject("Open(const QString&)", ("C:/Users/lixc/Desktop/tt2.xlsx"));
3: 打开sheet
QAxObject* worksheet = workbook->querySubObject("WorkSheets(int)", 1); // 获取工作表集合的工作表1, 即sheet1
4: 获取行数,列数
    QAxObject* usedrange = worksheet->querySubObject("UsedRange"); // sheet范围int intRowStart = usedrange->property("Row").toInt(); // 起始行数   为1int intColStart = usedrange->property("Column").toInt();  // 起始列数 为1QAxObject *rows, *columns;rows = usedrange->querySubObject("Rows");  // 行columns = usedrange->querySubObject("Columns");  // 列int intRow = rows->property("Count").toInt(); // 行数int intCol = columns->property("Count").toInt();  // 列数qDebug()<<"intRowStart:"<<intRowStart<<"\t intColStart"<<intColStart;qDebug()<<"intRow"<<intRow<<"\t intCol"<<intCol;
5: 读和写
    5.1读取单元格方式1
    for(int i=intRowStart;i<intRow+intRowStart;i++){for(int j=intColStart;j<intCol+intColStart;j++){QAxObject* cell = worksheet->querySubObject("Cells(int, int)", i, j);  //获单元格值qDebug() << i << j << cell->dynamicCall("Value2()").toString();}}
    5.2读取单元格方式2
    QString X = "A2"; //设置要操作的单元格,A1QAxObject* cellX = worksheet->querySubObject("Range(QVariant, QVariant)", X); //获取单元格qDebug() << cellX->dynamicCall("Value2()").toString();
    5.3写单元格方式1
    cellX->dynamicCall("SetValue(conts QVariant&)", 100); // 设置单元格的值
    5.4写单元格方式2
    QAxObject *cell_5_6 = worksheet->querySubObject("Cells(int,int)", 5, 6);cell_5_6->setProperty("Value2", "Java");
6:设置样式(未测试)
    //获得单元格对象
    QAxObject* cell = worksheet->querySubObject("Cells(int, int)", i, j);
    6.1设置单元格内容的显示setProperty()
       cell->setProperty("Value", "Java C++ C# PHP Perl Python Delphi Ruby");  //设置单元格值
       cell->setProperty("RowHeight", 50);  //设置单元格行高
       cell->setProperty("ColumnWidth", 30);  //设置单元格列宽
       cell->setProperty("HorizontalAlignment", -4108); //左对齐(xlLeft):-4131  居中(xlCenter):-4108  右对齐(xlRight):-4152
       cell->setProperty("VerticalAlignment", -4108);  //上对齐(xlTop)-4160 居中(xlCenter):-4108  下对齐(xlBottom):-4107
       cell->setProperty("WrapText", true);  //内容过多,自动换行
       cell->dynamicCall("ClearContents()");  //清空单元格内容
    6.2设置单元格的样式 QAxObject* interior = cell->querySubObject("Interior");
       QAxObject* interior = cell->querySubObject("Interior");
       interior->setProperty("Color", QColor(0, 255, 0));   //设置单元格背景色(绿色)QAxObject* border = cell->querySubObject("Borders");border->setProperty("Color", QColor(0, 0, 255));   //设置单元格边框色(蓝色)QAxObject *font = cell->querySubObject("Font");  //获取单元格字体font->setProperty("Name", QStringLiteral("华文彩云"));  //设置单元格字体font->setProperty("Bold", true);  //设置单元格字体加粗font->setProperty("Size", 20);  //设置单元格字体大小font->setProperty("Italic", true);  //设置单元格字体斜体font->setProperty("Underline", 2);  //设置单元格下划线font->setProperty("Color", QColor(255, 0, 0));  //设置单元格字体颜色(红色)
    6.3合并拆分单元格
       QString merge_cell;merge_cell.append(QChar(3 - 1 + 'A'));  //初始列merge_cell.append(QString::number(5));  //初始行merge_cell.append(":");merge_cell.append(QChar(5 - 1 + 'A'));  //终止列merge_cell.append(QString::number(8));  //终止行QAxObject *merge_range = work_sheet->querySubObject("Range(const QString&)", merge_cell);
       //merge_range 可以设置单元格属性
       merge_range->setProperty("MergeCells", true);  //合并单元格//merge_range->setProperty("MergeCells", false);  //拆分单元格
7: 保存文件
    7.1保存当前文件(根据已经打开的工作簿,如果工作簿是新建的文件保存默认存储于Document文件夹中)
     workbook->dynamicCall("Save()");  //保存文件7.2指定目录存储
    QString fileName = QFileDialog::getSaveFileName(NULL, QStringLiteral("保存文件"), QStringLiteral("excel名称"), QStringLiteral("EXCEL(*.xlsx)"));//QString fileName=QStringLiteral("C:/Users/lixc/Desktop/excel名称.xlsx");workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(fileName)); //保存到filepath// 注意一定要用QDir::toNativeSeparators, 将路径中的"/"转换为"\", 不然一定保存不了
9:关闭文件
     workbook->dynamicCall("Close (Boolean)", false);  //关闭文件
     excel.dynamicCall("Quit(void)");  //退出
     如果excel存在于堆上,注意手动释放
     delete excel;
注意:调试过程中出现异常:需要打开任务管理器,结束Excle进程
//获得单元格对象
QAxObject* cell = worksheet->querySubObject("Cells(int, int)", i, j);
代码下载

Qt操作excel基本方法相关推荐

  1. Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office

    文章目录 1.Qt Xlsx库简介 2. 用法①:使用Xlsx作为Qt5的附加模块 2.1 构建模块 2.2 下载QtXlsx源代码 2.3 为编译器安装Xlsx模块 2.3.1 打开 MinGW 7 ...

  2. python怎么用excel-Python使用xlwt模块操作Excel的方法详解

    本文实例讲述了Python使用xlwt模块操作Excel的方法.分享给大家供大家参考,具体如下: 部分摘自官网文档. 该模块安装很简单 $ pip install xlwt 先来个简单的例子: #!/ ...

  3. c++ qt 操作Excel 实现冻结窗格的功能。

    使用qt操作Excel的一些基本操作内容我就不介绍了,你们搜一下就可以了,如果不想麻烦可以去下面这个链接地址看一下. qt操作Excel基础使用技巧 本文主要讲一个知识点,就是使用qt操作Excel实 ...

  4. 用VBS操作Excel常见方法总结!

    系列文章分类 C#专栏.VBS专栏.JAVA 专栏.IDEA 专栏 用VBS操作Excel常见方法总结 前言 一.实现代码 二.实现代码 三.实现代码 四.实现VBS操作Excel 总结 前言 vbs ...

  5. python设置excel自动换行_python操作excel的方法(xlsxwriter包的使用)

    本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下 xlsxwriter包的安装 pip install xlsxwriter Workbook类 创建一个exce ...

  6. QT 操作excel 类封装(转载)

    QT 操作excel 类封装(转载) 原链接:http://blog.csdn.net/liliming1234/article/details/7054941 pro file [plain]  v ...

  7. Qt操作EXCEL设置自动筛选

    Qt可以通过使用QAxObject操作excel,具体的方法这里不做介绍.假设获取到sheet的指针 QAxObject* workSheet; 设置第一行添加自动筛选. QAxObject* ran ...

  8. C#操作excel(多种方法比较)

    我们在做excel资料的时候,通常有以下方法. 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上. 代码 public static string strCon = & ...

  9. Qt操作Excel表格

    简单介绍: 文章内使用的是Windows系统的ActiveX对象(QAxObject)操作Excel. 相关参考: 微软vba开发指南:https://docs.microsoft.com/zh-cn ...

最新文章

  1. 太牛了!30 年开源老兵,10 年躬耕 OpenStack,开源 1000 万行核心代码!
  2. 原生javascript 元素依次掉落及上升
  3. JAVA面试题(part3)--if条件语句
  4. gre考试能用计算机么,新GRE考试必须知道的九大考场问题
  5. Spring 知识点详解
  6. slot多作用域 vue_vue 深度长文之slot 篇
  7. 是什么原因让你选择做程序员
  8. Web 学习之跨域问题及解决方案
  9. modelform 对象和model之间的关系
  10. 深入浅出数据分析(美 完整中文版)米尔顿
  11. SPSS基本数据处理(二)
  12. 小程序分包Error: 分包大小超过限制,main package source
  13. 检验入参合法性有哪些_参数检验和非参数检验是什么意思
  14. 全国区号码表(绝对全)
  15. JNCIE考试准备指南(ITAA 2014版)
  16. tomcat在45秒内没有启动,启动超时
  17. Unity PBR材质
  18. 计算概论(一)计算起源、图灵机、计算原理
  19. “九把锁”还是春秋时期的黄金密道
  20. Gitee 图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源

热门文章

  1. java生成excel下载_java生成excel并下载功能
  2. 未来固码市场的可持续发展性
  3. Linux出现ping不通外网、xshell解决方案
  4. 分享一些前端开发者需要知道的 API 接口常识
  5. WinBUGS对多元随机波动率SV模型:贝叶斯估计与模型比较
  6. OpenCV 进行图像相似度对比的几种办法-【顺带附py对比学习案例】
  7. speedtest 测试服务器上传下载速度
  8. 作为测绘人,你必须知道的几大坐标系基础知识!
  9. 在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码
  10. 玩转NVIDIA Jetson Xavier NX