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