网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
QAxObject *excel;
QAxObject *workbooks;
QAxObject *workbook;
QAxObject *worksheets;
QAxObject *worksheet;
QAxObject *range;
QAxObject *cell;
QList<QVariant> allRowData;
};
#endif // MAINWINDOW_H
//mainwindow.cpp
#include “mainwindow.h”
#include “ui_mainwindow.h”
QString path = “E:/test.xlsx”;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//连接excel
excel = new QAxObject("Excel.Application");
//是否可视化excel
excel->dynamicCall("SetVisible(bool Visible)", true);
//是否弹出警告窗口
excel->setProperty("DisplayAlerts", false);
//获取工作簿集合
workbooks = excel->querySubObject("WorkBooks");
//新建一个工作簿
workbooks->dynamicCall("Add");
//获取当前工作簿
workbook = excel->querySubObject("ActiveWorkBook");
//获取工作表格集合
worksheets = workbook->querySubObject("Sheets");
//获取当前工作表格1,即sheet1
worksheet = worksheets->querySubObject("Item(int)", 1);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Write_clicked()
{
//产生数据
for(int row = 1; row <=1000; row++) {
QList aRowData;
for(int column = 1; column <= 2; column++) {
aRowData.append(QVariant(row*column));
}
allRowData.append(QVariant(aRowData));
}
//选取范围
range = worksheet->querySubObject("Range(const QString)", "A1:B1000");
//批量写入
range->dynamicCall("SetValue(const QVariant&", QVariant(allRowData));
//设置字体大小
range->querySubObject("Font")->setProperty("Size", 30);
//获取单元格
cell = worksheet->querySubObject("Cells(int, int", 1, 1);
//储存一个字符串数据至表格
cell->dynamicCall("setValue(const QVariant&", QVariant("abc"));
//读取单元格数据
QString str = cell->dynamicCall("Value2()").toString();
qDebug()<<"The value of cell is "<< str <<endl;
//调整行高
worksheet->querySubObject("Range(const QString&", "1:1")->setProperty("RowHeight", 60);
//保存至文件注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。
workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(path));
workbook->dynamicCall("Close()");
}
void MainWindow::on_Quit_clicked()
{
excel->dynamicCall("Quit()");
}
void MainWindow::on_read_clicked()
{
//获取工作簿集合
workbooks = excel->querySubObject(“WorkBooks”);
//打开一个工作簿
workbooks->dynamicCall(“Open(const QString&)”, QDir::toNativeSeparators(path));
//获取当前工作簿
workbook = excel->querySubObject(“ActiveWorkBook”);
//获取工作表格集合
worksheets = workbook->querySubObject(“Sheets”);
//获取当前工作表格1,即sheet1
worksheet = worksheets->querySubObject(“Item(int)”, 1);
QVariant var;
//读取当前工作表所有数据
QAxObject *usedRange = worksheet->querySubObject("UsedRange");
var = usedRange->dynamicCall("Value");
QVariantList varRows = var.toList();
const int rowCount = varRows.size();
QVariantList rowData;
for(int i = 0; i<rowCount; ++i) {
rowData = varRows[i].toList();
qDebug()<< rowData.at(1);
}
workbook->dynamicCall("Close()");
}
QAxObject* querySubObject(const char *name, QList &vars);
![img](https://img-blog.csdnimg.cn/img_convert/1709e1f788cc979c064de9dc0c655024.png)
![img](https://img-blog.csdnimg.cn/img_convert/8b66c0751e49a6024fd712ac7c026970.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**