问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样用QT导入导出excel 求代码

发布网友 发布时间:2022-04-30 04:28

我来回答

1个回答

热心网友 时间:2022-04-11 03:09

我的QT版本是5.3

//下面是代码
void MainWindow:lot2Excel(QString title, QString tablename){
QAxObject *excel = new QAxObject;
QVector< QString> SubTitle;
SubTitle.fill("", 2);
SubTitle[0] = tr("时间");
SubTitle[1] = tr("温度");

if (excel->setControl("Excel.Application")) //连接Excel控件
{
excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体
excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示

QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合
workbooks->dynamicCall("Add");//新建一个工作簿
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿
QAxObject *worksheet = workbook->querySubObject("Worksheets(int)", 1);
int Column_Cnt = FBGcfg.History.self_FBGHistory2D.size() * SubTitle.size();

//标题行
QAxObject *title1=worksheet->querySubObject("Cells(int,int)", 1, 1);
title1->dynamicCall("SetValue(const QString&)", title);
title1->querySubObject("Font")->setProperty("Size", 18);
//合并标题行
QString cellTitle;
cellTitle.append("A1:");
cellTitle.append(QChar(Column_Cnt - 1 + 'A'));
cellTitle.append(QString::number(1));
QAxObject *range1 = worksheet->querySubObject("Range(const QString&)", cellTitle);
range1->setProperty("WrapText", true);                   /* 文本自动换行 */
range1->setProperty("MergeCells", true);                 /* 合并单元格 */
range1->setProperty("HorizontalAlignment", -4108);       //xlCenter
range1->setProperty("VerticalAlignment", -4108);         //xlCenter
/* 第二行标题 */
for(int i=0; i<FBGcfg.History.self_FBGHistory2D.size(); i++){
int subID = 0;
for(subID = 0; subID < FBGcfg.self_FBGCnt; subID ++){
if(FBGcfg.self_FBGID[subID] == FBGcfg.History.self_FBGHistory2D[i])
break;
}
if(subID == FBGcfg.self_FBGCnt)             /* 查询历史表格出错 */
return;
QAxObject *title2 = worksheet->querySubObject("Cells(int,int)", 2, i*2 + 1);
title2->dynamicCall("SetValue(const QString&)", FBGcfg.self_FBGNAME[subID] + QString::number(FBGcfg.History.self_FBGHistory2D[i]));
title2->querySubObject("Font")->setProperty("Size", 14);
title2->querySubObject("Interior")->setProperty("Color",QColor(141, 182, 205));
}
/* 第二行标题合并单元格 */
for(int i = 0; i < Column_Cnt; i+=2){
QString cellTitle2;
cellTitle2.append(QChar(i + 'A')).append("2:").append(QChar(i + 1 + 'A')).append("2");
QAxObject *range2 = worksheet->querySubObject("Range(const QString&)", cellTitle2);
range2->setProperty("WrapText", true);                   /* 文本自动换行 */
range2->setProperty("MergeCells", true);                 /* 合并单元格 */
}

/* 第三行标题 */
for(int i = 0; i < Column_Cnt; i++){
QAxObject *colwidth;
QAxObject *title3 = worksheet->querySubObject("Cells(int,int)", 3, i+1);
QString lie;
lie = lie.append(QChar(i + 'A')).append(":").append(QChar(i + 'A'));
colwidth = worksheet->querySubObject("Columns(const QString&)", lie);
if(i%2){
colwidth->setProperty("ColumnWidth", 11);
title3->dynamicCall("SetValue(const QString&)", SubTitle[1]);
}else{
colwidth->setProperty("ColumnWidth", 22);
title3->dynamicCall("SetValue(const QString&)", SubTitle[0]);
}
title3->querySubObject("Font")->setProperty("Size", 12);
title3->querySubObject("Interior")->setProperty("Color",QColor(191, 191, 191));
}

//调整行高 第一行30 第二行25 第三行20
worksheet->querySubObject("Range(const QString&)", "1:1")->setProperty("RowHeight", 30);
worksheet->querySubObject("Range(const QString&)", "2:2")->setProperty("RowHeight", 25);
worksheet->querySubObject("Range(const QString&)", "3:3")->setProperty("RowHeight", 20);

/* 数据区 */
int MaxSize = 0;
QAxObject *CellDataTime = NULL;
QAxObject *CellDataTmp = NULL;
for(int i = 0; i < History_BackUp.size(); i++){
if(History_BackUp[i][0].size() > MaxSize)
MaxSize = History_BackUp[i][0].size();
for(int j = 0; j < History_BackUp[i][0].size(); j ++){
QString timeStr = QDateTime::fromMSecsSinceEpoch(History_BackUp[i][0][j] * 1000.0).toString("yyyy-MM-dd hh:mm:ss");
CellDataTime = worksheet->querySubObject("Cells(int,int)", j + 4, i*2 + 1);
if(CellDataTime)
CellDataTime->dynamicCall("SetValue(const QVariant&)",timeStr);
CellDataTmp = worksheet->querySubObject("Cells(int,int)", j + 4, i*2 + 2);
if(CellDataTmp)
CellDataTmp->dynamicCall("SetValue(const QVariant&)",QString::number(History_BackUp[i][1][j], 'f', 2));
}
}

//画框线
QString lrange;
lrange.append("A2:");
lrange.append(Column_Cnt - 1 + 'A').append(QString::number(MaxSize + 3));
QAxObject *rangeline = worksheet->querySubObject("Range(const QString&)", lrange);
rangeline->querySubObject("Borders")->setProperty("LineStyle", QString::number(1));
rangeline->querySubObject("Borders")->setProperty("Color", QColor(0, 0, 0));
rangeline->setProperty("HorizontalAlignment", -4108);       //xlCenter
rangeline->setProperty("VerticalAlignment", -4108);         //xlCenter

//保存当前目录为我的文档目录,所以要用全路径
workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(tablename));
workbook->dynamicCall("Close()");//关闭工作簿
excel->dynamicCall("Quit()");//关闭excel
delete excel;
excel=NULL;
}
}

