xlsxconditionalformatting.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // xlsxconditionalformatting.h
  2. #ifndef QXLSX_XLSXCONDITIONALFORMATTING_H
  3. #define QXLSX_XLSXCONDITIONALFORMATTING_H
  4. #include "xlsxcellrange.h"
  5. #include "xlsxcellreference.h"
  6. #include "xlsxglobal.h"
  7. #include <QColor>
  8. #include <QList>
  9. #include <QSharedDataPointer>
  10. #include <QString>
  11. #include <QXmlStreamReader>
  12. #include <QXmlStreamWriter>
  13. class ConditionalFormattingTest;
  14. QT_BEGIN_NAMESPACE_XLSX
  15. class Format;
  16. class Worksheet;
  17. class Styles;
  18. class ConditionalFormattingPrivate;
  19. class QXLSX_EXPORT ConditionalFormatting
  20. {
  21. public:
  22. enum HighlightRuleType {
  23. Highlight_LessThan,
  24. Highlight_LessThanOrEqual,
  25. Highlight_Equal,
  26. Highlight_NotEqual,
  27. Highlight_GreaterThanOrEqual,
  28. Highlight_GreaterThan,
  29. Highlight_Between,
  30. Highlight_NotBetween,
  31. Highlight_ContainsText,
  32. Highlight_NotContainsText,
  33. Highlight_BeginsWith,
  34. Highlight_EndsWith,
  35. Highlight_TimePeriod,
  36. Highlight_Duplicate,
  37. Highlight_Unique,
  38. Highlight_Blanks,
  39. Highlight_NoBlanks,
  40. Highlight_Errors,
  41. Highlight_NoErrors,
  42. Highlight_Top,
  43. Highlight_TopPercent,
  44. Highlight_Bottom,
  45. Highlight_BottomPercent,
  46. Highlight_AboveAverage,
  47. Highlight_AboveOrEqualAverage,
  48. Highlight_AboveStdDev1,
  49. Highlight_AboveStdDev2,
  50. Highlight_AboveStdDev3,
  51. Highlight_BelowAverage,
  52. Highlight_BelowOrEqualAverage,
  53. Highlight_BelowStdDev1,
  54. Highlight_BelowStdDev2,
  55. Highlight_BelowStdDev3,
  56. Highlight_Expression
  57. };
  58. enum ValueObjectType { VOT_Formula, VOT_Max, VOT_Min, VOT_Num, VOT_Percent, VOT_Percentile };
  59. public:
  60. ConditionalFormatting();
  61. ConditionalFormatting(const ConditionalFormatting &other);
  62. ~ConditionalFormatting();
  63. public:
  64. bool addHighlightCellsRule(HighlightRuleType type,
  65. const Format &format,
  66. bool stopIfTrue = false);
  67. bool addHighlightCellsRule(HighlightRuleType type,
  68. const QString &formula1,
  69. const Format &format,
  70. bool stopIfTrue = false);
  71. bool addHighlightCellsRule(HighlightRuleType type,
  72. const QString &formula1,
  73. const QString &formula2,
  74. const Format &format,
  75. bool stopIfTrue = false);
  76. bool addDataBarRule(const QColor &color, bool showData = true, bool stopIfTrue = false);
  77. bool addDataBarRule(const QColor &color,
  78. ValueObjectType type1,
  79. const QString &val1,
  80. ValueObjectType type2,
  81. const QString &val2,
  82. bool showData = true,
  83. bool stopIfTrue = false);
  84. bool
  85. add2ColorScaleRule(const QColor &minColor, const QColor &maxColor, bool stopIfTrue = false);
  86. bool add3ColorScaleRule(const QColor &minColor,
  87. const QColor &midColor,
  88. const QColor &maxColor,
  89. bool stopIfTrue = false);
  90. QList<CellRange> ranges() const;
  91. void addCell(const CellReference &cell);
  92. void addCell(int row, int col);
  93. void addRange(int firstRow, int firstCol, int lastRow, int lastCol);
  94. void addRange(const CellRange &range);
  95. // needed by QSharedDataPointer!!
  96. ConditionalFormatting &operator=(const ConditionalFormatting &other);
  97. private:
  98. friend class Worksheet;
  99. friend class ::ConditionalFormattingTest;
  100. private:
  101. bool saveToXml(QXmlStreamWriter &writer) const;
  102. bool loadFromXml(QXmlStreamReader &reader, Styles *styles = nullptr);
  103. QSharedDataPointer<ConditionalFormattingPrivate> d;
  104. };
  105. QT_END_NAMESPACE_XLSX
  106. #endif // QXLSX_XLSXCONDITIONALFORMATTING_H