Debao Zhang
11 years ago
11 changed files with 274 additions and 11 deletions
@ -0,0 +1,142 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013-2014 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#include "xlsxchartsheet.h" |
||||
|
#include "xlsxchartsheet_p.h" |
||||
|
#include "xlsxworkbook.h" |
||||
|
#include "xlsxutility_p.h" |
||||
|
#include "xlsxdrawing_p.h" |
||||
|
#include "xlsxdrawinganchor_p.h" |
||||
|
|
||||
|
#include <QXmlStreamReader> |
||||
|
#include <QXmlStreamWriter> |
||||
|
#include <QDir> |
||||
|
|
||||
|
QT_BEGIN_NAMESPACE_XLSX |
||||
|
|
||||
|
ChartsheetPrivate::ChartsheetPrivate(Chartsheet *p) |
||||
|
: AbstractSheetPrivate(p) |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
ChartsheetPrivate::~ChartsheetPrivate() |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
/*!
|
||||
|
\class Chartsheet |
||||
|
\inmodule QtXlsx |
||||
|
\brief Represent one chartsheet in the workbook. |
||||
|
*/ |
||||
|
|
||||
|
/*!
|
||||
|
* \internal |
||||
|
*/ |
||||
|
Chartsheet::Chartsheet(const QString &name, int id, Workbook *workbook) |
||||
|
:AbstractSheet(name, id, workbook, new ChartsheetPrivate(this)) |
||||
|
{ |
||||
|
setSheetType(ST_ChartSheet); |
||||
|
} |
||||
|
|
||||
|
/*!
|
||||
|
* \internal |
||||
|
* |
||||
|
* Make a copy of this sheet. |
||||
|
*/ |
||||
|
|
||||
|
Chartsheet *Chartsheet::copy(const QString &distName, int distId) const |
||||
|
{ |
||||
|
//:Todo
|
||||
|
Q_UNUSED(distName) |
||||
|
Q_UNUSED(distId) |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
/*!
|
||||
|
* Destroys this workssheet. |
||||
|
*/ |
||||
|
Chartsheet::~Chartsheet() |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
/*!
|
||||
|
* Returns the chart object of the sheet. |
||||
|
*/ |
||||
|
Chart *Chartsheet::chart() |
||||
|
{ |
||||
|
Q_D(Chartsheet); |
||||
|
|
||||
|
return d->chart; |
||||
|
} |
||||
|
|
||||
|
void Chartsheet::saveToXmlFile(QIODevice *device) const |
||||
|
{ |
||||
|
Q_D(const Chartsheet); |
||||
|
d->relationships->clear(); |
||||
|
|
||||
|
QXmlStreamWriter writer(device); |
||||
|
|
||||
|
writer.writeStartDocument(QStringLiteral("1.0"), true); |
||||
|
writer.writeDefaultNamespace(QStringLiteral("http://schemas.openxmlformats.org/spreadsheetml/2006/main")); |
||||
|
writer.writeNamespace(QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), QStringLiteral("r")); |
||||
|
writer.writeStartElement(QStringLiteral("chartsheet")); |
||||
|
|
||||
|
writer.writeStartElement(QStringLiteral("sheetViews")); |
||||
|
writer.writeEmptyElement(QStringLiteral("sheetView")); |
||||
|
writer.writeAttribute(QStringLiteral("workbookViewId"), QString::number(0)); |
||||
|
writer.writeAttribute(QStringLiteral("zoomToFit"), QStringLiteral("1")); |
||||
|
writer.writeEndElement(); //sheetViews
|
||||
|
|
||||
|
int idx = d->workbook->drawings().indexOf(d->drawing.data()); |
||||
|
d->relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QStringLiteral("../drawings/drawing%1.xml").arg(idx+1)); |
||||
|
|
||||
|
writer.writeEmptyElement(QStringLiteral("drawing")); |
||||
|
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(d->relationships->count())); |
||||
|
|
||||
|
writer.writeEndElement();//chartsheet
|
||||
|
writer.writeEndDocument(); |
||||
|
} |
||||
|
|
||||
|
bool Chartsheet::loadFromXmlFile(QIODevice *device) |
||||
|
{ |
||||
|
Q_D(Chartsheet); |
||||
|
|
||||
|
QXmlStreamReader reader(device); |
||||
|
while (!reader.atEnd()) { |
||||
|
reader.readNextStartElement(); |
||||
|
if (reader.tokenType() == QXmlStreamReader::StartElement) { |
||||
|
if (reader.name() == QLatin1String("drawing")) { |
||||
|
QString rId = reader.attributes().value(QStringLiteral("r:id")).toString(); |
||||
|
QString name = d->relationships->getRelationshipById(rId).target; |
||||
|
QString path = QDir::cleanPath(splitPath(filePath())[0] + QLatin1String("/") + name); |
||||
|
d->drawing = QSharedPointer<Drawing>(new Drawing(this)); |
||||
|
d->drawing->setFilePath(path); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
QT_END_NAMESPACE_XLSX |
@ -0,0 +1,56 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013-2014 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#ifndef XLSXCHARTSHEET_H |
||||
|
#define XLSXCHARTSHEET_H |
||||
|
|
||||
|
#include "xlsxabstractsheet.h" |
||||
|
#include <QStringList> |
||||
|
#include <QSharedPointer> |
||||
|
|
||||
|
QT_BEGIN_NAMESPACE_XLSX |
||||
|
class Workbook; |
||||
|
class DocumentPrivate; |
||||
|
class ChartsheetPrivate; |
||||
|
class Chart; |
||||
|
class Q_XLSX_EXPORT Chartsheet : public AbstractSheet |
||||
|
{ |
||||
|
Q_DECLARE_PRIVATE(Chartsheet) |
||||
|
public: |
||||
|
|
||||
|
~Chartsheet(); |
||||
|
Chart *chart(); |
||||
|
|
||||
|
private: |
||||
|
friend class DocumentPrivate; |
||||
|
friend class Workbook; |
||||
|
Chartsheet(const QString &sheetName, int sheetId, Workbook *book); |
||||
|
Chartsheet *copy(const QString &distName, int distId) const; |
||||
|
|
||||
|
void saveToXmlFile(QIODevice *device) const; |
||||
|
bool loadFromXmlFile(QIODevice *device); |
||||
|
}; |
||||
|
|
||||
|
QT_END_NAMESPACE_XLSX |
||||
|
#endif // XLSXCHARTSHEET_H
|
@ -0,0 +1,56 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013-2014 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#ifndef XLSXCHARTSHEET_P_H |
||||
|
#define XLSXCHARTSHEET_P_H |
||||
|
|
||||
|
//
|
||||
|
// W A R N I N G
|
||||
|
// -------------
|
||||
|
//
|
||||
|
// This file is not part of the Qt Xlsx API. It exists for the convenience
|
||||
|
// of the Qt Xlsx. This header file may change from
|
||||
|
// version to version without notice, or even be removed.
|
||||
|
//
|
||||
|
// We mean it.
|
||||
|
//
|
||||
|
|
||||
|
#include "xlsxglobal.h" |
||||
|
#include "xlsxchartsheet.h" |
||||
|
#include "xlsxabstractsheet_p.h" |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
class XLSX_AUTOTEST_EXPORT ChartsheetPrivate : public AbstractSheetPrivate |
||||
|
{ |
||||
|
Q_DECLARE_PUBLIC(Chartsheet) |
||||
|
public: |
||||
|
ChartsheetPrivate(Chartsheet *p); |
||||
|
~ChartsheetPrivate(); |
||||
|
|
||||
|
Chart *chart; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
#endif // XLSXCHARTSHEET_P_H
|
Loading…
Reference in new issue