//上面是代码,希望对你有帮助

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 QT怎样读写excel-CSDN论坛 qt 打开excel SQL语句中Parameters.AddWithValue的参数如何区分大小写? B85主板能插32G内存吗 B85-HD3主板可以放单条8G内存吗,还是放2条4G的好,放单条8G只是以后好升级16G 技嘉B85主板,i5-4690,16G内存,AMD76704G显卡这配置可以玩什么单机游戏? 华硕b85 pro gamer主板可以插四个4g内存条组成16g吗 e3 1231 v3 gt730 显卡 b85主板 16g内存 金士顿120g固态拼装成主机好吗? 华硕b85-plus能用4根单条16G的么 B85M-D3V这个主板最大支持16G,是怎么意思,我可以同时插两个16G的内存吗?还是说必须只能最多两个8G? 技嘉b85主板 CPU:英特尔i3 4160 配了个16GB内存是不太大了?对电脑有影响吗 B85主板装16G内存是用8G×2还是4G×4? B85M-V5 PLUS主板可以用两条16G内存吗 帮我取一个好听的百度id名 求好听的网名 id 剑来好听的句子 王者荣耀如果有一个id叫剑来值多少钱? 为什么女人会摸男人大腿?? cctv5汽车广告,男英文歌,有个美女还摸了腿,求那个广告的背景音乐 顺义工商局地址在哪儿,办营业执照 houdini怎么用FLIP制作水龙头慢慢滴水 houdini flip 怎么处理粒子在模型内部碰撞? houdini flip 怎么不自动下落 Parameters.Add方法和using System.Data.SqlClient; using System.Data.Common;的关系 houdini pyro怎么变速 微信好友拉我吃鸡,我也接受了,她列表里有我,我这里为什么没有他 求传统的魔修、鬼修、妖修、尸修的等级划分,谢谢! 端午节的艾叶什么时候割? 小说中。修炼体系和等级体系一样吗? 大魔王中修魔九重境界和异界职业等级对比 高分求尸修、鬼修、妖修、魔修的等级界定,最好能详细写清每一等级的特征。 dress与skirt的用法区别 想写一本修真小说,主角是由人修变成魔修,请问魔修的等级划分和人修一样吗?人修与魔修又有什么区别? 关于修魔者的境界划分的问题 修仙、修魔、修妖的修行阶段各为那几阶段 吞天战尊境界划分 星耀幻世里的修真等级划分?? 英语“长裙”怎么说? 凡人修仙里的佛宗,儒宗,妖修,魔修的境界 短裙的英文怎么写