From e16e6f0cf090e4d9582bc38439f71a895499cf26 Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期六, 16 九月 2023 18:35:40 +0800
Subject: [PATCH] 0916

---
 internal_system_v1/searchinfo.cpp |  156 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 138 insertions(+), 18 deletions(-)

diff --git a/internal_system_v1/searchinfo.cpp b/internal_system_v1/searchinfo.cpp
index 1d5265e..4d2c9d9 100644
--- a/internal_system_v1/searchinfo.cpp
+++ b/internal_system_v1/searchinfo.cpp
@@ -5,6 +5,8 @@
 #include <QDir>
 #include <QSqlError>
 #include <QSqlQuery>
+#include <QMessageBox>
+#include <QFileDialog>
 
 SearchInfo::SearchInfo(QWidget *parent) :
     QMainWindow(parent),
@@ -192,14 +194,16 @@
 void SearchInfo::searchComName()
 {
     QSqlQuery query;
-    QString sql = QString("select id,name from company_info");
+    QString sql = QString("select id,name,code from company_info");
     if(query.exec(sql)){
         qDebug()<<"size:"<<query.numRowsAffected();
         while(query.next()){
             int id = query.value(0).toInt();
             QString name = query.value(1).toString();
+            QString code = query.value(2).toString();
             qDebug()<<"com select:"<<id<<name;
             m_comInfo[name] = id;
+            m_comCode[name] = code;
             ui->comboBox_company->addItem(name);
         }
     }
@@ -267,6 +271,14 @@
 
 void SearchInfo::on_pushButton_export_clicked()
 {
+    if(ui->comboBox_company->currentText() == "鍏徃鍚嶇О"){
+        QMessageBox::information(this,"瀵煎嚭閿欒","璇烽�夋嫨涓�涓叕鍙稿悕鍐嶅鍑�");
+        return;
+    }
+    if(ui->label_excel_path->text().size() < 5){
+        QMessageBox::information(this,"瀵煎嚭璁剧疆閿欒","璇峰厛鍦ㄢ�滃鍑鸿缃�濋�夋嫨妯℃澘鍙婁繚瀛樻枃浠剁殑璺緞淇℃伅");
+        return;
+    }
     // 姣忎竴寮犺〃鎷挎渶鏂扮殑閭d竴鎵规暟鎹嵆鍙紝鐒跺悗淇濆瓨鍒扮數瀛愯〃鏍间腑
     int comId = m_comInfo[ui->comboBox_company->currentText()];
     QString audit_project = QString("select kpi_name,code,num from %2 where com_id=%1 limit 10").arg(comId).arg("audit_project");
@@ -289,25 +301,120 @@
     qDebug()<<audit_project_res.size()<<punish_res.size();
 
     // 鎿嶄綔excel
-    QAxObject* excel = new QAxObject("Excel.Application");  // 鍒涘缓Excel瀵硅薄
-    excel->setProperty("Visible", false);  // 璁剧疆Excel涓嶅彲瑙�
-    QAxObject* workbooks = excel->querySubObject("Workbooks");  // 鑾峰彇鎵�鏈夊伐浣滅翱
-    QAxObject* workbook = workbooks->querySubObject("Add");  // 娣诲姞鏂板伐浣滅翱
-    QAxObject* worksheets = workbook->querySubObject("Worksheets");  // 鑾峰彇鎵�鏈夊伐浣滆〃
-    QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);  // 鑾峰彇绗竴涓伐浣滆〃
-    for (int i = 1; i <= 5; i++) {
-        for (int j = 1; j <= 5; j++) {
-            QString cellValue = "Value";  // 璁剧疆瑕佸啓鍏ョ殑鍗曞厓鏍煎��
-            worksheet->querySubObject("Cells(int, int)", i, j)->dynamicCall("SetValue(const QVariant&)", cellValue);  // 鍐欏叆鍗曞厓鏍煎��
+    // 鍒涘缓鏂扮殑鐢靛瓙琛ㄦ牸
+//    QAxObject* excel = new QAxObject("Excel.Application");  // 鍒涘缓Excel瀵硅薄
+//    excel->setProperty("Visible", false);  // 璁剧疆Excel涓嶅彲瑙�
+//    QAxObject* workbooks = excel->querySubObject("Workbooks");  // 鑾峰彇鎵�鏈夊伐浣滅翱
+//    QAxObject* workbook = workbooks->querySubObject("Add");  // 娣诲姞鏂板伐浣滅翱
+//    QAxObject* worksheets = workbook->querySubObject("Worksheets");  // 鑾峰彇鎵�鏈夊伐浣滆〃
+//    QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);  // 鑾峰彇绗竴涓伐浣滆〃
+ //   for (int i = 1; i <= 61; i++) {
+
+//        for (int j = 1; j <= 5; j++) {
+//            QString cellValue = "Value";  // 璁剧疆瑕佸啓鍏ョ殑鍗曞厓鏍煎��
+//            worksheet->querySubObject("Cells(int, int)", i, j)->dynamicCall("SetValue(const QVariant&)", cellValue);  // 鍐欏叆鍗曞厓鏍煎��
+//        }
+    //}
+
+
+    // 鏋勫缓涓�寮犺〃锛�
+//    QString cellValue = "鍗曚綅鍐呴儴瀹¤涓氬姟鎯呭喌琛�";  // 璁剧疆瑕佸啓鍏ョ殑鍗曞厓鏍煎��
+//    worksheet->querySubObject("Cells(int, int)", 1, 1)->dynamicCall("SetValue(const QVariant&)", cellValue);  // 鍐欏叆鍗曞厓鏍煎��
+//    worksheet->querySubObject("Cells(int, int)", 3, 4)->dynamicCall("SetValue(const QVariant&)", "琛�  鍙�:");
+//    worksheet->querySubObject("Cells(int, int)", 3, 5)->dynamicCall("SetValue(const QVariant&)", "鍐呭缁�02琛�");
+
+//    QString path = QDir::currentPath();
+//    qDebug()<<"path:"<<path;
+//    path += "/debug/Data/save2.xls";
+//    qDebug()<<"path:"<<path;
+//    workbook->dynamicCall("SaveAs(const QString&)", path);  // 淇濆瓨宸ヤ綔绨�
+//    workbook->dynamicCall("Close()");  // 鍏抽棴宸ヤ綔绨�
+//    excel->dynamicCall("Quit()");  // 閫�鍑篍xcel搴旂敤绋嬪簭
+//    QMessageBox::information(this,"瀵煎嚭璺緞淇℃伅",path);
+
+    // 鎵撳紑宸插瓨鍦ㄧ殑鐢靛瓙琛ㄦ牸锛岀劧鍚庡線閲屽啓鍏ユ暟鎹�
+    // :/mayi/闄勪欢3_鍐呭缁�02琛╛鍗曚綅鍐呴儴瀹¤涓氬姟鎯呭喌琛�.xls
+
+    QAxObject excel("Excel.Application");
+    excel.setProperty("Visible",false);
+    excel.setProperty("DisplayAlerts",false);
+    //QString str = "D:/Qt/QtP/build-internal_system_v1-Desktop_Qt_5_9_4_MinGW_32bit-Debug/debug/Data/闄勪欢3_鍐呭缁�02琛╛鍗曚綅鍐呴儴瀹¤涓氬姟鎯呭喌琛�.xls";
+    QString str = ui->label_excel_path->text();
+    qDebug()<<"open:"<<str;
+    qDebug()<<"excel:"<<excel.className();
+    QAxObject * wbs = excel.querySubObject("WorkBooks");
+    QAxObject * wb = wbs->querySubObject("Open(QString&)",str);
+    QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 涔熷彲浠�
+    int cnt = shs->property("Count").toInt();
+    qDebug()<<"cnt="<<cnt;
+    for(int i=0;i<cnt;++i){
+        QAxObject * sheet = shs->querySubObject("Item(int)", i+1);
+        QString sheetName = sheet->property("Name").toString();
+        qDebug()<<"sh name:"<<sheetName;
+        // 鐒跺悗鍐嶆搷浣滆〃鍐呯殑鏁版嵁
+        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;
+        QVariant  val = usedRange->dynamicCall("Value"); // 鎷垮埌浜岀淮琛ㄦ牸
+        QVariantList valRows = val.toList();
+        qDebug()<<valRows[11].toList().at(4);
+        sheet->querySubObject("Cells(int, int)", 7, 2)->dynamicCall("SetValue(const QVariant&)", ui->comboBox_company->currentText());
+        sheet->querySubObject("Cells(int, int)", 6, 2)->dynamicCall("SetValue(const QVariant&)", m_comCode[ui->comboBox_company->currentText()]);
+
+        // 鍐欏叆瀹¤椤圭洰 涓�
+        qDebug()<<"size:"<<audit_project_res.size();
+        QString it = audit_project_res[0][2];
+        //sheet->querySubObject("Cells(int, int)", 13, 5)->dynamicCall("SetValue(doubule)", 4.5);
+        for(int i=0;i<audit_project_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 11+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_project_res[i][2].toDouble());
         }
+
+        // 鍐欏叆瀹¤宸ヤ綔閲� 浜�
+        for(int i=0;i<audit_workload_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 21+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_workload_res[i][2].toDouble());
+        }
+        // 鍐欏叆闂閲戦 涓�
+        for(int i=0;i<problem_money_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 22+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_money_res[i][2].toDouble());
+        }
+        // 鍐欏叆闂涓暟 鍥�
+        for(int i=0;i<problem_count_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 33+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_count_res[i][2].toDouble());
+        }
+        // 鍐欏叆闂鏁存敼(閲戦) 浜�
+        for(int i=0;i<problem_rectification_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 40+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_rectification_res[i][2].toDouble());
+        }
+        // 鍐欏叆闂鏁存敼(闈為噾棰�) 鍏�
+        for(int i=0;i<problem_no_money_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 47+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_no_money_res[i][2].toDouble());
+        }
+        // 鍐欏叆澶勫垎 涓�
+        for(int i=0;i<punish_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 52+i, 5)->dynamicCall("SetValue(const QVariant&)", punish_res[i][2].toDouble());
+        }
+        // 鍐欏叆妗堜欢绾跨储 鍏�
+        for(int i=0;i<case_clue_res.size();++i){
+            sheet->querySubObject("Cells(int, int)", 56+i, 5)->dynamicCall("SetValue(const QVariant&)", case_clue_res[i][2].toDouble());
+        }
+
+
     }
