From 71c27f9ead97e52e50a59495c6955756e21004cf Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期五, 01 十一月 2024 00:16:13 +0800
Subject: [PATCH] 1101

---
 internal_system_v1/exporttofile.cpp |   73 +++++++++++++++++++++++++++++++++++-
 1 files changed, 70 insertions(+), 3 deletions(-)

diff --git a/internal_system_v1/exporttofile.cpp b/internal_system_v1/exporttofile.cpp
index b4b9a46..8a7533b 100644
--- a/internal_system_v1/exporttofile.cpp
+++ b/internal_system_v1/exporttofile.cpp
@@ -3,6 +3,8 @@
 #include <QDebug>
 #include <QAxObject>
 #include <QFile>
+#include <QDateTime>
+#include <QMessageBox>
 
 #pragma execution_character_set("utf-8")
 ExportToFile::ExportToFile(QObject *parent) : QObject(parent)
@@ -22,8 +24,8 @@
     if(!dir.exists()){
         demoPath = QDir::currentPath()+"/release/Data/闄勪欢2_鍐呭缁�01琛╛鍗曚綅鍙婂唴閮ㄥ璁℃満鏋勫熀鏈儏鍐佃〃-1.301鐗坃demo.xls";
     }
-
-    QString savePath = QFileDialog::getSaveFileName(nullptr,"淇濆瓨鏂囦欢",QDir::currentPath()+"/鍐呭缁�01琛�.xls","Excel File(*.xls,*.xlsx)");
+    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)");
     qDebug()<<"savepath:"<<savePath <<endl << "demoPath:"<<demoPath;
 
 
@@ -205,6 +207,7 @@
         wbs->dynamicCall("Close()");
         excel.dynamicCall("Quit(void)");
 
+        QMessageBox::information(nullptr,"瀵煎嚭瀹屾垚","鏂囦欢浣嶇疆:"+savePath);
 
     }
     return 0;
@@ -216,7 +219,71 @@
     return 0;
 }
 
-int ExportToFile::saveToExcelFromNeiShenZonghe()
+int ExportToFile::saveToExcelFromNeiShenZonghe(QString name,NeiShenZongHeInfo &nszh)
 {
+    qDebug()<<"鍐呭缁煎悎淇濆瓨瀵煎嚭";
+
+    if(name.size() == 0) return -1; // 鏂囦欢涓虹┖
+
+    QString demoPath = QDir::currentPath()+"/Data/闄勪欢4_鍐呭缁�03琛╛鍐呴儴瀹¤缁熻缁煎悎琛╛demo.xls";
+    QDir dir(demoPath);
+    if(!dir.exists()){
+        demoPath = QDir::currentPath()+"/release/Data/闄勪欢4_鍐呭缁�03琛╛鍐呴儴瀹¤缁熻缁煎悎琛╛demo.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)");
+    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;
+
+        // 淇敼鍐呭
+
+        // 鍥� 椤圭洰瀹¤  鍗曚綅 涓�
+        char index[5]={'G','H','I','J','K'};
+
+        for(int i=0;i<5;++i){
+            QString cellStr = QString("%1%2").arg(index[i]).arg(40);
+            qDebug()<<cellStr<<nszh.code_030300[i];
+            qDebug()<<"淇敼涔嬪墠:"<<sheet->querySubObject("Range(QVariant, QVariant)", cellStr)->property("Value2").toInt();
+            sheet->querySubObject("Range(QVariant, QVariant)", cellStr)->setProperty("Value2", nszh.code_030300[i]); // 瀹¤椤圭洰
+            qDebug()<<"淇敼缁撴灉:"<<sheet->querySubObject("Range(QVariant, QVariant)", cellStr)->property("Value2").toInt();
+        }
+        for(int i=0;i<5;++i){
+            sheet->querySubObject("Range(QVariant, QVariant)", QString("%1%2").arg(index[i]).arg(41))->setProperty("Value2", nszh.code_030301[i]); // 鍏朵腑锛氳疮褰昏惤瀹炲浗瀹堕噸澶ф斂绛栨帾鏂藉璁�
+        }
+
+        qDebug()<<40;
+
+
+        // 瀹屼簨浜嗭紝缁撴潫锛屼繚瀛樻垨鑰呴��鍑�
+        wb->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(savePath));
+        wbs->dynamicCall("Close()");
+        excel.dynamicCall("Quit(void)");
+
+        QMessageBox::information(nullptr,"瀵煎嚭瀹屾垚","鏂囦欢浣嶇疆:"+savePath);
+
+    }
+
     return 0;
 }

--
Gitblit v1.8.0