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