wumu
2025-04-27 20ffcfb5507daf34f81346ca3dfa4c031e7b2fe3
internal_system_v1/searchinfo.cpp
@@ -1,12 +1,36 @@
#include "searchinfo.h"
#include "searchinfo.h"
#include "ui_searchinfo.h"
#include <QAxObject>
#include <QDebug>
#include <QDir>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
#include <QFileDialog>
#include <QCalendarWidget>
#pragma execution_character_set("utf-8")
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_begin->calendarWidget()->setStyleSheet("background-color:#deab8a");
    ui->dateEdit_end->calendarWidget()->setStyleSheet("background-color:pink");
    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{
@@ -15,15 +39,735 @@
    m_db.setDatabaseName("sqlData.db");
    if(m_db.open()){
        qDebug()<<"db open ok";
        m_db.close();
        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..."<<query.lastError().text();
    }
    sql = "CREATE TABLE file_up_info (\
            id      INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name    VARCHAR (30),\
            code    TEXT,\
            up_time TEXT\
        )";
    if(query.exec(sql))
    {
        qDebug()<<"create file_up_info ok...";
    }else{
        qDebug()<<"create file_up_info fail..."<<query.lastError().text();
    }
    sql = "CREATE TABLE company_info (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            code     VARCHAR (30),\
            机构类型     TEXT,\
            主要业务活动   TEXT,\
            行业代码     TEXT,\
            单位注册地及区域 TEXT,\
            区域代码     TEXT,\
            城乡代码     TEXT,\
            单位规模     TEXT,\
            从业期末人数   TEXT,\
            法定代表人    TEXT,\
            执行会记标准类别 TEXT,\
            长途区号     TEXT,\
            固定电话     TEXT,\
            邮政编码     TEXT,\
            电子邮箱     TEXT,\
            网址       TEXT\
        )";
    if(query.exec(sql))
    {
        qDebug()<<"create company_info ok...";
    }else{
        qDebug()<<"create company_info fail..."<<query.lastError().text();
    }
    // 审计项目表
    createTableNoEvidences("audit_project");
    m_itemAndTable["审计项目"] = "audit_project";
    // 内审工作量表
    createTableNoEvidences("audit_workload");
    m_itemAndTable["内审工作量"] = "audit_workload";
    // 问题金额表
    createTableHasEvidences("problem_money");
    m_itemAndTable["问题金额"] = "problem_money";
    // 问题个数表
    createTableHasEvidences("problem_count");
    m_itemAndTable["问题个数"] = "problem_count";
    // 问题整改表
    createTableHasEvidences("problem_rectification");
    m_itemAndTable["问题整改"] = "problem_rectification";
    // 问题整改--非金额表
    createTableHasEvidences("problem_no_money");
    m_itemAndTable["问题整改--非金额"] = "problem_no_money";
    // 处分表
    createTableNoEvidences("punish");
    m_itemAndTable["处分"] = "punish";
    // 案件线索表
    createTableHasUnit("case_clue");
    m_itemAndTable["案件线索"] = "case_clue";
    // 单位的所有信息表  创建
    createTableAllComInfo("all_company_info");
    // 整改结果信息表 创建
    createTableRectifyResultInfo("rectify_result_info");
    // 问题清单信息表 创建
    createTableProblemListInfo("problem_list_info");
    // 综合录入信息表 创建
    createTableComprehensiveEntryInfo("comprehensive_entry_info");
    // 整改台账信息表 创建
    createTableStandingBook("standing_book_info");
}
// 综合录入信息表 以编码作为指标名
void SearchInfo::createTableComprehensiveEntryInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            _030000     TEXT,\
            _030001     TEXT,\
            _030100     TEXT,\
            _030101     TEXT,\
            _030200     TEXT,\
            _030210     TEXT,\
            _030220     TEXT,\
            _030221     TEXT,\
            _030222     TEXT,\
            _030223     TEXT,\
            _030230     TEXT,\
            _030231     TEXT,\
            _030232     TEXT,\
            _030233     TEXT,\
            _030234     TEXT,\
            _030240     TEXT,\
            _030241     TEXT,\
            _030242     TEXT,\
            _030243     TEXT,\
            _030250     TEXT,\
            _030251     TEXT,\
            _030252     TEXT,\
            _030253     TEXT,\
            _030254     TEXT,\
            _030255     TEXT,\
            _030256     TEXT,\
            _030257     TEXT,\
            _030258     TEXT,\
            _030260     TEXT,\
