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教程(易百教 ...
随机推荐
- vue2 vue-rout
vue 2.0的路由比起1.0简单了许多,分为以下几个步骤: 1.创建路由块和视图块: to里面是要切换的路径名称 <div id="app"> <div> ...
- String 转化成java.sql.Date和java.sql.Time
String类型转换成java.sql.Date类型不能直接进行转换,首先要将String转换成java.util.Date,在转化成java.sql.Date 请点击---> java架构 ...
- Android测试:Building Local Unit Tests
原文:https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 如果你的单元测试没有依赖或者只 ...
- unity创建和加载AssetBundle
先说一下为什么要使用AssetBundle吧,以前做东西一直忽略这个问题,现在认为这个步骤很重要,代码是次要的,决策和为什么这样搞才是关键. 一句话概括吧,AssetBundle实现了资源与服务分离, ...
- 搭建PHP本地服务器(XAMPP)
1.下载XAMPP集成包 https://www.apachefriends.org/download.html2.启动前修改配置文件httpd.conf的端口号,例如:Listen 80803.启动 ...
- 日语编程语言"抚子" - 第三版特色初探
原址: https://zhuanlan.zhihu.com/p/30800689 原文: 日语编程语言"抚子" - 第三版特色初探 它山之石可以攻玉. 学习其他的母语编程语言, ...
- ffempg支持文件解码
在做一个数据通道 要求有两个 1.支持打开实时流,解码得到图片 2.支持打开视频文件,得到解码图片 第一个要求前任已经实现 bool FfmpegStreamChr::Open(const char ...
- Java中使用LocalDate根据日期来计算年龄
Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat ...
- DBCC命令
DBCC SQLMGRSTATS 用于产生3个不同的值,这些值用在你想查看高速缓存在ad-hoc和预编译的TSQL语句中是如何工作的 Memory Used(8K Pages):若内存页的数量非常大, ...
- JavaScript ES6中export及export default的区别
相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函 ...