Browse Source

Add convenient function saveToXmlData() for worksheet

master
Debao Zhang 12 years ago
parent
commit
d2fe2769de
  1. 12
      src/xlsx/xlsxpackage.cpp
  2. 36
      src/xlsx/xlsxworksheet.cpp
  3. 10
      src/xlsx/xlsxworksheet.h

12
src/xlsx/xlsxpackage.cpp

@ -180,22 +180,14 @@ void Package::writeWorksheetFiles(ZipWriter &zipWriter)
if (sheet->isChartsheet()) if (sheet->isChartsheet())
continue; continue;
QByteArray data; zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(index), sheet->saveToXmlData());
QBuffer buffer(&data);
buffer.open(QIODevice::WriteOnly);
sheet->saveToXmlFile(&buffer);
zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(index), data);
index += 1; index += 1;
} }
} }
void Package::writeWorkbookFile(ZipWriter &zipWriter) void Package::writeWorkbookFile(ZipWriter &zipWriter)
{ {
QByteArray data; zipWriter.addFile(QStringLiteral("xl/workbook.xml"), m_workbook->saveToXmlData());
QBuffer buffer(&data);
buffer.open(QIODevice::WriteOnly);
m_workbook->saveToXmlFile(&buffer);
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), data);
} }
void Package::writeDrawingFiles(ZipWriter &zipWriter) void Package::writeDrawingFiles(ZipWriter &zipWriter)

36
src/xlsx/xlsxworksheet.cpp

@ -38,6 +38,7 @@
#include <QUrl> #include <QUrl>
#include <QRegularExpression> #include <QRegularExpression>
#include <QDebug> #include <QDebug>
#include <QBuffer>
#include <stdint.h> #include <stdint.h>
@ -83,6 +84,9 @@ WorksheetPrivate::~WorksheetPrivate()
foreach (XlsxColumnInfo *col, colsInfo) foreach (XlsxColumnInfo *col, colsInfo)
delete col; delete col;
if (drawing)
delete drawing;
} }
/* /*
@ -202,11 +206,11 @@ int WorksheetPrivate::checkDimensions(int row, int col, bool ignore_row, bool ig
* \param index Index of the worksheet in the workbook * \param index Index of the worksheet in the workbook
* \param parent * \param parent
*/ */
Worksheet::Worksheet(const QString &name, Workbook *parent) : Worksheet::Worksheet(const QString &name, Workbook *workbook) :
QObject(parent), d_ptr(new WorksheetPrivate(this)) d_ptr(new WorksheetPrivate(this))
{ {
d_ptr->name = name; d_ptr->name = name;
d_ptr->workbook = parent; d_ptr->workbook = workbook;
} }
Worksheet::~Worksheet() Worksheet::~Worksheet()
@ -877,7 +881,7 @@ void Worksheet::prepareImage(int index, int image_id, int drawing_id)
{ {
Q_D(Worksheet); Q_D(Worksheet);
if (!d->drawing) { if (!d->drawing) {
d->drawing = new Drawing(this); d->drawing = new Drawing;
d->drawing->embedded = true; d->drawing->embedded = true;
d->externDrawingList.append(QStringLiteral("../drawings/drawing%1.xml").arg(drawing_id)); d->externDrawingList.append(QStringLiteral("../drawings/drawing%1.xml").arg(drawing_id));
} }
@ -1038,4 +1042,28 @@ XlsxObjectPositionData WorksheetPrivate::pixelsToEMUs(const XlsxObjectPositionDa
return result; return result;
} }
QByteArray Worksheet::saveToXmlData()
{
QByteArray data;
QBuffer buffer(&data);
buffer.open(QIODevice::WriteOnly);
saveToXmlFile(&buffer);
return data;
}
QSharedPointer<Worksheet> Worksheet::loadFromXmlFile(QIODevice *device)
{
return QSharedPointer<Worksheet>(new Worksheet(QString()));
}
QSharedPointer<Worksheet> Worksheet::loadFromXmlData(const QByteArray &data)
{
QBuffer buffer;
buffer.setData(data);
buffer.open(QIODevice::ReadOnly);
return loadFromXmlFile(&buffer);
}
} //namespace } //namespace

10
src/xlsx/xlsxworksheet.h

@ -31,6 +31,7 @@
#include <QMap> #include <QMap>
#include <QVariant> #include <QVariant>
#include <QPointF> #include <QPointF>
#include <QSharedPointer>
class QIODevice; class QIODevice;
class QDateTime; class QDateTime;
class QUrl; class QUrl;
@ -45,9 +46,8 @@ class Drawing;
struct XlsxImageData; struct XlsxImageData;
class WorksheetPrivate; class WorksheetPrivate;
class Q_XLSX_EXPORT Worksheet : public QObject class Q_XLSX_EXPORT Worksheet
{ {
Q_OBJECT
Q_DECLARE_PRIVATE(Worksheet) Q_DECLARE_PRIVATE(Worksheet)
public: public:
int write(const QString row_column, const QVariant &value, Format *format=0); int write(const QString row_column, const QVariant &value, Format *format=0);
@ -74,11 +74,15 @@ public:
void setZeroValuesHidden(bool enable); void setZeroValuesHidden(bool enable);
void saveToXmlFile(QIODevice *device); void saveToXmlFile(QIODevice *device);
QByteArray saveToXmlData();
static QSharedPointer<Worksheet> loadFromXmlFile(QIODevice *device);
static QSharedPointer<Worksheet> loadFromXmlData(const QByteArray &data);
~Worksheet(); ~Worksheet();
private: private:
friend class Package; friend class Package;
friend class Workbook; friend class Workbook;
Worksheet(const QString &sheetName, Workbook *parent=0); Worksheet(const QString &sheetName, Workbook *book=0);
virtual bool isChartsheet() const; virtual bool isChartsheet() const;
QString name() const; QString name() const;

Loading…
Cancel
Save