QT 操作 excel 教程
前言:环境 win7 64位,QT4.8.5,QT Creator
- 在 .pro 文件中加入语句"CONFIG+=qaxcontainer";
- 源码如下:
//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QtGui>
#include <QWidget>
#include <QAxObject>
#include <QAxWidget>
#include <QFileDialog>
#include <QObject>
#include <iostream>
using namespace std; int main(int argc, char *argv[])
{
QApplication a(argc, argv); QString filepath=QFileDialog::getSaveFileName(NULL,QObject::tr("Save orbit"),"/untitled.xls",QObject::tr("Microsoft Office 2007 (*.xlsx)"));//获取保存路径
QList<QVariant> allRowsData;//保存所有行数据
allRowsData.clear();
// mLstData.append(QVariant(12));
if(!filepath.isEmpty()){
QAxObject *excel = new QAxObject("Excel.Application");//连接Excel控件
excel->dynamicCall("SetVisible (bool Visible)",false);//不显示窗体
excel->setProperty("DisplayAlerts", true);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示
QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合
workbooks->dynamicCall("Add");//新建一个工作簿
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿
QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合
QAxObject *worksheet = worksheets->querySubObject("Item(int)",);//获取工作表集合的工作表1,即sheet1 for(int row = ; row <= ; row++)
{
QList<QVariant> aRowData;//保存一行数据
for(int column = ; column <= ; column++)
{
aRowData.append(QVariant(row*column));
}
allRowsData.append(QVariant(aRowData));
} QAxObject *range = worksheet->querySubObject("Range(const QString )", "A1:B1000");
range->dynamicCall("SetValue(const QVariant&)",QVariant(allRowsData));//存储所有数据到 excel 中,批量操作,速度极快
range->querySubObject("Font")->setProperty("Size", );//设置字号 QAxObject *cell = worksheet->querySubObject("Range(QVariant, QVariant)","A1");//获取单元格
cell = worksheet->querySubObject("Cells(int, int)", , );//等同于上一句
cell->dynamicCall("SetValue(const QVariant&)",QVariant());//存储一个 int 数据到 excel 的单元格中
cell->dynamicCall("SetValue(const QVariant&)",QVariant("abc"));//存储一个 string 数据到 excel 的单元格中 QString str = cell->dynamicCall("Value2()").toString();//读取单元格中的值
cout<<"\nThe value of cell is "<<str.toStdString()<<endl; /*QAxObject *font = cell->querySubObject("Font");
font->setProperty("Name", itemFont.family()); //设置单元格字体
font->setProperty("Bold", itemFont.bold()); //设置单元格字体加粗
font->setProperty("Size", itemFont.pixelSize()); //设置单元格字体大小
font->setProperty("Italic",itemFont.italic()); //设置单元格字体斜体
font->setProperty("Underline", itemFont.underline()); //设置单元格下划线
font->setProperty("Color", item->foreground().color()); //设置单元格字体颜色*/
worksheet->querySubObject("Range(const QString&)", "1:1")->setProperty("RowHeight", );//调整第一行行高 workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。
workbook->dynamicCall("Close()");//关闭工作簿
excel->dynamicCall("Quit()");//关闭excel
delete excel;
excel=NULL;
}
return a.exec();
}
参考资料:http://blog.csdn.net/li494816491/article/details/50274305
QT 操作 excel 教程的更多相关文章
- QT操作EXCEL
介绍一下最基本的QT对EXCEL的读写操作. 声明:转载于:http://blog.csdn.net/czyt1988/article/details/52121360 在使用QT的操作数据库的时候, ...
- Qt 操作Excel
Qt对Excel的数据读/写操作没有现存的类,需要使用QAxObject,下面是从网上下载下来的一个封装好的类,感觉还可以,一般情况下够用,拿来给大家分享. 头文件: #ifndef EXCELENG ...
- qt 操作excel表格
自己编写的一个Qt C++类,用于操作excel表格,在Qt中操作excel需在.pro中增加CONFIG+=qaxcontainer配置. 1.打开Excel:objExcel = new QAx ...
- QT操作Excel(通过QAxObject使用了OLE,前提是本地安装了Excel)
新建QT GUI项目,在选择选项中勾选ActiveQT Container. #include <qaxobject.h> QAxObject *obj = new QAxObject(& ...
- python 包之 xlwt 操作 excel 教程
一.安装 pip install xlwt 二.创建表格并写入 创建表格,设置sheet名称 写入指定行列的数据,将表格进行保存 import xlwt # 创建一个workbook并设置编码 wor ...
- qt操作excel報錯解決
如果電腦上沒有office,需要判斷,否则,会报错 onecore\com\combase\catalog\catalog.cxx()\combase.dll!00007FFF1DF823CB: (c ...
- Qt 操作excel报错
onecore\com\combase\catalog\catalog.cxx(2376)\combase.dll!00007FFF1DF823CB: (caller: 00007FFF1DED3A1 ...
- Qt之操作Excel
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...
- POI操作Excel(xls、xlsx)
阿帕奇官网:http://poi.apache.org/ POI3.17下载:http://poi.apache.org/download.html#POI-3.17 POI操作Excel教程(易百教 ...
随机推荐
- 455. Assign Cookies.md
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- Raspberry Pi中可用的Go IDE:liteide
p { margin-bottom: 0.25cm; line-height: 120% } a:link { } Raspberry Pi中可用的Go IDE:liteide p { margin- ...
- Jmeter 创建FTP测试计划
FTP服务主要提供上传和下载功能. 操作步骤: 1.创建一个线程组 2.线程组--->添加--->配置元件--->FTP请求缺省值:输入服务器名称或IP. 3.线程组--->添 ...
- [编织消息框架][JAVA核心技术]动态代理应用6-设计生成类
上篇介绍到rpc可以使用接口与实现类来约束书写 根据接口用javassist生成两个代理类 1.sendProxy 发送处理,调用方式可以是远程/本地 2.receiveProxy 接收处理,内部调用 ...
- ActiveReports 6:如何升级旧版本的项目
如果现在的项目使用的是ActiveReports for .NET 3.0,那么有两种升级方式: 一是使用ActiveReports 6.0附带的转换工具(参见下面"升级ActiveRepo ...
- (python)leetcode刷题笔记03 Longest Substring Without Repeating Characters
3. Longest Substring Without Repeating Characters Given a string, find the length of the longest sub ...
- HTTPS、证书与使用Charles抓包
.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 14.0px; font-family: "Helvetica Neue", & ...
- 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器
北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 论述当下网络时间同步 ...
- 【旋转卡壳+凸包】BZOJ1185:[HNOI2007]最小矩形覆盖
1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1945 Solve ...
- 【二分图】ZJOI2007小Q的游戏
660. [ZJOI2007] 小Q的矩阵游戏 ★☆ 输入文件:qmatrix.in 输出文件:qmatrix.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] ...