_030300     TEXT,\
_030301     TEXT,\
            _030302     TEXT,\
            _030303     TEXT,\
            _030304     TEXT,\
            _030305     TEXT,\
            _030306     TEXT,\
            _030307     TEXT,\
            _030308     TEXT,\
            _030310     TEXT,\
            _030400     TEXT,\
            _030500     TEXT,\
            _030510     TEXT,\
            _030520     TEXT,\
            _030521     TEXT,\
            _030522     TEXT,\
            _030523     TEXT,\
            _030524     TEXT,\
            _030525     TEXT,\
            _030526     TEXT,\
            _030527     TEXT,\
            _030528     TEXT,\
          _030600     TEXT,\
          _030610     TEXT,\
          _030620     TEXT,\
          _030621     TEXT,\
          _030622     TEXT,\
          _030623     TEXT,\
          _030624     TEXT,\
          _030700     TEXT,\
          _030701     TEXT,\
          _030702     TEXT,\
          _030703     TEXT,\
          _030704     TEXT,\
          _030705     TEXT,\
          _030706     TEXT,\
          _030800     TEXT,\
          _030801     TEXT,\
          _030802     TEXT,\
          _030803     TEXT,\
          _030804     TEXT,\
            _030900     TEXT,\
            _030901     TEXT,\
            _030902     TEXT,\
            _030903     TEXT,\
            _031000     TEXT,\
            _031001     TEXT,\
            company_type     TEXT,\
            year     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
// 整改结果信息表
void SearchInfo::createTableRectifyResultInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            修订制度     TEXT,\
            新增制度     TEXT,\
            挽回损失     TEXT,\
            剔除     TEXT,\
            审减     TEXT,\
            处理人     TEXT,\
            宣贯培训     TEXT,\
            其他     TEXT,\
            审核结果     TEXT,\
            注销     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
// 问题清单信息表
void SearchInfo::createTableProblemListInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            序号     TEXT,\
            摘要     TEXT,\
            检查时间     TEXT,\
            检查方式     TEXT,\
            纠正问题     TEXT,\
            完善制度     TEXT,\
            完成时间     TEXT,\
            主要原因     TEXT,\
            完成时限     TEXT,\
            主要原因1     TEXT,\
            责任部门或责任人     TEXT,\
            完成时限1     TEXT,\
            是否销号     TEXT,\
            销号时间     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
// 单位信息表 全
void SearchInfo::createTableAllComInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            code     VARCHAR (30),\
            机构类型     TEXT,\
            主要业务活动   TEXT,\
            行业代码     TEXT,\
            单位注册地及区域 TEXT,\
            区域代码     TEXT,\
            城乡代码     TEXT,\
            单位规模     TEXT,\
            从业期末人数   TEXT,\
            法定代表人    TEXT,\
            执行会记标准类别 TEXT,\
            长途区号     TEXT,\
            固定电话     TEXT,\
            邮政编码     TEXT,\
            电子邮箱     TEXT,\
            网址       TEXT,\
            是否有上一级法人       TEXT,\
            上一级统信代码       TEXT,\
            原组织代码       TEXT,\
            上级单位名称       TEXT,\
            是否设置总审计师       TEXT,\
            总审计师职位层级       TEXT,\
            总审任职方式       TEXT,\
            是否设置内审机构       TEXT,\
            内审机构名称       TEXT,\
            领导机构       TEXT,\
            是否独立设置内审机构       TEXT,\
            财务部门       INTEGER,\
            法务部门       INTEGER,\
            内部控制部门       INTEGER,\
            纪检部门       INTEGER,\
            其他部门       INTEGER,\
            内审层级       TEXT,\
            编制数量       INTEGER,\
            实有人数量       INTEGER,\
            专职人员数量       INTEGER,\
            拥有CIA人数       INTEGER,\
            硕士学历以上人数       INTEGER,\
            本科人数       INTEGER,\
            专科及以下人数       INTEGER,\
            高级职称人数       INTEGER,\
            中级职称人数       INTEGER,\
            初级职称人数       INTEGER,\
            无职称人数       INTEGER,\
            五十岁以上人数       INTEGER,\
            三十至五十岁岁人数       INTEGER,\
            三十岁以下人数       INTEGER,\
            审计数量       INTEGER,\
            会计数量       INTEGER,\
            经济数量       INTEGER,\
            法律数量       INTEGER,\
            管理数量       INTEGER,\
            信息技术数量       INTEGER,\
            工程数量       INTEGER,\
            其他数量       INTEGER,\
            统计负责人       TEXT,\
            填表人       TEXT,\
            联系电话       TEXT,\
            填报日期       TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
