Qt 使用QAxObject增删改excel

示例:

void TestExcel::on_writeBtn_clicked()
{
    QAxObject excel("Excel.Application");
    excel.setProperty("Visible",true);
    QAxObject *work_books = excel.querySubObject("WorkBooks");
    work_books->dynamicCall("Open (const QString&)",QString("E:/测试.xlsx"));
    excel.setProperty("Caption","Qt Excel");
    QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
    QAxObject *work_sheets = work_book->querySubObject("Sheets");// Sheets也可换用WorkSheets

    // 删除工作表(删除第一个)
    QAxObject *first_sheet = work_sheets->querySubObject("Item(int)",1);
    first_sheet->dynamicCall("delete");

    // 插入工作表(插入至最后一行)
    int sheet_count = work_sheets->property("Count").toInt();// 获取工作表数目
    QAxObject *last_sheet = work_sheets->querySubObject("Item(int)",sheet_count);
    QAxObject *work_sheet = work_sheets->querySubObject("Add(QVariant)",last_sheet->asVariant());
    last_sheet->dynamicCall("Move(QVariant)",work_sheet->asVariant());
    work_sheet->setProperty("Name" ,"Qt Sheet");// 设置工作表名称

    // 操作单元格(第2行第2列)
    QAxObject *cell = work_sheet->querySubObject("Cells(int,int)",2,2);
    cell->setProperty("Value","Java C++ C# PHP Perl Python Delphi Ruby");// 设置单元格值
    cell->setProperty("RowHeight",50);// 设置单元格行高
    cell->setProperty("ColumnWidth",30);// 设置单元格列宽
    cell->setProperty("HorizontalAlignment",-4108);//左对齐(xlLeft):-4131 居中(xlCenter):-4108 右对齐(xlRight):-4152
    cell->setProperty("VerticalAlignment",-4152);
    cell->setProperty("WrapText",true);// 内容过多,自动换行
    //cell->dynamicCall("ClearContents()");// 清空单元格内容
    QAxObject *interior = cell->querySubObject("Interior");
    interior->setProperty("Color",QColor(0,255,0));// 设置单元格背景色为绿色

    QAxObject *border =  cell->querySubObject("Borders");
    border->setProperty("Color",QColor(0,0,255));// 设置单元格边框色为蓝色

    QAxObject *font = cell->querySubObject("Font");// 获取单元格字体
    font->setProperty("Name",QStringLiteral("华文彩云"));// 设置单元格字体
    font->setProperty("Bold",true);// 设置单元格字体加粗
    font->setProperty("Size",20);// 设置单元格字体大小
    font->setProperty("Italic",true);// 设置单元格字体斜体
    font->setProperty("Underline",2);// 设置单元格下划线
    font->setProperty("Color",QColor(255,0,0));

    // 设置单元格内容,并合并单元格(第5行第3列-第8行第5列)
    QAxObject *cell_5_3 = work_sheet->querySubObject("Cells(int,int)",5,3);
    cell_5_3->setProperty("Value","Java");// 设置单元格值
    QAxObject *cell_8_5 = work_sheet->querySubObject("Cells(int,int)",8,5);
    cell_8_5->setProperty("Value","C++");

    QString merge_cell;
    merge_cell.append(QChar(3-1+'A'));// 初始列
    merge_cell.append(QString::number(5));// 初始行
    merge_cell.append(":");
    merge_cell.append(QChar(5-1+'A')); // 终止列
    merge_cell.append(QString::number(8));// 终止行
    QAxObject *merge_range = work_sheet->querySubObject("Range(const QString&)",merge_cell);
    merge_range->setProperty("HorizontalAlignment",-4108);
    merge_range->setProperty("VerticalAlignment", -4108);
    merge_range->setProperty("WrapText", true);
    merge_range->setProperty("MergeCells",true);// 合并单元格
    //merge_range->setProperty("MergeCells",false);// 拆分单元格

    work_book->dynamicCall("Save()");
    work_book->dynamicCall("Close()");
    excel.dynamicCall("Quit()");
}

结果:

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Qt使用QAxObject来创建Excel文件的步骤如下: 首先,确保你已经安装了Microsoft Office软件,并且拥有Excel的许可证。 然后,你需要在Qt项目中添加以下代码段: ```cpp #include <QAxObject> ... QAxObject* excel = new QAxObject("Excel.Application", this); // 创建Excel应用程序对象 excel->dynamicCall("SetVisible(bool)", false); // 设置Excel应用程序不可见 QAxObject* workbooks = excel->querySubObject("Workbooks"); // 获取工作簿集合对象 QAxObject* workbook = workbooks->querySubObject("Add"); // 创建新工作簿 QAxObject* worksheets = workbook->querySubObject("Worksheets"); // 获取工作表集合对象 QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1); // 获取第一个工作表 QAxObject* cells = worksheet->querySubObject("Cells"); // 获取单元格集合对象 // 在A1单元格中写入数据 QAxObject* cell = cells->querySubObject("Item(int,int)", 1, 1); cell->dynamicCall("SetValue(const QVariant&)", "Hello, Excel!"); workbook->dynamicCall("SaveAs(const QString&)", "C:/path/to/excel.xlsx"); // 保存工作簿 workbook->dynamicCall("Close()"); // 关闭工作簿 excel->dynamicCall("Quit()"); // 退出Excel应用程序 ``` 上述代码中,我们使用QAxObject来创建Excel应用程序对象、工作簿、工作表、单元格等。你可以根据需要进行更多的操作,比如设置单元格格式、写入更多数据等。 最后,记得在结束程序前释放资源,可以在程序退出时执行以下代码: ```cpp delete excel; ``` 请确保将代码中的文件路径替换为你希望保存Excel文件的路径。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值