File indexing completed on 2024-06-23 03:45:57

0001 // xlsxworkbook.h
0002 
0003 #ifndef XLSXWORKBOOK_H
0004 #define XLSXWORKBOOK_H
0005 
0006 #include <QtGlobal>
0007 #include <QList>
0008 #include <QImage>
0009 #include <QSharedPointer>
0010 #include <QIODevice>
0011 
0012 #include <memory>
0013 
0014 #include "xlsxglobal.h"
0015 #include "xlsxabstractooxmlfile.h"
0016 #include "xlsxabstractsheet.h"
0017 
0018 QT_BEGIN_NAMESPACE_XLSX
0019 
0020 class SharedStrings;
0021 class Styles;
0022 class Drawing;
0023 class Document;
0024 class Theme;
0025 class Relationships;
0026 class DocumentPrivate;
0027 class MediaFile;
0028 class Chart;
0029 class Chartsheet;
0030 class Worksheet;
0031 class WorkbookPrivate;
0032 
0033 class QXLSX_EXPORT Workbook : public AbstractOOXmlFile
0034 {
0035     Q_DECLARE_PRIVATE(Workbook)
0036 public:
0037     ~Workbook();
0038 
0039     int sheetCount() const;
0040     AbstractSheet *sheet(int index) const;
0041 
0042     AbstractSheet *addSheet(const QString &name = QString(), AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet);
0043     AbstractSheet *insertSheet(int index, const QString &name = QString(), AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet);
0044     bool renameSheet(int index, const QString &name);
0045     bool deleteSheet(int index);
0046     bool copySheet(int index, const QString &newName=QString());
0047     bool moveSheet(int srcIndex, int distIndex);
0048 
0049     AbstractSheet *activeSheet() const;
0050     bool setActiveSheet(int index);
0051 
0052 //    void addChart();
0053     bool defineName(const QString &name, const QString &formula, const QString &comment=QString(), const QString &scope=QString());
0054     bool isDate1904() const;
0055     void setDate1904(bool date1904);
0056     bool isStringsToNumbersEnabled() const;
0057     void setStringsToNumbersEnabled(bool enable=true);
0058     bool isStringsToHyperlinksEnabled() const;
0059     void setStringsToHyperlinksEnabled(bool enable=true);
0060     bool isHtmlToRichStringEnabled() const;
0061     void setHtmlToRichStringEnabled(bool enable=true);
0062     QString defaultDateFormat() const;
0063     void setDefaultDateFormat(const QString &format);
0064 
0065     //internal used member
0066     void addMediaFile(std::shared_ptr<MediaFile> media, bool force=false);
0067     QList<std::shared_ptr<MediaFile> > mediaFiles() const;
0068     void addChartFile(QSharedPointer<Chart> chartFile);
0069     QList<QSharedPointer<Chart> > chartFiles() const;
0070 
0071 private:
0072     friend class Worksheet;
0073     friend class Chartsheet;
0074     friend class WorksheetPrivate;
0075     friend class Document;
0076     friend class DocumentPrivate;
0077 
0078     Workbook(Workbook::CreateFlag flag);
0079 
0080     void saveToXmlFile(QIODevice *device) const override;
0081     bool loadFromXmlFile(QIODevice *device) override;
0082 
0083     SharedStrings *sharedStrings() const;
0084     Styles *styles();
0085     Theme *theme();
0086     QList<QImage> images();
0087     QList<Drawing *> drawings();
0088     QList<QSharedPointer<AbstractSheet> > getSheetsByTypes(AbstractSheet::SheetType type) const;
0089     QStringList worksheetNames() const;
0090     AbstractSheet *addSheet(const QString &name, int sheetId, AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet);
0091 };
0092 
0093 QT_END_NAMESPACE_XLSX
0094 
0095 #endif // XLSXWORKBOOK_H