// 整改台账
void SearchInfo::createTableStandingBook(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            审计类别     TEXT,\
            审计年度     TEXT,\
            审计单位     TEXT,\
            审计方式     TEXT,\
            责任主体名称     TEXT,\
            审计项目     TEXT,\
            审计项目名称     TEXT,\
            问题类别     TEXT,\
            问题定性     TEXT,\
            问题描述     TEXT,\
            问题定性法规依据     TEXT,\
审计发现问题金额定性     TEXT,\
审计发现问题个数定性     TEXT,\
            涉及金额     REAL,\
            问题描述佐证资料     TEXT,\
            审计期间已整改     TEXT,\
            整改金额     REAL,\
            整改情况1     TEXT,\
            整改情况佐证资料1     TEXT,\
            整改结果     TEXT,\
            整改完成时间     TEXT,\
            尚未整改到位的原因     TEXT,\
            整改预计完成时间     TEXT,\
            整改情况2     TEXT,\
            整改情况佐证资料2     TEXT,\
处分类型     TEXT,\
处分人数     INTEGER,\
移送详细信息     TEXT,\
处理结果     TEXT,\
涉案人员     INTEGER,\
            整改检查结果_检查时间     TEXT,\
            整改检查结果_检查方式     TEXT,\
            整改检查结果_检查结果     TEXT,\
            已整改_纠正问题     TEXT,\
            已整改_完善制度     TEXT,\
            已整改_完成时间     TEXT,\
            正在整改_主要原因     TEXT,\
            正在整改_完成时限     TEXT,\
            尚未整改_主要原因     TEXT,\
            尚未整改_责任部门或责任人     TEXT,\
            尚未整改_完成时限     TEXT,\
            整改成果_金额类整改成果     TEXT,\
            整改成果_金额     REAL,\
            整改成果_非金额类整改成果     TEXT,\
            整改成果_数量     INTEGER,\
            log_time  TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
void SearchInfo::createTableHasEvidences(QString tableName)
{
    QString sql =QString( "CREATE TABLE %1 ( \
            id        INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name  TEXT,\
            code      TEXT,\
            num       INTEGER,\
            evidences TEXT,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
void SearchInfo::createTableNoEvidences(QString tableName)
{
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name TEXT,\
            code     TEXT,\
            num      INTEGER,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
void SearchInfo::createTableHasUnit(QString tableName)
{
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name TEXT,\
            code     TEXT,\
            unit     TEXT,\
            num      INTEGER,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
void SearchInfo::searchComName()
{
    QSqlQuery query;
    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);
        }
    }
}
QVector<QVector<QString>> SearchInfo::getResult(QString &sql,int colCnt)
{
    QVector<QVector<QString>> resultSet;
    QSqlQuery query;
    qDebug()<<sql;
    if(query.exec(sql)){
        while (query.next()) {
            QVector<QString> tmp;
            for(int i=0;i<colCnt;++i){
                tmp.push_back(query.value(i).toString());
            }
            resultSet.append(tmp);
        }
    }
    return resultSet;
}
void SearchInfo::setLabels()
{
    QStringList labels,labels2,labels3;
    labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"<<"审计时间"<<" ";
    labels2<<"ID"<<"指标名称"<<"代码"<<"单位"<<"数量"<<"公司编号"<<"审计时间";
    labels3<<"ID"<<"指标名称"<<"代码"<<"数量"<<"佐证"<<"公司编号"<<"审计时间";
    m_labels["审计项目"] = labels;
    m_labels["内审工作量"] = labels;
    m_labels["问题金额"] = labels3;
    m_labels["问题个数"] = labels3;
    m_labels["问题整改"] = labels3;
    m_labels["问题整改--非金额"] = labels3;
    m_labels["处分"] = labels;
    m_labels["案件线索"] = labels2;
}
void SearchInfo::on_pushButton_search_clicked()
{
    // 获取信息,然后查询
    QString item = ui->comboBox->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]);
    if(ui->checkBox->isChecked()){ // 勾选之后
        sql = QString("select * from %1 where com_id=%2 and time between '%3' and '%4'").arg(m_itemAndTable[item]).arg(m_comInfo[comName])
                .arg(ui->dateEdit_begin->date().toString("yyyy-MM-dd"))
                .arg(ui->dateEdit_end->date().toString("yyyy-MM-dd"));
    }
    qDebug()<<__FUNCTION__<<sql;
    QSqlQuery query;
    if(query.exec(sql)){
        qDebug()<<"size:"<<query.size();
        m_model->setRowCount(0);
        int rowCnt = 0;
        while (query.next()) {
            rowCnt++;
            m_model->setRowCount(rowCnt);
            qDebug()<<query.value(0).toInt();
            for(int i=0;i<7;++i){
                if(query.value(i).isValid()){
                    m_model->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<QVector<QString>> audit_project_res = getResult(audit_project,3);
    QVector<QVector<QString>> audit_workload_res = getResult(audit_workload,3);
    QVector<QVector<QString>> case_clue_res = getResult(case_clue,4);
    QVector<QVector<QString>> problem_count_res = getResult(problem_count,4);
    QVector<QVector<QString>> problem_money_res = getResult(problem_money,4);
    QVector<QVector<QString>> problem_no_money_res = getResult(problem_no_money,4);
    QVector<QVector<QString>> problem_rectification_res = getResult(problem_rectification,4);
    QVector<QVector<QString>> punish_res = getResult(punish,3);
    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 <= 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()");  // 退出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:"<<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());
        }
    }
    //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)");
    if(path.isNull()) return;
    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);
    }
}