2024年Go最新QAxObject 读写 excel_qaxobject写数据,Golang黑科技实现原理揭秘

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值