| | |
| | | #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> |
| | | |
| | | 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{ |
| | |
| | | qDebug()<<"db open ok"; |
| | | createSqlite(); |
| | | //m_db.close(); |
| | | searchComName(); // 查询公司名 |
| | | }else{ |
| | | qDebug()<<"db open fail"; |
| | | } |
| | | |
| | | // 设置表格列标签 |
| | | setLabels(); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | // 审计项目表 |
| | | 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)").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,\ |
| | | 审计期间已整改 TEXT,\ |
| | | 整改金额 TEXT,\ |
| | | 整改情况1 TEXT,\ |
| | | 整改情况佐证资料1 TEXT,\ |
| | | 整改结果 TEXT,\ |
| | | 整改完成时间 TEXT,\ |
| | | 尚未整改到位的原因 TEXT,\ |
| | | 整改预计完成时间 TEXT,\ |
| | | 整改情况2 TEXT,\ |
| | | 整改情况佐证资料2 TEXT,\ |
| | | 整改检查结果_检查时间 TEXT,\ |
| | | 整改检查结果_检查方式 TEXT,\ |
| | | 整改检查结果_检查结果 TEXT,\ |
| | | 已整改_纠正问题 TEXT,\ |
| | | 已整改_完善制度 TEXT,\ |
| | | 已整改_完成时间 TEXT,\ |
| | | 正在整改_主要原因 TEXT,\ |
| | | 正在整改_完成时限 TEXT,\ |
| | | 尚未整改_主要原因 TEXT,\ |
| | | 尚未整改_责任部门或责任人 TEXT,\ |
| | | 尚未整改_完成时限 TEXT,\ |
| | | 制度建设_修订制度 TEXT,\ |
| | | 制度建设_新增制度 TEXT,\ |
| | | 资金收回_挽回损失 TEXT,\ |
| | | 资金收回_其他 TEXT,\ |
| | | 资金收回_审减 TEXT,\ |
| | | 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) |
| | |
| | | code TEXT,\ |
| | | num INTEGER,\ |
| | | evidences TEXT,\ |
| | | com_id INTEGER\ |
| | | com_id INTEGER,\ |
| | | time TEXT\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | |
| | | kpi_name TEXT,\ |
| | | code TEXT,\ |
| | | num INTEGER,\ |
| | | com_id INTEGER\ |
| | | com_id INTEGER,\ |
| | | time TEXT\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | |
| | | code TEXT,\ |
| | | unit TEXT,\ |
| | | num INTEGER,\ |
| | | com_id INTEGER\ |
| | | com_id INTEGER,\ |
| | | time TEXT\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | |
| | | 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); |
| | | } |
| | | } |