/******************************************************************** created: 2018/03/27 author: wangyuanyuan@vishee.com edit_by: description: 生成肌力训练报告 *********************************************************************/ #include "CreateReport.h" #include #include CreateReport::CreateReport() { m_wordOperate = NULL; titleFontName = "SongTi"; infoFontName = "Microsoft YaHei"; tableFontName = "Microsoft YaHei"; wordFontName = "Microsoft YaHei"; titleFontSize = 18; infoFontSize = 11; tableFontSize = 11; wordFontSize = 9; } CreateReport::~CreateReport() { ReleaseWord(); } void CreateReport::GetReport(REPORT_INFO& reportInfo,QStringList& strImagePathList) { _reportInfo = reportInfo; _strImagePathList = strImagePathList; if(!CreateWord()) { } } bool CreateReport::CreateWord()//创建word { qDebug() << "CreateWord" << endl; if(InitWord() == false) { // LOG_ERROR("Init Word Failure"); return false; } SetPageMargin(); m_wordOperate->SetVisible(false); DrawTitle(); DrawPatientInfo(); //DrawTable(); //DrawExplain(); //DrawMark(); //DrawPic(); m_wordOperate->insertEnter(); for(int i = 0; i < _strImagePathList.size();i++){ qDebug() << _strImagePathList.at(i) << endl; m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter); m_wordOperate->InsertPicture(_strImagePathList.at(i)); m_wordOperate->insertEnter(); if(_strImagePathList.at(i).contains("TimeDomain")) m_wordOperate->SetText("时域图"); if(_strImagePathList.at(i).contains("FrequencyDomain")) m_wordOperate->SetText("频域图"); if(_strImagePathList.at(i).contains("TrendChart")) m_wordOperate->SetText("趋势图"); if(_strImagePathList.at(i).contains("EnvChart")) m_wordOperate->SetText("包络图"); m_wordOperate->insertEnter(); } DrawTable(); m_wordOperate->SetVisible(true); return true; } bool CreateReport::InitWord()//初始化word { if(m_wordOperate == NULL) m_wordOperate = new WordOperate(); return m_wordOperate->open(false); } void CreateReport::ReleaseWord()//释放word { if(m_wordOperate != NULL) { m_wordOperate->close(); delete m_wordOperate; m_wordOperate = NULL; } } void CreateReport::SetPageMargin()//设置边距 { double dbLeft = 0.0,dbRight = 0.0,dbTop = 0.0,dbBottom = 0.0; m_wordOperate->GetPageMargin(dbLeft,dbTop,dbRight,dbBottom); m_wordOperate->SetPageMargin(dbLeft/2,dbTop/2,dbRight/2,dbBottom/2); } void CreateReport::DrawTitle()//画标题 { m_wordOperate->SetFont(titleFontName,titleFontSize,true); m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter); m_wordOperate->SetText("故障分析诊断报告"); m_wordOperate->SetText("\n"); /*m_wordOperate->SetFont(titleFontName,titleFontSize,true); m_wordOperate->SetText(QStringLiteral("XXX\n"));*/ } void CreateReport::DrawPatientInfo() { int iLength=35; m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft); m_wordOperate->SetFont(infoFontName,infoFontSize,false); QString str,temp; QString strName,strSex,strAge,strDate,strCount,strTime; str=QStringLiteral("终端名称:Data Watch"); temp = _reportInfo.DeviceName; str+=temp; strName=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2); iLength = 28; str=QStringLiteral("终端MAC:"); temp = _reportInfo.DeviceMac; str+=temp; strSex=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2); iLength = 15; str=QStringLiteral("采集时间:"); str+=_reportInfo.DevicemCollectTime; strAge=QString("%1%2").arg(str).arg("\t",iLength-str.count()*2); str = strName+strSex+strAge; m_wordOperate->SetText(str); m_wordOperate->moveForEnd(); m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft); m_wordOperate->SetFont(infoFontName,infoFontSize,false); iLength = 35; str = QString("%1").arg(QStringLiteral("报告时间:")); QDateTime current_date_time = QDateTime::currentDateTime(); QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss"); str = str + current_date; m_wordOperate->SetText(str); m_wordOperate->moveForEnd(); } void CreateReport::DrawTable() { // wps int nTable=1; m_wordOperate->SetAlign(WordOperate::AlignmentTypeCenter); m_wordOperate->SetParagraphSpacing(WordOperate::SpaceExactly,30); m_wordOperate->SetFont(tableFontName,tableFontSize,false); m_wordOperate->intsertTable(4,1); m_wordOperate->SetTableRowHeight(nTable,2,200); m_wordOperate->SetTableRowHeight(nTable,4,300); QAxObject *cell=NULL; cell = m_wordOperate->setCellString(nTable,1,1,QStringLiteral("报告概述")); cell = m_wordOperate->setCellString(nTable,3,1,QStringLiteral("详细报告")); //m_wordOperate->insertCellPic(nTable, 4,1,"E://WorkSpace//QT//build-ChaosDataPlayer-Desktop_Qt_5_12_11_MinGW_32_bit-Release//release//report//standard.png"); /*m_wordOperate->MergeCell(nTable,1,1,1,3,true); m_wordOperate->MergeCell(nTable,3,1,3,3,true); m_wordOperate->SetTableRowHeight(nTable,3,300);*/ /*m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); m_wordOperate->moveForEnd(); m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); m_wordOperate->moveForEnd(); m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); QAxObject *cell=NULL; cell = m_wordOperate->setCellString(nTable,1,1,QStringLiteral("诊断结果")); cell = m_wordOperate->setCellString(nTable,2,1,QStringLiteral("时域图")); cell = m_wordOperate->setCellString(nTable,2,2,QStringLiteral("频域图")); cell = m_wordOperate->setCellString(nTable,2,3,QStringLiteral("包络图")); m_wordOperate->insertCellPic(nTable, 2,1,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); m_wordOperate->insertCellPic(nTable, 2,2,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); m_wordOperate->insertCellPic(nTable, 2,3,"E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); /* m_wordOperate->SetTableFont(nTable,1,1,tableFontName,tableFontSize,true); cell = m_wordOperate->setCellString(nTable,1,2,QStringLiteral("XX")); m_wordOperate->SetTableFont(nTable,1,2,tableFontName,tableFontSize,true); m_wordOperate->MergeCell(nTable,1,3,1,4,true); cell = m_wordOperate->setCellString(nTable,1,3,QStringLiteral("XX")); m_wordOperate->SetTableFont(nTable,1,3,tableFontName,tableFontSize,true); cell = m_wordOperate->setCellString(nTable,1,4,QStringLiteral("XX")); m_wordOperate->SetTableFont(nTable,1,4,tableFontName,tableFontSize,true); /*m_wordOperate->MergeCell(nTable,2,1,10,1,true); cell= m_wordOperate->setCellString(nTable,2,1,QStringLiteral("XX")); m_wordOperate->MergeCell(nTable,2,2,6,2,true); m_wordOperate->setCellString(nTable,2,2,QStringLiteral("XX")); m_wordOperate->MergeCell(nTable,2,3,4,3,true); m_wordOperate->setCellString(nTable,2,3,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,5,3,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,6,3,QStringLiteral("XX")); m_wordOperate->MergeCell(nTable,7,2,10,2,true); m_wordOperate->setCellString(nTable,7,2,QStringLiteral("XX")); m_wordOperate->MergeCell(nTable,7,3,9,3,true); m_wordOperate->setCellString(nTable,7,3,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,10,3,QStringLiteral("XX")); cell = m_wordOperate->setCellString(nTable,11,1,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,11,2,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,11,3,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,2,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,3,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,4,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,5,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,6,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,7,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,8,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,9,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,10,4,QStringLiteral("XX")); m_wordOperate->setCellString(nTable,11,4,QStringLiteral("XX"));*/ } void CreateReport::DrawExplain() { m_wordOperate->moveForEnd(); m_wordOperate->SetFont(wordFontName,wordFontSize); m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft); m_wordOperate->SetParagraphSpacing(WordOperate::Space1); QString str; str = QStringLiteral("简要报告解读:"); str += "\n"; m_wordOperate->SetText(str); m_wordOperate->SetFont(wordFontName,wordFontSize); str = QStringLiteral("1、XXXXXXXX"); str +="\n"; m_wordOperate->SetText(str); str = QStringLiteral("2、XXXXX。"); str += "\n"; m_wordOperate->SetText(str); str = QStringLiteral("3、XX。"); str += "\n"; m_wordOperate->SetText(str); m_wordOperate->SetFont(wordFontName,wordFontSize); } void CreateReport::DrawMark() { //备注: QString str; m_wordOperate->moveForEnd(); m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft); m_wordOperate->SetFont(wordFontName,12,false,false,true); str = QStringLiteral("备注:\n"); m_wordOperate->SetText(str); m_wordOperate->SetFont(wordFontName,12,false,false,false); m_wordOperate->intsertTable(2,1); m_wordOperate->MergeCell(2,1,1,2,1); m_wordOperate->setCellString(2,1,1,"xxx"); m_wordOperate->moveForEnd(); m_wordOperate->SetAlign(WordOperate::AlignmentTypeLeft); m_wordOperate->SetFont(wordFontName,11,false,false,false); str=QStringLiteral("xxx:"); m_wordOperate->SetText(str); m_wordOperate->SetFont(wordFontName,11,false,false,false); m_wordOperate->SetText("____________________________"); } void CreateReport::DrawPic() { m_wordOperate->SetMarkPic("Pic1", "E://WorkSpace//QT//ChaosDataPlayerDemo//images//logo.png"); }