xlsxdocument.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. // xlsxdocument.h
  2. #ifndef QXLSX_XLSXDOCUMENT_H
  3. #define QXLSX_XLSXDOCUMENT_H
  4. #include "xlsxformat.h"
  5. #include "xlsxglobal.h"
  6. #include "xlsxworksheet.h"
  7. #include <QIODevice>
  8. #include <QImage>
  9. #include <QObject>
  10. #include <QVariant>
  11. QT_BEGIN_NAMESPACE_XLSX
  12. class Workbook;
  13. class Cell;
  14. class CellRange;
  15. class DataValidation;
  16. class ConditionalFormatting;
  17. class Chart;
  18. class CellReference;
  19. class DocumentPrivate;
  20. class QXLSX_EXPORT Document : public QObject
  21. {
  22. Q_OBJECT
  23. Q_DECLARE_PRIVATE(Document) // D-Pointer. Qt classes have a Q_DECLARE_PRIVATE
  24. // macro in the public class. The macro reads: qglobal.h
  25. public:
  26. explicit Document(QObject *parent = nullptr);
  27. Document(const QString &xlsxName, QObject *parent = nullptr);
  28. Document(QIODevice *device, QObject *parent = nullptr);
  29. ~Document();
  30. bool write(const CellReference &cell, const QVariant &value, const Format &format = Format());
  31. bool write(int row, int col, const QVariant &value, const Format &format = Format());
  32. QVariant read(const CellReference &cell) const;
  33. QVariant read(int row, int col) const;
  34. int insertImage(int row, int col, const QImage &image);
  35. bool getImage(int imageIndex, QImage &img);
  36. bool getImage(int row, int col, QImage &img);
  37. uint getImageCount();
  38. Chart *insertChart(int row, int col, const QSize &size);
  39. bool mergeCells(const CellRange &range, const Format &format = Format());
  40. bool unmergeCells(const CellRange &range);
  41. bool setColumnWidth(const CellRange &range, double width);
  42. bool setColumnFormat(const CellRange &range, const Format &format);
  43. bool setColumnHidden(const CellRange &range, bool hidden);
  44. bool setColumnWidth(int column, double width);
  45. bool setColumnFormat(int column, const Format &format);
  46. bool setColumnHidden(int column, bool hidden);
  47. bool setColumnWidth(int colFirst, int colLast, double width);
  48. bool setColumnFormat(int colFirst, int colLast, const Format &format);
  49. bool setColumnHidden(int colFirst, int colLast, bool hidden);
  50. double columnWidth(int column);
  51. Format columnFormat(int column);
  52. bool isColumnHidden(int column);
  53. bool setRowHeight(int row, double height);
  54. bool setRowFormat(int row, const Format &format);
  55. bool setRowHidden(int row, bool hidden);
  56. bool setRowHeight(int rowFirst, int rowLast, double height);
  57. bool setRowFormat(int rowFirst, int rowLast, const Format &format);
  58. bool setRowHidden(int rowFirst, int rowLast, bool hidden);
  59. double rowHeight(int row);
  60. Format rowFormat(int row);
  61. bool isRowHidden(int row);
  62. bool groupRows(int rowFirst, int rowLast, bool collapsed = true);
  63. bool groupColumns(int colFirst, int colLast, bool collapsed = true);
  64. bool addDataValidation(const DataValidation &validation);
  65. bool addConditionalFormatting(const ConditionalFormatting &cf);
  66. std::shared_ptr<Cell> cellAt(const CellReference &cell) const;
  67. std::shared_ptr<Cell> cellAt(int row, int col) const;
  68. bool defineName(const QString &name,
  69. const QString &formula,
  70. const QString &comment = QString(),
  71. const QString &scope = QString());
  72. CellRange dimension() const;
  73. QString documentProperty(const QString &name) const;
  74. void setDocumentProperty(const QString &name, const QString &property);
  75. QStringList documentPropertyNames() const;
  76. QStringList sheetNames() const;
  77. bool addSheet(const QString &name = QString(),
  78. AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet);
  79. bool insertSheet(int index,
  80. const QString &name = QString(),
  81. AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet);
  82. bool selectSheet(const QString &name);
  83. bool selectSheet(int index);
  84. bool renameSheet(const QString &oldName, const QString &newName);
  85. bool copySheet(const QString &srcName, const QString &distName = QString());
  86. bool moveSheet(const QString &srcName, int distIndex);
  87. bool deleteSheet(const QString &name);
  88. Workbook *workbook() const;
  89. AbstractSheet *sheet(const QString &sheetName) const;
  90. AbstractSheet *currentSheet() const;
  91. Worksheet *currentWorksheet() const;
  92. bool save() const;
  93. bool saveAs(const QString &xlsXname) const;
  94. bool saveAs(QIODevice *device) const;
  95. bool saveAsCsv(const QString mainCSVFileName) const;
  96. // copy style from one xlsx file to other
  97. static bool copyStyle(const QString &from, const QString &to);
  98. bool isLoadPackage() const;
  99. bool load() const; // equals to isLoadPackage()
  100. bool changeimage(int filenoinmidea, QString newfile); // add by liufeijin20181025
  101. bool autosizeColumnWidth(const CellRange &range);
  102. bool autosizeColumnWidth(int column);
  103. bool autosizeColumnWidth(int colFirst, int colLast);
  104. bool autosizeColumnWidth();
  105. private:
  106. QMap<int, int> getMaximalColumnWidth(int firstRow = 1, int lastRow = INT_MAX);
  107. private:
  108. Q_DISABLE_COPY(Document) // Disables the use of copy constructors and
  109. // assignment operators for the given Class.
  110. DocumentPrivate *const d_ptr;
  111. };
  112. QT_END_NAMESPACE_XLSX
  113. #endif // QXLSX_XLSXDOCUMENT_H