ExportReportManager.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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 insertSchemeDesignInfo();
  25. // 填充方案评估指标信息
  26. void insertSchemeIndex();
  27. // 填充方案数据
  28. void insertSchemeData();
  29. // 填充方案算法信息
  30. void insertSchemeAlgInfo();
  31. // 填充方案评估权重数据
  32. void insertSchemeWeightData();
  33. // 插入效能评估指标体系
  34. void insertEffiIndex();
  35. // 在一个书签位置插入文字
  36. bool insertText(const QString &bookmark, const QString &text);
  37. // 在一个标签位置插入表格
  38. QAxObject *insertTable(QString bookmark, int row, int column);
  39. void setCellString(QAxObject *table, int row, int column, const QString &text);
  40. void mergeCells(QAxObject *table, int row, int column, int rowSpan, int columnSpan);
  41. QString saveImage(const QString &name, const QPixmap &pixmap);
  42. signals:
  43. private:
  44. ProjectInfo *m_proj = nullptr; // 项目
  45. int m_evalType = 0; // 报告评估类型
  46. QWord *m_word = nullptr;
  47. };
  48. #endif // EXPORTREPORTMANAGER_H
  49. /*
  50. bmSchemes->dynamicCall("Select(void)");
  51. QAxObject *selection = m_word->getWordApp()->querySubObject("Selection");
  52. if (!selection)
  53. return;
  54. selection->dynamicCall("InsertAfter(QString&)", "\n");
  55. // selection->dynamicCall("MoveLeft(int)", 1);
  56. selection->querySubObject("ParagraphFormat")->dynamicCall("Alignment", "wdAlignParagraphCenter");
  57. // selection->dynamicCall("TypeText(QString&)", "Table Test");//设置标题
  58. QAxObject *range1 = selection->querySubObject("Range");
  59. QAxObject *tables = doc->querySubObject("Tables");
  60. QAxObject *table = tables->querySubObject("Add(QVariant,int,int)", range1->asVariant(), 2, 2);
  61. */
  62. /**
  63. * 方案优选评估报告标签名称
  64. *
  65. * 封面
  66. * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
  67. *
  68. * 评估目的
  69. * 评估目的:bmEvalPurpose
  70. *
  71. * 方案设计
  72. * 方案描述:bmSchemes
  73. *
  74. * 评估指标管理
  75. * 描述项目名称:bmProjName31
  76. * 表格项目名称:bmProjName32
  77. * 表格:bmIndexTable
  78. *
  79. * 方案数据设置
  80. * 表格项目名称:bmProjName41
  81. * 表格:bmSchemeDataTable
  82. *
  83. * 计算
  84. * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
  85. * 评估算法:bmEvalAlg,指标权重表:bmEvalTable,指标权重图:bmEvalPic
  86. *
  87. * 评估结论:bmSchemeConclusion
  88. *
  89. * 2023-12-13 by chengxr
  90. */
  91. /**
  92. * 效能评估报告标签名称
  93. *
  94. * 封面
  95. * 项目名称:bmProjName,单位:bmProjUnit,时间:bmProjDate
  96. *
  97. * 评估目的
  98. * 评估目的:bmEvalPurpose
  99. *
  100. * 指标体系
  101. * 描述项目名称:bmProjName21
  102. * 表格项目名称:bmProjName22
  103. * 表格:bmIndexTable
  104. *
  105. * 评估矩阵设置
  106. * 描述项目名称:bmProjName31
  107. * 表格项目名称:bmProjName32
  108. * 表格:bmConfigTable
  109. *
  110. * 评估数据采集
  111. * 表格:bmEffiDataTable
  112. *
  113. * 计算
  114. * 权重算法:bmWeightAlg,指标权重表:bmWeightTable,指标权重图:bmWeightPic
  115. * 评估算法:bmEvalAlg,指标权重表:bmEvalTable,指标权重图:bmEvalPic
  116. *
  117. * 评估结论:bmEffiConclusion
  118. *
  119. * 2023-12-14 by chengxr
  120. */
  121. /**
  122. 【中文字号】 【英文字号】 【毫米】 【像素】
  123. 1英寸 72pt 25.30mm 95.6px
  124. 大特号 63pt 22.14mm 83.7px
  125. 特号 54pt 18.97mm 71.7px
  126. 初号 42pt 14.82mm 56px
  127. 小初 36pt 12.70mm 48px
  128. 一号 26pt 9.17mm 34.7px
  129. 小一 24pt 8.47mm 32px
  130. 二号 22pt 7.76mm 29.3px
  131. 小二 18pt 6.35mm 24px
  132. 三号 16pt 5.64mm 21.3px
  133. 小三 15pt 5.29mm 20px
  134. 四号 14pt 4.94mm 18.7px
  135. 小四 12pt 4.23mm 16px
  136. 五号 10.5pt 3.70mm 14px
  137. 小五 9pt 3.18mm 12px
  138. 六号 7.5pt 2.56mm 10px
  139. 小六 6.5pt 2.29mm 8.7px
  140. 七号 5.5pt 1.94mm 7.3px
  141. 八号 5pt 1.76mm 6.7px
  142. * 2023-12-12 by chengxr
  143. */