#include "report.h" #include #include #include #include #include #include #include QString g_bookmark_volume[MAX_COMPARTMENT_NUM] = {BOOKMARK_VOLUME_1,BOOKMARK_VOLUME_2,BOOKMARK_VOLUME_3, BOOKMARK_VOLUME_4}; QString g_bookmark_systest_startpressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_STARTPRESSURE_1,BOOKMARK_SYSTEST_STARTPRESSURE_2,BOOKMARK_SYSTEST_STARTPRESSURE_3, BOOKMARK_SYSTEST_STARTPRESSURE_4}; QString g_bookmark_systest_endpressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_ENDPRESSURE_1,BOOKMARK_SYSTEST_ENDPRESSURE_2,BOOKMARK_SYSTEST_ENDPRESSURE_3, BOOKMARK_SYSTEST_ENDPRESSURE_4}; QString g_bookmark_systest_deltapressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_DELTAPRESSURE_1,BOOKMARK_SYSTEST_DELTAPRESSURE_2,BOOKMARK_SYSTEST_DELTAPRESSURE_3, BOOKMARK_SYSTEST_DELTAPRESSURE_4}; QString g_bookmark_systest_threshold[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_THRESHOLD_1,BOOKMARK_SYSTEST_THRESHOLD_2,BOOKMARK_SYSTEST_THRESHOLD_3, BOOKMARK_SYSTEST_THRESHOLD_4}; QString g_bookmark_valvetest_startpressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_STARTPRESSURE_1,BOOKMARK_VALVETEST_STARTPRESSURE_2,BOOKMARK_VALVETEST_STARTPRESSURE_3, BOOKMARK_VALVETEST_STARTPRESSURE_4}; QString g_bookmark_valvetest_endpressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_ENDPRESSURE_1,BOOKMARK_VALVETEST_ENDPRESSURE_2,BOOKMARK_VALVETEST_ENDPRESSURE_3, BOOKMARK_VALVETEST_ENDPRESSURE_4}; QString g_bookmark_valvetest_deltapressure[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_DELTAPRESSURE_1,BOOKMARK_VALVETEST_DELTAPRESSURE_2,BOOKMARK_VALVETEST_DELTAPRESSURE_3, BOOKMARK_VALVETEST_DELTAPRESSURE_4}; QString g_bookmark_valvetest_threshold[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_THRESHOLD_1,BOOKMARK_VALVETEST_THRESHOLD_2,BOOKMARK_VALVETEST_THRESHOLD_3, BOOKMARK_VALVETEST_THRESHOLD_4}; QString g_bookmark_test_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_TEST_PICTURE_1,BOOKMARK_TEST_PICTURE_2,BOOKMARK_TEST_PICTURE_3, BOOKMARK_TEST_PICTURE_4}; QString g_bookmark_systest_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_SYSTEST_PICTURE_1,BOOKMARK_SYSTEST_PICTURE_2,BOOKMARK_SYSTEST_PICTURE_3, BOOKMARK_SYSTEST_PICTURE_4}; QString g_bookmark_valvetest_picture[MAX_COMPARTMENT_NUM] = {BOOKMARK_VALVETEST_PICTURE_1,BOOKMARK_VALVETEST_PICTURE_2,BOOKMARK_VALVETEST_PICTURE_3, BOOKMARK_VALVETEST_PICTURE_4}; #define REPORT_TEMPLATES_PATH "D:/VaporRecoverySystemTest/Templates/" #define REPORT_TEMPLATES_NAME "report.dotx" Report::Report() { } Report::~Report() { } bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir) { QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QString text_progress1 = codec->toUnicode("正在生成Word报告,请耐心等待"); QString text_progress2 = codec->toUnicode("正在保存中..."); QString text_progress3 = codec->toUnicode("报告已完成"); QString text_progress4 = codec->toUnicode("打开word失败"); //新建一个word应用程序 QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC); //并设置为不可见 word->setProperty("Visible",false); //获取所有的工作文档 QAxObject *documents = word->querySubObject("Documents"); //以test2.dot为模板新建一个文档 documents->dynamicCall("Add(QString)",QString(REPORT_TEMPLATES_PATH)+QString(REPORT_TEMPLATES_NAME)); //documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:\Code\QTapps\build-valve_testing-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\debug\test1.dotx")); //获取当前激活的文档 QAxObject *document = word->querySubObject("ActiveDocument"); emit onProgress(text_progress1); //填写全局信息 //使用单位 QAxObject *bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPANYNAME); if(!bookmark->isNull()) { //QChar cc = 0x2611; QString str = tanker.companyname_str; //str.insert(0, cc); QString sText=codec->toUnicode(str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //车牌 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_CARPLATE); if(!bookmark->isNull()) { QString sText=codec->toUnicode(tanker.licenseplate_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //仓数 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPARTMENT_NUM); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(tanker.compartment_num).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //填写每仓容量 for(int i=0; i< tanker.compartment_num; i++){ Compartment& comp = tanker.get_compartment(i); bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_volume[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString sText=codec->toUnicode(QString::number(comp.m_volume).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } if(comp.m_result.sys_test_ok){ //完成了系统密闭性检测 //密闭性检测的初始表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_startpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.sysstart_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //5 min之后的表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_endpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.sysend_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_deltapressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.delta_sys_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化限值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_threshold[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_standarditem.system_threshold, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(comp.m_result.valve_test_ok){ //完成了阀门密闭性检测 //密闭性检测的初始表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_startpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.valvestart_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //5 min之后的表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_endpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.valveend_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_deltapressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.delta_valve_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化限值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_threshold[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_standarditem.valve_threshold, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(comp.m_bpicReady){ // 获取文档中名字为pic的标签 QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_test_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_all.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_sys.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_valve.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } } } //检测结果 bool systest_pass = true; bool valvetest_pass = true; int nosys_testcount = 0; int novalve_testcount =0; for(int i=0; iquerySubObject("Bookmarks(QVariant)",BOOKMARK_SYSTEST_RESULT); if(!bookmark->isNull()) { QString sText; if(systest_pass){ sText=codec->toUnicode("合格"); }else{ sText=codec->toUnicode("超标"); } qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(novalve_testcount != tanker.compartment_num){ //阀门检测结果 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_VALVETEST_RESULT); if(!bookmark->isNull()) { QString sText; if(valvetest_pass){ sText=codec->toUnicode("合格"); }else{ sText=codec->toUnicode("超标"); } bookmark->dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } //检测日期 QDate date(QDate::currentDate()); bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_YEAR); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.year()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_MONTH); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.month()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_DAY); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.day()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //将文件保存为PDF, qDebug()<<"start save Word file "; emit onProgress(text_progress2); document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(word_path)); document->dynamicCall("Close (boolean)",false); word->dynamicCall("Quit()"); emit onProgress(text_progress3); QThread::msleep(300); emit onProgress("close"); return true; } bool Report::make_PDF(Tanker& tanker, QString word_path, QString pic_dir) { QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QString text_progress1 = codec->toUnicode("正在生成PDF报告,请耐心等待"); QString text_progress2 = codec->toUnicode("正在保存中..."); QString text_progress3 = codec->toUnicode("报告已完成"); QString text_progress4 = codec->toUnicode("打开word失败"); //新建一个word应用程序 QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC); //并设置为不可见 word->setProperty("Visible",false); //获取所有的工作文档 QAxObject *documents = word->querySubObject("Documents"); //以test2.dot为模板新建一个文档 documents->dynamicCall("Add(QString)",QString(REPORT_TEMPLATES_PATH)+QString(REPORT_TEMPLATES_NAME)); //documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:\Code\QTapps\build-valve_testing-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\debug\test1.dotx")); //获取当前激活的文档 QAxObject *document = word->querySubObject("ActiveDocument"); emit onProgress(text_progress1); //填写全局信息 //使用单位 QAxObject *bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPANYNAME); if(!bookmark->isNull()) { //QChar cc = 0x2611; QString str = tanker.companyname_str; //str.insert(0, cc); QString sText=codec->toUnicode(str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //车牌 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_CARPLATE); if(!bookmark->isNull()) { QString sText=codec->toUnicode(tanker.licenseplate_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //仓数 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_COMPARTMENT_NUM); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(tanker.compartment_num).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //填写每仓容量 for(int i=0; i< tanker.compartment_num; i++){ Compartment& comp = tanker.get_compartment(i); bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_volume[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString sText=codec->toUnicode(QString::number(comp.m_volume).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } if(comp.m_result.sys_test_ok){ //完成了系统密闭性检测 //密闭性检测的初始表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_startpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.sysstart_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //5 min之后的表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_endpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.sysend_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_deltapressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.delta_sys_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化限值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_threshold[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_standarditem.system_threshold, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(comp.m_result.valve_test_ok){ //完成了阀门密闭性检测 //密闭性检测的初始表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_startpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.valvestart_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //5 min之后的表压 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_endpressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.valveend_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_deltapressure[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_result.delta_valve_pressure, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //压力变化限值 bookmark = document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_threshold[i]); if(!bookmark->isNull()) { //int volume = m_tank.m_comparts[i].m_volume; QString pressure_str = QString("%1").arg(comp.m_standarditem.valve_threshold, 4,'f',2,QLatin1Char('0')); QString sText=codec->toUnicode(pressure_str.toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(comp.m_bpicReady){ // 获取文档中名字为pic的标签 QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_test_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_all.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_systest_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_sys.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_valvetest_picture[i]); // 选中标签,将图片插入到标签位置 if(!bookmark_pic->isNull()) { QString pic_path_str = pic_dir+tanker.licenseplate_str+"_"+QString::number(i+1)+"_valve.jpg"; qDebug()<dynamicCall("Select(void)"); QAxObject *range; range = bookmark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } } } } //检测结果 bool systest_pass = true; bool valvetest_pass = true; int nosys_testcount = 0; int novalve_testcount =0; for(int i=0; iquerySubObject("Bookmarks(QVariant)",BOOKMARK_SYSTEST_RESULT); if(!bookmark->isNull()) { QString sText; if(systest_pass){ sText=codec->toUnicode("合格"); }else{ sText=codec->toUnicode("超标"); } qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } if(novalve_testcount != tanker.compartment_num){ //阀门检测结果 bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_VALVETEST_RESULT); if(!bookmark->isNull()) { QString sText; if(valvetest_pass){ sText=codec->toUnicode("合格"); }else{ sText=codec->toUnicode("超标"); } bookmark->dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } } //检测日期 QDate date(QDate::currentDate()); bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_YEAR); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.year()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_MONTH); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.month()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } bookmark = document->querySubObject("Bookmarks(QVariant)",BOOKMARK_DATE_DAY); if(!bookmark->isNull()) { QString sText=codec->toUnicode(QString::number(date.day()).toStdString().c_str()); //此处为替换内容 qDebug()<dynamicCall("Select(void)"); //选中要选中的区域 bookmark->querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //将文件保存为PDF, qDebug()<<"start save PDF file "; emit onProgress(text_progress2); //document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(word_path)); QVariant OutputFileName(word_path); QVariant ExportFormat(17); //17是pdf QVariant OpenAfterExport(false); //保存后是否自动打开 document->querySubObject("ExportAsFixedFormat(const QVariant&,const QVariant&,const QVariant&)", OutputFileName, ExportFormat, OpenAfterExport); document->dynamicCall("Close (boolean)",false); word->dynamicCall("Quit()"); emit onProgress(text_progress3); QThread::msleep(300); emit onProgress("close"); return true; }