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()); //设置单元格字