ExportReportManager.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. #ifndef EXPORTREPORTMANAGER_H
  2. # define EXPORTREPORTMANAGER_H
  3. # include <QObject>
  4. class ProjectInfo;
  5. class QWord;
  6. class QAxObject;
  7. class ExportReportManager : public QObject
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit ExportReportManager(QObject *parent = nullptr);
  12. ~ExportReportManager();
  13. ProjectInfo *proj() const;
  14. void setProj(ProjectInfo *proj);
  15. int evalType() const;
  16. void setEvalType(int type);
  17. bool exportReport();
  18. private:
  19. // 初始化 word
  20. bool createWord();
  21. // 插入不同评估类型下共同的信息
  22. void insertProjectInfo();
  23. // 需求分析算法
  24. void insertDemandAlg();
  25. // 需求分析指标体系
  26. void insertDemandIndex();
  27. // 需求分析技术指标
  28. void insertDemandTechIndex();
  29. // 需求分析权重
  30. void insertDemandWeight();
  31. // 需求分析技术重要度
  32. void insertDemandEval();
  33. // 填充方案评估方案设计信息
  34. void insertSchemeDesignInfo();
  35. // 填充方案评估指标信息
  36. void insertSchemeIndex();
  37. // 填充方案数据
  38. void insertSchemeData();
  39. // 填充方案优选算法信息
  40. void insertSchemeAlgInfo();
  41. // 填充方案评估权重数据
  42. void insertSchemeWeightData();
  43. // 插入效能评估指标体系
  44. void insertEffiIndex();
  45. // 填充方案算法信息
  46. void insertEffiAlgInfo();
  47. // 插入效能评估配置数据
  48. void insertEffiConfigData();
  49. // 插入效能评估采集数据
  50. void insertEffiSchemeData();
  51. // 填充效能评估权重数据
  52. void insertEffiWeightData();
  53. // 填充效能评估结果
  54. void insertEffiResult();
  55. // 在一个书签位置插入文字
  56. bool insertText(const QString &bookmark, const QString &text);
  57. // 在一个标签位置插入表格
  58. QAxObject *insertTable(QString bookmark, int row, int column);
  59. void setCellString(QAxObject *table, int row, int column, const QString &text);
  60. void mergeCells(QAxObject *table, int row, int column, int rowSpan, int columnSpan);
  61. QString saveImage(const QString &name, const QPixmap &pixmap);
  62. signals:
  63. private:
  64. ProjectInfo *m_proj = nullptr; // 项目
  65. int m_evalType = 0; // 报告评估类型
  66. int m_schemeType = 0; // 0:方案评估, 1:物元分析, 2:灰色聚类
  67. QWord *m_word = nullptr;
  68. };
  69. #endif // EXPORTREPORTMANAGER_H
  70. /*
  71. bmSchemes->dynamicCall("Select(void)");
  72. QAxObject *selection = m_word->getWordApp()->querySubObject("Selection");
  73. if (!selection)
  74. return;
  75. selection->dynamicCall("InsertAfter(QString&)", "\n");
  76. // selection->dynamicCall("MoveLeft(int)", 1);
  77. selection->querySubObject("ParagraphFormat")->dynamicCall("Alignment", "wdAlignParagraphCenter");
  78. // selection->dynamicCall("TypeText(QString&)", "Table Test");//设置标题
  79. QAxObject *range1 = selection->querySubObject("Range");
  80. QAxObject *tables = doc->querySubObject("Tables");
  81. QAxObject *table = tables->querySubObject("Add(QVariant,int,int)", range1->asVariant(), 2, 2);
  82. */
  83. /**
  84. * 需求分析评估报告标签名称
  85. *
  86. * 封面
  87. * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
  88. *
  89. * 评估目的
  90. * 评估目的:bmEvalPurpose
  91. *
  92. * 评估指标管理
  93. * 描述项目名称:bmProjName21
  94. * 表格项目名称:bmProjName22
  95. * 表格:bmIndexTable
  96. * 图片:bmIndexPic
  97. *
  98. * 技术措施梳理
  99. * 描述项目名称:bmProjName21
  100. * 表格项目名称:bmProjName32
  101. * 表格:bmTechTable
  102. * 图片:bmTechPic
  103. *
  104. * 计算
  105. * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
  106. * 评估算法:bmEvalAlg,评估结果表:bmEvalTable,评估结果图:bmEvalPic
  107. * 权重算法描述:bmWeightAlgDscpt,评估算法描述:bmEvalAlgDscpt
  108. *
  109. * 主要评估结论
  110. * bmVITech1, bmVITech2
  111. *
  112. * 评估结论:bmSchemeConclusion
  113. *
  114. *
  115. * 2023-12-15 by chengxr
  116. */
  117. /**
  118. * 方案优选评估报告标签名称
  119. *
  120. * 封面
  121. * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
  122. *
  123. * 评估目的
  124. * 评估目的:bmEvalPurpose
  125. *
  126. * 方案设计
  127. * 方案描述:bmSchemes
  128. *
  129. * 评估指标管理
  130. * 描述项目名称:bmProjName31
  131. * 表格项目名称:bmProjName32
  132. * 表格:bmIndexTable
  133. *
  134. * 方案数据设置
  135. * 表格项目名称:bmProjName41
  136. * 表格:bmSchemeDataTable
  137. *
  138. * 计算
  139. * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
  140. * 评估算法:bmEvalAlg,评估结果表:bmEvalTable,评估结果图:bmEvalPic
  141. *
  142. * 评估结论:bmSchemeConclusion
  143. *
  144. * 2023-12-13 by chengxr
  145. */
  146. /**
  147. * 效能评估报告标签名称
  148. *
  149. * 封面
  150. * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
  151. *
  152. * 评估目的
  153. * 评估目的:bmEvalPurpose
  154. *
  155. * 指标体系
  156. * 描述项目名称:bmProjName21
  157. * 表格项目名称:bmProjName22
  158. * 表格:bmIndexTable
  159. *
  160. * 评估矩阵设置
  161. * 描述项目名称:bmProjName31
  162. * 表格项目名称:bmProjName32
  163. * 表格:bmConfigTable
  164. *
  165. * 评估数据采集
  166. * 表格:bmEffiDataTable
  167. *
  168. * 计算
  169. * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
  170. * 评估算法:bmEvalAlg,评估结果表:bmEvalTable,评估结果图:bmEvalPic
  171. *
  172. * 评估结论:bmEffiConclusion
  173. *
  174. * 2023-12-14 by chengxr
  175. */
  176. /**
  177. 【中文字号】 【英文字号】 【毫米】 【像素】
  178. 1英寸 72pt 25.30mm 95.6px
  179. 大特号 63pt 22.14mm 83.7px
  180. 特号 54pt 18.97mm 71.7px
  181. 初号 42pt 14.82mm 56px
  182. 小初 36pt 12.70mm 48px
  183. 一号 26pt 9.17mm 34.7px
  184. 小一 24pt 8.47mm 32px
  185. 二号 22pt 7.76mm 29.3px
  186. 小二 18pt 6.35mm 24px
  187. 三号 16pt 5.64mm 21.3px
  188. 小三 15pt 5.29mm 20px
  189. 四号 14pt 4.94mm 18.7px
  190. 小四 12pt 4.23mm 16px
  191. 五号 10.5pt 3.70mm 14px
  192. 小五 9pt 3.18mm 12px
  193. 六号 7.5pt 2.56mm 10px
  194. 小六 6.5pt 2.29mm 8.7px
  195. 七号 5.5pt 1.94mm 7.3px
  196. 八号 5pt 1.76mm 6.7px
  197. * 2023-12-12 by chengxr
  198. */