From 20ffcfb5507daf34f81346ca3dfa4c031e7b2fe3 Mon Sep 17 00:00:00 2001 From: wumu <mayi@mayi.com> Date: 星期日, 27 四月 2025 22:13:53 +0800 Subject: [PATCH] 0427 --- internal_system_v1/exporttofile.cpp | 146 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 143 insertions(+), 3 deletions(-) diff --git a/internal_system_v1/exporttofile.cpp b/internal_system_v1/exporttofile.cpp index 89cc27a..366e933 100644 --- a/internal_system_v1/exporttofile.cpp +++ b/internal_system_v1/exporttofile.cpp @@ -23,6 +23,10 @@ QDir dir(demoPath); if(!dir.exists()){ demoPath = QDir::currentPath()+"/release/Data/闄勪欢2_鍐呭缁�01琛╛鍗曚綅鍙婂唴閮ㄥ璁℃満鏋勫熀鏈儏鍐佃〃-1.301鐗坃demo.xls"; + QDir dir_realse(demoPath); + if(!dir_realse.exists()){ + demoPath = QDir::currentPath()+"/Data/闄勪欢2_鍐呭缁�01琛╛鍗曚綅鍙婂唴閮ㄥ璁℃満鏋勫熀鏈儏鍐佃〃-1.301鐗坃demo.xls"; + } } QString dt = QDateTime::currentDateTime().toString("yyyyMMdd-HHmmss"); QString savePath = QFileDialog::getSaveFileName(nullptr,"淇濆瓨鏂囦欢",QDir::currentPath()+QString("/鍐呭缁�01琛╛%1_%2.xls").arg(QString::fromLocal8Bit(info.name)).arg(dt),"Excel File(*.xls;*.xlsx)"); @@ -214,8 +218,140 @@ } -int ExportToFile::saveToExcelFromThreeMergePro() +int ExportToFile::saveToExcelFromThreeMergePro(QString name,QVector<ThreeMergeInfo> &threeMergeInfos) { + qDebug()<<"涓夊悎涓�鍙版湰淇濆瓨瀵煎嚭"; + + if(threeMergeInfos.size() == 0) { + QMessageBox::information(nullptr,"鍐呭涓虹┖","璇锋煡璇㈠埌鏁版嵁鍐嶅鍑轰繚瀛�"); + return -1; // 鏂囦欢涓虹┖ + } + + if(name.size() == 0) { + QMessageBox::information(nullptr,"鍏徃鍚嶄负绌�","璇烽�夋嫨涓�涓叕鍙稿啀瀵煎嚭淇濆瓨"); + return -1; // 鏂囦欢涓虹┖ + } + + QString demoPath = QDir::currentPath()+"/Data/涓夊悎涓�.xlsx"; + QDir dir(demoPath); + if(!dir.exists()){ + demoPath = QDir::currentPath()+"/release/Data/涓夊悎涓�.xlsx"; + QDir dir_realese(demoPath); + if(!dir_realese.exists()){ + demoPath = QDir::currentPath()+"/Data/涓夊悎涓�.xlsx"; + } + } + + //QMessageBox::information(nullptr,"涓夊悎涓�璺緞",demoPath); + QString dt = QDateTime::currentDateTime().toString("yyyyMMdd-HHmmss"); + QString savePath = QFileDialog::getSaveFileName(nullptr,"淇濆瓨鏂囦欢",QDir::currentPath()+QString("/涓夊悎涓�_%1_%2.xls").arg(name).arg(dt),"Excel File(*.xls;*.xlsx)"); + qDebug()<<"savepath:"<<savePath << endl << "demoPath:"<<demoPath; + + if(savePath.size() > 0){ + QAxObject excel("ket.Application"); + if(!excel.setControl("ket" + ".Application")){ // windows鍐呮牳 + excel.setControl("Excel.Application"); // wps鍐呮牳 + } + + excel.setProperty("Visible",false); + excel.setProperty("DisplayAlerts",false); + QAxObject * wbs = excel.querySubObject("WorkBooks"); + qDebug()<<"wbs:"<<wbs->className(); + QAxObject * wb = wbs->querySubObject("Open(QString&)",demoPath); + qDebug()<<"wb open ok"; + QAxObject * shs = wb->querySubObject("WorkSheets"); // WorkSheets 涔熷彲浠� + // 鑾峰彇鍏蜂綋琛ㄦ牸锛岃鍒� + QAxObject * sheet = shs->querySubObject("Item(int)", 1); // 绗竴涓〃 + QAxObject *usedRange = sheet->querySubObject("UsedRange"); + int rows = usedRange->querySubObject("Rows")->property("Count").toInt(); + int columns = usedRange->querySubObject("Columns")->property("Count").toInt(); + qDebug()<<"r--c:"<<rows<<columns; + + // 淇敼鍐呭 + for(int i=0;i<threeMergeInfos.size();++i){ + // 鍙戠幇闂 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('A').arg(4+i))->setProperty("Value2", threeMergeInfos[i].id); // 搴忓彿 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('B').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_type)); // 瀹¤绫诲埆 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('C').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_year)); // 瀹¤骞村害 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('D').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_unit)); // 瀹¤鍗曚綅 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('E').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_method)); // 瀹¤鏂瑰紡 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('F').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].responsible_subject_name)); // 璐d换涓讳綋鍚嶇О + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('G').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_item)); // 瀹¤椤圭洰 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('H').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_item_name)); // 瀹¤椤圭洰鍚嶇О + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('I').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].pro_type)); // 闂绫诲埆 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('J').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_qualification)); // 闂瀹氭�� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('K').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_desript)); // 闂鎻忚堪 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('L').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_qualifi_basis)); // 闂瀹氭�ф硶瑙勪緷鎹� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('M').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_money_basis)); // 瀹¤鍙戠幇闂閲戦瀹氭�� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('N').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_num_basis)); // 瀹¤鍙戠幇闂涓暟瀹氭�� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('O').arg(4+i))->setProperty("Value2", threeMergeInfos[i].money_involved); // 娑夊強閲戦锛堜竾鍏冿級 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('P').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].problem_desript_evidence_material)); // 闂鎻忚堪浣愯瘉璧勬枡 + + // 鏁存敼鎯呭喌 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('Q').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].audit_rectified)); // 瀹¤鏈熼棿宸叉暣鏀� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('R').arg(4+i))->setProperty("Value2", threeMergeInfos[i].rectify_money); // 鏁存敼閲戦锛堜竾鍏冿級 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('S').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_situation_1)); // 鏁存敼鎯呭喌1 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('T').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_situation_evidence_mat_1)); // 鏁存敼鎯呭喌浣愯瘉璧勬枡1 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('U').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_res)); // 鏁存敼缁撴灉 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('V').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_complete_time)); // 鏁存敼瀹屾垚鏃堕棿 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('W').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_not_over_reason)); // 灏氭湭鏁存敼鍒颁綅鐨勫師鍥� + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('X').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_will_complete_time)); // 鏁存敼棰勮瀹屾垚鏃堕棿 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('Y').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_situation_2)); // 鏁存敼鎯呭喌2 + sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('Z').arg(4+i))->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_situation_evidence_mat_2)); // 鏁存敼鎯呭喌浣愯瘉璧勬枡2 + + // 澶勫垎缁撴灉 + sheet->querySubObject("Cells(int,int)", 4+i,27)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].punish_type)); // 澶勫垎绫诲瀷 + //sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg('AA').arg(4+i))->setProperty("Value2", threeMergeInfos[i].punish_person_num); // 澶勫垎浜烘暟锛堝崟浣嶏細浜猴級 + sheet->querySubObject("Cells(int,int)", 4+i,27+1)->setProperty("Value2", threeMergeInfos[i].punish_person_num); // 澶勫垎浜烘暟锛堝崟浣嶏細浜猴級 // 瓒呰繃Z浜嗭紝寰楀畨涓嬫爣鏉ュ鐞嗕簡 + + +// // 绉婚�佷俊鎭� + sheet->querySubObject("Cells(int,int)", 4+i,28+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].transfer_info)); // 绉婚�佽缁嗕俊鎭� + sheet->querySubObject("Cells(int,int)", 4+i,29+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].punish_res)); // 澶勭悊缁撴灉 + sheet->querySubObject("Cells(int,int)", 4+i,30+1)->setProperty("Value2", threeMergeInfos[i].involved_person_num); // 娑夋浜哄憳锛堝崟浣嶏細浜猴級 + + // 鏁存敼妫�鏌ョ粨鏋� + sheet->querySubObject("Cells(int,int)", 4+i,31+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_check_time)); // 妫�鏌ユ椂闂� + sheet->querySubObject("Cells(int,int)", 4+i,32+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_check_mothod)); // 妫�鏌ユ柟寮� + sheet->querySubObject("Cells(int,int)", 4+i,33+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].rectify_check_res)); // 妫�鏌ョ粨鏋� + + // 鏁存敼绫诲瀷-宸叉暣鏀� + sheet->querySubObject("Cells(int,int)", 4+i,34+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].correct_problem)); // 绾犳闂 + sheet->querySubObject("Cells(int,int)", 4+i,35+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].improve_the_system)); // 瀹屽杽鍒跺害 + sheet->querySubObject("Cells(int,int)", 4+i,36+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].complete_time)); // 瀹屾垚鏃堕棿 + + // 鏁存敼绫诲瀷-姝e湪鏁存敼 + sheet->querySubObject("Cells(int,int)", 4+i,37+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].during_main_reason)); // 涓昏鍘熷洜 + sheet->querySubObject("Cells(int,int)", 4+i,38+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].during_end_complete_time)); // 瀹屾垚鏃堕檺 + + // 鏁存敼绫诲瀷-灏氭湭鏁存敼 + sheet->querySubObject("Cells(int,int)", 4+i,39+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].not_main_reason)); // 涓昏鍘熷洜 + sheet->querySubObject("Cells(int,int)", 4+i,40+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].departen_or_person)); // 璐d换閮ㄩ棬鎴栬矗浠讳汉 + sheet->querySubObject("Cells(int,int)", 4+i,41+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].not_end_complete_time)); // 瀹屾垚鏃堕檺 + + // 鏁存敼缁撴灉-闂鏁存敼(閲戦绫�) + sheet->querySubObject("Cells(int,int)", 4+i,42+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].money_res)); // 閲戦绫绘暣鏀规垚鏋� + sheet->querySubObject("Cells(int,int)", 4+i,43+1)->setProperty("Value2", threeMergeInfos[i].money_res_money); // 閲戦锛堝厓锛� + + // 鏁存敼缁撴灉-闂鏁存敼(闈為噾棰濈被) + sheet->querySubObject("Cells(int,int)", 4+i,44+1)->setProperty("Value2", QString::fromLocal8Bit(threeMergeInfos[i].no_money_res)); // 闈為噾棰濈被鏁存敼鎴愭灉 + sheet->querySubObject("Cells(int,int)", 4+i,45+1)->setProperty("Value2", threeMergeInfos[i].no_money_res_num); // 鏁伴噺锛堜釜锛� + + + } + + + + // 瀹屼簨浜嗭紝缁撴潫锛屼繚瀛樻垨鑰呴��鍑� + wb->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(savePath)); + wbs->dynamicCall("Close()"); + excel.dynamicCall("Quit(void)"); + + QMessageBox::information(nullptr,"瀵煎嚭瀹屾垚","鏂囦欢浣嶇疆:"+savePath); + } + + return 0; } @@ -232,6 +368,10 @@ QDir dir(demoPath); if(!dir.exists()){ demoPath = QDir::currentPath()+"/release/Data/闄勪欢4_鍐呭缁�03琛╛鍐呴儴瀹¤缁熻缁煎悎琛�.xls"; + QDir dir_realse(demoPath); + if(!dir_realse.exists()){ + demoPath = QDir::currentPath()+"/Data/闄勪欢4_鍐呭缁�03琛╛鍐呴儴瀹¤缁熻缁煎悎琛�.xls"; + } } QString dt = QDateTime::currentDateTime().toString("yyyyMMdd-HHmmss"); QString savePath = QFileDialog::getSaveFileName(nullptr,"淇濆瓨鏂囦欢",QDir::currentPath()+QString("/缁煎悎琛╛%1_%2.xls").arg(name).arg(dt),"Excel File(*.xls;*.xlsx)"); @@ -241,8 +381,7 @@ if(savePath.size() > 0){ QAxObject excel("ket.Application"); - if(!excel.setControl("ket" - ".Application")){ // windows鍐呮牳 + if(!excel.setControl("ket.Application")){ // windows鍐呮牳 excel.setControl("Excel.Application"); // wps鍐呮牳 } @@ -250,6 +389,7 @@ excel.setProperty("DisplayAlerts",false); QAxObject * wbs = excel.querySubObject("WorkBooks"); qDebug()<<"wbs:"<<wbs->className(); + //QAxObject * wb = wbs->querySubObject("Open(QString&)",demoPath); QAxObject * wb = wbs->querySubObject("Open(QString&)",demoPath); qDebug()<<"wb open ok"; QAxObject * shs = wb->querySubObject("WorkSheets"); // WorkSheets 涔熷彲浠� -- Gitblit v1.8.0