#include "searchinfo.h" #include "ui_searchinfo.h" #include #include #include #include #include #include #include SearchInfo::SearchInfo(QWidget *parent) : QMainWindow(parent), ui(new Ui::SearchInfo) { ui->setupUi(this); // ui->label_2->hide(); // ui->label_3->hide(); // ui->dateTimeEdit->hide(); // ui->dateTimeEdit_2->hide(); ui->dateEdit_end->setDate(QDate::currentDate()); m_model = new QStandardItemModel(this); ui->tableView->setModel(m_model); ui->tableView->verticalHeader()->setVisible(false); // 隐藏行头 m_model->setColumnCount(5); QStringList labels; labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"<<"审计时间"; m_model->setHorizontalHeaderLabels(labels); if(QSqlDatabase::contains("qt_sql_default_connection")){ m_db = QSqlDatabase::addDatabase("qt_sql_default_connection"); }else{ m_db = QSqlDatabase::addDatabase("QSQLITE"); } m_db.setDatabaseName("sqlData.db"); if(m_db.open()){ qDebug()<<"db open ok"; createSqlite(); //m_db.close(); searchComName(); // 查询公司名 }else{ qDebug()<<"db open fail"; } // 设置表格列标签 setLabels(); } SearchInfo::~SearchInfo() { m_db.close(); delete ui; } void SearchInfo::createSqlite() { // 建表 QString sql = "create table Internal_1 (id int primary key, name varchar(30), _020100 int)"; QSqlQuery query; if(query.exec(sql)) { qDebug()<<"create Internal_1 ok..."; }else{ qDebug()<<"create Internal_1 fail..."<comboBox_company->addItem(name); } } } QVector> SearchInfo::getResult(QString &sql,int colCnt) { QVector> resultSet; QSqlQuery query; qDebug()< tmp; for(int i=0;icomboBox->currentText(); QString comName = ui->comboBox_company->currentText(); QString sql = QString("select * from %1 where com_id=%2").arg(m_itemAndTable[item]).arg(m_comInfo[comName]); qDebug()<<__FUNCTION__<setRowCount(0); int rowCnt = 0; while (query.next()) { rowCnt++; m_model->setRowCount(rowCnt); qDebug()<setItem(rowCnt-1,i,new QStandardItem(query.value(i).toString())); } } } } } 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; } // 每一张表拿最新的那一批数据即可,然后保存到电子表格中 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"); QString audit_workload = QString("select kpi_name,code,num from %2 where com_id=%1 limit 1").arg(comId).arg("audit_workload"); QString case_clue = QString("select kpi_name,code,unit,num from %2 where com_id=%1 limit 2").arg(comId).arg("case_clue"); QString problem_count = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_count"); QString problem_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 11").arg(comId).arg("problem_money"); QString problem_no_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 5").arg(comId).arg("problem_no_money"); QString problem_rectification = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_rectification"); QString punish = QString("select kpi_name,code,num from %2 where com_id=%1 limit 4").arg(comId).arg("punish"); QVector> audit_project_res = getResult(audit_project,3); QVector> audit_workload_res = getResult(audit_workload,3); QVector> case_clue_res = getResult(case_clue,4); QVector> problem_count_res = getResult(problem_count,4); QVector> problem_money_res = getResult(problem_money,4); QVector> problem_no_money_res = getResult(problem_no_money,4); QVector> problem_rectification_res = getResult(problem_rectification,4); QVector> punish_res = getResult(punish,3); qDebug()<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:"<dynamicCall("SaveAs(const QString&)", path); // 保存工作簿 // workbook->dynamicCall("Close()"); // 关闭工作簿 // excel->dynamicCall("Quit()"); // 退出Excel应用程序 // 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:"<querySubObject("Open(QString&)",str); QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 也可以 int cnt = shs->property("Count").toInt(); qDebug()<<"cnt="<querySubObject("Item(int)", i+1); QString sheetName = sheet->property("Name").toString(); qDebug()<<"sh name:"<querySubObject("UsedRange"); int rows = usedRange->querySubObject("Rows")->property("Count").toInt(); int columns = usedRange->querySubObject("Columns")->property("Count").toInt(); qDebug()<<"r--c:"<dynamicCall("Value"); // 拿到二维表格 QVariantList valRows = val.toList(); qDebug()<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:"<querySubObject("Cells(int, int)", 13, 5)->dynamicCall("SetValue(doubule)", 4.5); for(int i=0;iquerySubObject("Cells(int, int)", 11+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_project_res[i][2].toDouble()); } // 写入审计工作量 二 for(int i=0;iquerySubObject("Cells(int, int)", 21+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_workload_res[i][2].toDouble()); } // 写入问题金额 三 for(int i=0;iquerySubObject("Cells(int, int)", 22+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_money_res[i][2].toDouble()); } // 写入问题个数 四 for(int i=0;iquerySubObject("Cells(int, int)", 33+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_count_res[i][2].toDouble()); } // 写入问题整改(金额) 五 for(int i=0;iquerySubObject("Cells(int, int)", 40+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_rectification_res[i][2].toDouble()); } // 写入问题整改(非金额) 六 for(int i=0;iquerySubObject("Cells(int, int)", 47+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_no_money_res[i][2].toDouble()); } // 写入处分 七 for(int i=0;iquerySubObject("Cells(int, int)", 52+i, 5)->dynamicCall("SetValue(const QVariant&)", punish_res[i][2].toDouble()); } // 写入案件线索 八 for(int i=0;iquerySubObject("Cells(int, int)", 56+i, 5)->dynamicCall("SetValue(const QVariant&)", case_clue_res[i][2].toDouble()); } } //wb->dynamicCall("Save()"); // 若文件已存在,则直接保存 //wb->dynamicCall("SaveAs(const QString&)", str); // 保存工作簿,若文件不存在,则带名字保存 if(ui->lineEdit_excel_save->text().size() > 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())); } void SearchInfo::on_comboBox_currentIndexChanged(const QString &arg1) { 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); } void SearchInfo::on_comboBox_company_currentIndexChanged(const QString &arg1) { if(ui->lineEdit_excel_save->text().size() > 5){ QStringList paths = ui->label_excel_path->text().split("."); QString newPath = paths.at(0)+"_"+arg1+"."+paths.at(1); ui->lineEdit_excel_save->setText(newPath); } } void SearchInfo::addComName(QString name) { ui->comboBox_company->addItem(name); } void SearchInfo::on_checkBox_clicked() { if(ui->checkBox->isChecked()){ ui->dateEdit_begin->setEnabled(true); ui->dateEdit_end->setEnabled(true); }else{ ui->dateEdit_begin->setEnabled(false); ui->dateEdit_end->setEnabled(false); } }