首先说说方法
- 阅读
Microsoft Excel 开发人员参考手册
- 终极方法: 录制宏 看宏代码 模仿操作
记录一些操作
QAxObject *excel = new QAxObject();
QAxObject *work_books;
QAxObject *work_book;
QAxObject *work_sheets;
QAxObject *work_sheet;
QAxObject *work_cell;
QAxObject *obj;
if (excel->setControl("Excel.Application")) { // 使用office
LI << "使用Office";
} else if (excel->setControl("ket.Application")) { // 使用WPS
LI << "使用WPS";
} else {
QMessageBox::warning(this, tr("错误"), tr("未安装Office或WPS"));
return;
}
excel->setProperty("Visible", true); // 设置为可见
work_books = excel->querySubObject("WorkBooks"); // 操作表
work_books->dynamicCall("Add"); // 新建表格
excel->setProperty("Caption", "新建")) { // 设置主窗口标题栏中显示的名称
work_book = excel->querySubObject("ActiveWorkBook");
//work_book = work_books->querySubObject("Open(const QString&)", QDir::toNativeSeparators(template_path + template_name)); // 打开文件
work_sheets = work_book->querySubObject("Sheets");
work_sheet = work_sheets->querySubObject("Item(int)", 1);
work_sheet->setProperty("Name", "Datas"); //设置工作表名称
QVariantList table; // 区域数据
QVariantList line; // 区域数据的某行
table << QVariant(line); // 将一行放入区域数据
QString range = QStringLiteral("%1%2:%3%4").arg(Util::excelHCalc(1)).arg(1).arg(Util::excelHCalc(10)).arg(10); // A1:J10
work_cell = work_sheet->querySubObject("Range(const QString&)", range); // 获取区域
work_cell->setProperty("Value", QVariant(table)); // 填入区域数据
obj = work_cell->querySubObject("Font"); // 获取字体属性
obj->setProperty("Name", "新宋体"); // 设置字体
obj->setProperty("Size", "12"); // 设置字号
delete obj;
obj = work_cell->querySubObject("Interior"); // 获取单元格
obj->setProperty("Color", color); // 设置单元格颜色
delete obj;
delete work_cell;
work_cell = Q_NULLPTR;
// 冻结首行
excel->setControl("Excel.Application")
t = excel->querySubObject("ActiveWindow");
t->setProperty("SplitColumn", 0);
t->setProperty("SplitRow", 1);
t->setProperty("FreezePanes", true);
delete t;
work_book->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators("路径")); // 另存为
//excel->dynamicCall("Quit(void)"); // 关闭excel
// 一定要记得删除 不然一直在后台运行 占用内存
delete work_sheet; work_sheet = Q_NULLPTR;
delete work_sheets; work_sheets = Q_NULLPTR;
delete work_book; work_book = Q_NULLPTR;
delete work_books; work_books = Q_NULLPTR;
delete excel; excel = Q_NULLPTR;
您好!想请教一下qt是否可以直接调用excel自定义宏呢?我想qt传给excel数据,但是不立马显示,等到我在excel中操作一些步骤再显示,不知您能否给个思路,谢谢了。