QT 操作 excel 教程
2018-06-17 21:44:52来源:未知 阅读 ()
前言:环境 win7 64位,QT4.8.5,QT Creator
- 在 .pro 文件中加入语句"CONFIG+=qaxcontainer";
- 源码如下:
1 //main.cpp 2 #include "mainwindow.h" 3 #include <QApplication> 4 #include <QtGui> 5 #include <QWidget> 6 #include <QAxObject> 7 #include <QAxWidget> 8 #include <QFileDialog> 9 #include <QObject> 10 #include <iostream> 11 using namespace std; 12 13 14 int main(int argc, char *argv[]) 15 { 16 QApplication a(argc, argv); 17 18 QString filepath=QFileDialog::getSaveFileName(NULL,QObject::tr("Save orbit"),"/untitled.xls",QObject::tr("Microsoft Office 2007 (*.xlsx)"));//获取保存路径 19 QList<QVariant> allRowsData;//保存所有行数据 20 allRowsData.clear(); 21 // mLstData.append(QVariant(12)); 22 if(!filepath.isEmpty()){ 23 QAxObject *excel = new QAxObject("Excel.Application");//连接Excel控件 24 excel->dynamicCall("SetVisible (bool Visible)",false);//不显示窗体 25 excel->setProperty("DisplayAlerts", true);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示 26 QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合 27 workbooks->dynamicCall("Add");//新建一个工作簿 28 QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿 29 QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合 30 QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1 31 32 for(int row = 1; row <= 1000; row++) 33 { 34 QList<QVariant> aRowData;//保存一行数据 35 for(int column = 1; column <= 2; column++) 36 { 37 aRowData.append(QVariant(row*column)); 38 } 39 allRowsData.append(QVariant(aRowData)); 40 } 41 42 QAxObject *range = worksheet->querySubObject("Range(const QString )", "A1:B1000"); 43 range->dynamicCall("SetValue(const QVariant&)",QVariant(allRowsData));//存储所有数据到 excel 中,批量操作,速度极快 44 range->querySubObject("Font")->setProperty("Size", 30);//设置字号 45 46 QAxObject *cell = worksheet->querySubObject("Range(QVariant, QVariant)","A1");//获取单元格 47 cell = worksheet->querySubObject("Cells(int, int)", 1, 1);//等同于上一句 48 cell->dynamicCall("SetValue(const QVariant&)",QVariant(123));//存储一个 int 数据到 excel 的单元格中 49 cell->dynamicCall("SetValue(const QVariant&)",QVariant("abc"));//存储一个 string 数据到 excel 的单元格中 50 51 QString str = cell->dynamicCall("Value2()").toString();//读取单元格中的值 52 cout<<"\nThe value of cell is "<<str.toStdString()<<endl; 53 54 /*QAxObject *font = cell->querySubObject("Font"); 55 font->setProperty("Name", itemFont.family()); //设置单元格字体 56 font->setProperty("Bold", itemFont.bold()); //设置单元格字体加粗 57 font->setProperty("Size", itemFont.pixelSize()); //设置单元格字体大小 58 font->setProperty("Italic",itemFont.italic()); //设置单元格字体斜体 59 font->setProperty("Underline", itemFont.underline()); //设置单元格下划线 60 font->setProperty("Color", item->foreground().color()); //设置单元格字体颜色*/ 61 worksheet->querySubObject("Range(const QString&)", "1:1")->setProperty("RowHeight", 60);//调整第一行行高 62 63 workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。 64 workbook->dynamicCall("Close()");//关闭工作簿 65 excel->dynamicCall("Quit()");//关闭excel 66 delete excel; 67 excel=NULL; 68 } 69 return a.exec(); 70 }
参考资料:http://blog.csdn.net/li494816491/article/details/50274305
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:cin.ignore()的用法
- QTableView与Excel之间的文件打开与保存 2020-05-26
- 第七章 1.输入输出与模板 2020-04-04
- 数据结构-线性表 2020-03-28
- c语言该怎么入门?C语言入门教程(非常详细) 2020-02-17
- 二叉树(1)二叉树基本操作通用接口 2020-02-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash