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()");
}

结果:

发布了257 篇原创文章 · 获赞 22 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_24127015/article/details/104612337