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 ++++++++++++++++++++++++++++++++++---- internal_system_v1/internal_system_v1.pro | 3 internal_system_v1/rcs.qrc | 3 internal_system_v1/searchinfo.h | 3 internal_system_v1/searchinfo.ui | 56 +++++++++++++ 5 files changed, 202 insertions(+), 19 deletions(-) diff --git a/internal_system_v1/internal_system_v1.pro b/internal_system_v1/internal_system_v1.pro index 7c340d1..aa344e7 100644 --- a/internal_system_v1/internal_system_v1.pro +++ b/internal_system_v1/internal_system_v1.pro @@ -64,3 +64,6 @@ searchinfo.ui include(QXlsx/QXlsx.pri) + +RESOURCES += \ + rcs.qrc diff --git a/internal_system_v1/rcs.qrc b/internal_system_v1/rcs.qrc new file mode 100644 index 0000000..811a5dc --- /dev/null +++ b/internal_system_v1/rcs.qrc @@ -0,0 +1,3 @@ +<RCC> + <qresource prefix="/mayi"/> +</RCC> 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); +} diff --git a/internal_system_v1/searchinfo.h b/internal_system_v1/searchinfo.h index 76f2f0d..c3e6872 100644 --- a/internal_system_v1/searchinfo.h +++ b/internal_system_v1/searchinfo.h @@ -33,10 +33,13 @@ void on_comboBox_currentIndexChanged(const QString &arg1); + void on_toolButton_seleceExcel_clicked(); + private: Ui::SearchInfo *ui; QSqlDatabase m_db; QMap<QString,int> m_comInfo; + QMap<QString,QString> m_comCode; QMap<QString,QString> m_itemAndTable; QStandardItemModel *m_model; QMap<QString,QStringList> m_labels; diff --git a/internal_system_v1/searchinfo.ui b/internal_system_v1/searchinfo.ui index 03194c6..69daa75 100644 --- a/internal_system_v1/searchinfo.ui +++ b/internal_system_v1/searchinfo.ui @@ -14,7 +14,7 @@ <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"> - <layout class="QGridLayout" name="gridLayout"> + <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> <widget class="QGroupBox" name="groupBox"> <property name="title"> @@ -132,6 +132,60 @@ </widget> </item> <item row="1" column="0"> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>瀵煎嚭璁剧疆</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QToolButton" name="toolButton_seleceExcel"> + <property name="text"> + <string>閫夋嫨琛ㄦ牸妯℃澘</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_excel_path"> + <property name="minimumSize"> + <size> + <width>300</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>淇濆瓨浣嶇疆</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_excel_save"> + <property name="minimumSize"> + <size> + <width>300</width> + <height>0</height> + </size> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="2" column="0"> <widget class="QTableView" name="tableView"/> </item> </layout> -- Gitblit v1.8.0