操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    一.簡(jiǎn)單介紹

    是Qt提供的包裝COM組件的類,通過COM通過COM操作使用類,使用此類qt將圖片保存到指定路徑,需要在pro文件中添加

    QT  +=  axcontainer

    二.與excel com連接的方法

    1 #include   
    2 QAxObject *excel = new QAxObject("Excel.Application"); //!建立excel操作對(duì)象,并連接Excel控件
    3 excel->dynamicCall("SetVisible (bool Visible)",  "false"); //!  設(shè)置為不顯示窗體
    4 excel->setProperty("DisplayAlerts", false); //! 不顯示任何警告信息, 如關(guān)閉時(shí)的是否保存提示
    5 excel->dynamicCall("Quit(void)");  //! 關(guān)閉excel程序,操作完后記著關(guān)閉,由于是隱藏在后臺(tái)進(jìn)程中,不關(guān)閉進(jìn)程會(huì)有很多excel.exe。
    6 workbook->dynamicCall("Close(Boolean)", false); //! 關(guān)閉exce程序先關(guān)閉.xls文件

    三.Excel基本操作

    只介紹簡(jiǎn)單的讀寫操作,需要修改單元格格式等操作,請(qǐng)"Excel VBA參考手冊(cè).chm"

    3.1 excel文件操作

    獲取當(dāng)前工作簿的集合

    QAxObject *workbooks =  excel->querySubObject("Workbooks"); //! 獲取工作簿(excel文件)集合

    新建一個(gè)工作簿

    1 workbooks->synamicCall("Add"); //新建一個(gè)工作簿
    2 QAxObject *workbook = excel->querySubObject("ActiveWorkBook"); //! 獲取當(dāng)前工作簿

    打開一個(gè)已有的工作簿

    1 QString filename = "e:/123.xlsx";
    2 QAxObject* workbook = workbooks->querySubObject("Open(const QString&)", filename);

    保存工作簿

    1 workbook->dynamicCall("Save()");   //!保存文件
    2 workbook->dynamicCall("Close(Boolean)", false);  //! 關(guān)閉文件 
    3 excel->dynamicCall("Quit()"); //! 關(guān)閉excel

    另存為工作簿

    1 QDir::toNativeSeparators,將路徑中的"/"轉(zhuǎn)換為"\",否則無(wú)法保存,"/"只是qt中可以識(shí)別
    2 workbook->dynamiCall("SaveAs(const QString&)",  QDit::toNativeSeparators(filename));
    3 workbook->synamicCall("Close(Boolean)", false); //! 關(guān)閉文件
    4 excel->dynamicCall("Quit()"); //! 關(guān)閉excel

    【領(lǐng)QT開發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接莬費(fèi)領(lǐng)取↓↓qt將圖片保存到指定路徑,先碼住不迷路~】

    點(diǎn)擊→領(lǐng)取「鏈接」

    3.2 Sheet工作表操作

    獲取所有工作表

    QAxObject *worksheets = workbook->querySubObject("Sheets"):

    根據(jù)序號(hào)獲取某個(gè)工作表,序號(hào)順序就是excel 打開后下方的排序

    QAxObject *worksheet = worksheets->querySubObejct("Item(int)", 1);

    獲取表中的行數(shù)列數(shù)

    1 QAxObject* usedrange = worksheet->querySubObject("UsedRange"); //!  sheet 范圍
    2 int intRowStart = usedrange->property("Row").toInt(); //!  起始行數(shù)
    3 int intColStart = usedrange->property("Column").toInt(); //!  起始列數(shù) 
    4 QAxObject *rows, *columns;
    5 rows = usedrange->querySubObject("Rows"): //! 行 
    6 columns = usedrange->querySubObject("Columns"); //! 列
    7 int intRow = rows->property("Count").toInt(); //! 行數(shù)
    8 int intCol = columns->property("Count").toInt();  //!  列數(shù)

    3.3 內(nèi)容操作

    數(shù)據(jù)內(nèi)容操作--獲取單元格--基于坐標(biāo)

    QAxObject *cell = worksheet->querySubObject("Cells(int, int)", i,  j);

    數(shù)據(jù)內(nèi)容操作--獲取單元格--基于行列名稱

    QAxObject *cell = worksheet->querySubObject("Range(QVariant, QVariant)", "A1");

    數(shù)據(jù)內(nèi)容操作--讀單元格內(nèi)容

    QVariant cell_value = cell->property("Value");

    數(shù)據(jù)內(nèi)容操作-- 寫單元格內(nèi)容

    cell->setProperty("Value",  "內(nèi)容");

    4.其他(沒有實(shí)踐操作)

    4.1 大數(shù)據(jù)量讀取

    讀取所有單元格內(nèi)容-數(shù)據(jù)量大,只需要進(jìn)行一次操作即可讀取所有內(nèi)容,避免重復(fù)對(duì)每個(gè)單元格進(jìn)行操作

    1  QVariant var;
    2  QAxObject * usedRange = sheet->querySubObject("UseRange"); //! 獲取用戶區(qū)域范圍
    3  if(NULL == usedRange || usedRange->isNull())
    4 {
    5     return  var;
    6 }
    7 var = usedRange->dynamicCall("Value"); // 讀取區(qū)域內(nèi)所有值
    8 delete usedRange;

    此時(shí)結(jié)果以保存,需要自行轉(zhuǎn)化為QList>

    1 QList> excel_list;
    2 auto rows = var.toList();
    3 
    4 for(auto row:rows) 
    5 {
    6     excel_list.append(row.toList());
    7 }

    4.2 大數(shù)據(jù)寫入

    以QList>存儲(chǔ),需要限定范圍

    QAxObject *user_rang = this->sheet->querySubObject("Rang(const QString&)", "A1:D100");

    寫入數(shù)據(jù)

    rang->setProperty("Value", var); 

    4.3 簡(jiǎn)單的范例

    【領(lǐng)QT開發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接莬費(fèi)領(lǐng)取↓↓,先碼住不迷路~】

    點(diǎn)擊→領(lǐng)取「鏈接」

     1 //  HRESULT r = OleInitialize(0);
     2    // if(r != S_OK && r != S_FALSE)
     3    // {
     4         //qWaring("Qt:初始化Ole 失敗(error %x)", (unsigned int)r);
     5     //}
     6     QString filename = "e:/123.xlsx"; //具體路徑
     7     QFile  file(filename);
     8     bool isExit = file.exists();
     9     if(!isExit)
    10         return false;
    11     qDebug()<<"isExit"<dynamicCall("SetVisible(bool Visble)", "false");
    15     excel->setProperty("DisplayAlerts", false);
    16     QAxObject *workbooks = excel->querySubObject("WorkBooks");
    17     QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", filename);
    18     QAxObject *worksheets = workbook->querySubObject("Sheets");
    19     QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1);
    20 
    21     //寫入到指定位置
    22     QAxObject *workrang = worksheet->querySubObject("Cells(int, int)", 5, 1);
    23     //不能這么存
    24     workrang->dynamicCall("SetValue(const QString&)", QString("1ssssssfffssssssssssssssssssssssssssssss10987654321"));
    25 
    26 
    27     //讀取出來(lái)并打印
    28     QAxObject *workrang1 = worksheet->querySubObject("Cells(int,int)", 3, 5);
    29 
    30     QVariant var = workrang1->dynamicCall("Value");
    31     qDebug()<dynamicCall("SaveAs(const QString&)",
    36              //             QDir::toNativeSeparators(filename));
    37 
    38     workbook->dynamicCall("Save()", true);
    39     //關(guān)閉文件
    40     workbook->dynamicCall("Close(Boolean)", true);
    41     excel->dynamicCall("Quit()");
    42     delete excel;
    43     excel = NULL;
    44    // OleUninitialize();

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有