-    QString path = QDir::currentPath();
-    qDebug()<<"path:"<<path;
-    path += "/debug/Data/save2.xls";
-    qDebug()<<"path:"<<path;
-    workbook->dynamicCall("SaveAs(const QString&)", path);  // 淇濆瓨宸ヤ綔绨�
-    workbook->dynamicCall("Close()");  // 鍏抽棴宸ヤ綔绨�
-    excel->dynamicCall("Quit()");  // 閫�鍑篍xcel搴旂敤绋嬪簭
+    //wb->dynamicCall("Save()");  // 鑻ユ枃浠跺凡瀛樺湪锛屽垯鐩存帴淇濆瓨
+    //wb->dynamicCall("SaveAs(const QString&)", str);  // 淇濆瓨宸ヤ綔绨匡紝鑻ユ枃浠朵笉瀛樺湪锛屽垯甯﹀悕瀛椾繚瀛�
+    if(ui->lineEdit_excel_save->text() > 1){
+        wb->dynamicCall("SaveAs(const QString&)", ui->lineEdit_excel_save->text());  // 淇濆瓨宸ヤ綔绨匡紝鑻ユ枃浠朵笉瀛樺湪锛屽垯甯﹀悕瀛椾繚瀛�
+        qDebug()<<"淇濆瓨鍒版柊鏂囦欢涓�";
+    }else{
+        wb->dynamicCall("Save()"); // 鐩存帴淇濆瓨鍒版ā鏉挎枃浠朵腑
+        qDebug()<<"淇濆瓨鍒拌�佹枃浠朵腑";
+    }
+
+    wbs->dynamicCall("Close()");
+    excel.dynamicCall("Quit(void)");
+    QMessageBox::information(this,"瀵煎嚭鎴愬姛",QString("瀵煎嚭鎴愬姛锛屾枃浠惰矾寰勪负:%1").arg(ui->lineEdit_excel_save->text()));
+
 
 }
 
@@ -315,3 +422,16 @@
 {
     m_model->setHorizontalHeaderLabels(m_labels[arg1]);
 }
+
+void SearchInfo::on_toolButton_seleceExcel_clicked()
+{
+    if(ui->comboBox_company->currentText() == "鍏徃鍚嶇О"){
+        QMessageBox::information(this,"瀵煎嚭璁剧疆閿欒","璇烽�夋嫨涓�涓叕鍙稿悕鍐嶈缃�");
+        return;
+    }
+    QString path = QFileDialog::getOpenFileName(this,"閫夋嫨琛ㄦ牸妯℃澘:鍗曚綅鍐呴儴瀹¤涓氬姟鎯呭喌琛�","./","excel(*鍗曚綅鍐呴儴瀹¤涓氬姟鎯呭喌琛�.xls)");
+    ui->label_excel_path->setText(path);
+    QStringList paths = path.split(".");
+    QString newPath = paths.at(0)+"_"+ui->comboBox_company->currentText()+"."+paths.at(1);
+    ui->lineEdit_excel_save->setText(newPath);
+}

--
Gitblit v1.8.0