Qt操作excel基本方法
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基本方法相关推荐
- 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 ...
- python怎么用excel-Python使用xlwt模块操作Excel的方法详解
本文实例讲述了Python使用xlwt模块操作Excel的方法.分享给大家供大家参考,具体如下: 部分摘自官网文档. 该模块安装很简单 $ pip install xlwt 先来个简单的例子: #!/ ...
- c++ qt 操作Excel 实现冻结窗格的功能。
使用qt操作Excel的一些基本操作内容我就不介绍了,你们搜一下就可以了,如果不想麻烦可以去下面这个链接地址看一下. qt操作Excel基础使用技巧 本文主要讲一个知识点,就是使用qt操作Excel实 ...
- 用VBS操作Excel常见方法总结!
系列文章分类 C#专栏.VBS专栏.JAVA 专栏.IDEA 专栏 用VBS操作Excel常见方法总结 前言 一.实现代码 二.实现代码 三.实现代码 四.实现VBS操作Excel 总结 前言 vbs ...
- python设置excel自动换行_python操作excel的方法(xlsxwriter包的使用)
本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下 xlsxwriter包的安装 pip install xlsxwriter Workbook类 创建一个exce ...
- QT 操作excel 类封装(转载)
QT 操作excel 类封装(转载) 原链接:http://blog.csdn.net/liliming1234/article/details/7054941 pro file [plain] v ...
- Qt操作EXCEL设置自动筛选
Qt可以通过使用QAxObject操作excel,具体的方法这里不做介绍.假设获取到sheet的指针 QAxObject* workSheet; 设置第一行添加自动筛选. QAxObject* ran ...
- C#操作excel(多种方法比较)
我们在做excel资料的时候,通常有以下方法. 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上. 代码 public static string strCon = & ...
- Qt操作Excel表格
简单介绍: 文章内使用的是Windows系统的ActiveX对象(QAxObject)操作Excel. 相关参考: 微软vba开发指南:https://docs.microsoft.com/zh-cn ...
最新文章
- 太牛了!30 年开源老兵,10 年躬耕 OpenStack,开源 1000 万行核心代码!
- 原生javascript 元素依次掉落及上升
- JAVA面试题(part3)--if条件语句
- gre考试能用计算机么,新GRE考试必须知道的九大考场问题
- Spring 知识点详解
- slot多作用域 vue_vue 深度长文之slot 篇
- 是什么原因让你选择做程序员
- Web 学习之跨域问题及解决方案
- modelform 对象和model之间的关系
- 深入浅出数据分析(美 完整中文版)米尔顿
- SPSS基本数据处理(二)
- 小程序分包Error: 分包大小超过限制,main package source
- 检验入参合法性有哪些_参数检验和非参数检验是什么意思
- 全国区号码表(绝对全)
- JNCIE考试准备指南(ITAA 2014版)
- tomcat在45秒内没有启动,启动超时
- Unity PBR材质
- 计算概论(一)计算起源、图灵机、计算原理
- “九把锁”还是春秋时期的黄金密道
- Gitee 图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源