Make relationships as a property of OOXmlFile
This commit is contained in:
@@ -147,13 +147,4 @@ Workbook *AbstractSheet::workbook() const
|
|||||||
return d->workbook;
|
return d->workbook;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* \internal
|
|
||||||
*/
|
|
||||||
Relationships &AbstractSheet::relationships()
|
|
||||||
{
|
|
||||||
Q_D(AbstractSheet);
|
|
||||||
return d->relationships;
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_END_NAMESPACE_XLSX
|
QT_END_NAMESPACE_XLSX
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
QT_BEGIN_NAMESPACE_XLSX
|
QT_BEGIN_NAMESPACE_XLSX
|
||||||
class Workbook;
|
class Workbook;
|
||||||
class Drawing;
|
class Drawing;
|
||||||
class Relationships;
|
|
||||||
class AbstractSheetPrivate;
|
class AbstractSheetPrivate;
|
||||||
class Q_XLSX_EXPORT AbstractSheet : public OOXmlFile
|
class Q_XLSX_EXPORT AbstractSheet : public OOXmlFile
|
||||||
{
|
{
|
||||||
@@ -50,7 +49,6 @@ public:
|
|||||||
QString sheetName() const;
|
QString sheetName() const;
|
||||||
bool isHidden() const;
|
bool isHidden() const;
|
||||||
Workbook *workbook() const;
|
Workbook *workbook() const;
|
||||||
Relationships &relationships();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Workbook;
|
friend class Workbook;
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
#include "xlsxglobal.h"
|
#include "xlsxglobal.h"
|
||||||
#include "xlsxabstractsheet.h"
|
#include "xlsxabstractsheet.h"
|
||||||
#include "xlsxooxmlfile_p.h"
|
#include "xlsxooxmlfile_p.h"
|
||||||
#include "xlsxrelationships_p.h"
|
|
||||||
|
|
||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
|
|
||||||
@@ -54,7 +53,6 @@ public:
|
|||||||
|
|
||||||
Workbook *workbook;
|
Workbook *workbook;
|
||||||
QSharedPointer<Drawing> drawing;
|
QSharedPointer<Drawing> drawing;
|
||||||
mutable Relationships relationships;
|
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
int id;
|
int id;
|
||||||
|
|||||||
+12
-12
@@ -146,12 +146,12 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|||||||
return false;
|
return false;
|
||||||
QString xlworkbook_Path = rels_xl[0].target;
|
QString xlworkbook_Path = rels_xl[0].target;
|
||||||
QString xlworkbook_Dir = splitPath(xlworkbook_Path)[0];
|
QString xlworkbook_Dir = splitPath(xlworkbook_Path)[0];
|
||||||
workbook->relationships().loadFromXmlData(zipReader.fileData(getRelFilePath(xlworkbook_Path)));
|
workbook->relationships()->loadFromXmlData(zipReader.fileData(getRelFilePath(xlworkbook_Path)));
|
||||||
workbook->setFilePath(xlworkbook_Path);
|
workbook->setFilePath(xlworkbook_Path);
|
||||||
workbook->loadFromXmlData(zipReader.fileData(xlworkbook_Path));
|
workbook->loadFromXmlData(zipReader.fileData(xlworkbook_Path));
|
||||||
|
|
||||||
//load styles
|
//load styles
|
||||||
QList<XlsxRelationship> rels_styles = workbook->relationships().documentRelationships(QStringLiteral("/styles"));
|
QList<XlsxRelationship> rels_styles = workbook->relationships()->documentRelationships(QStringLiteral("/styles"));
|
||||||
if (!rels_styles.isEmpty()) {
|
if (!rels_styles.isEmpty()) {
|
||||||
//In normal case this should be styles.xml which in xl
|
//In normal case this should be styles.xml which in xl
|
||||||
QString name = rels_styles[0].target;
|
QString name = rels_styles[0].target;
|
||||||
@@ -162,7 +162,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//load sharedStrings
|
//load sharedStrings
|
||||||
QList<XlsxRelationship> rels_sharedStrings = workbook->relationships().documentRelationships(QStringLiteral("/sharedStrings"));
|
QList<XlsxRelationship> rels_sharedStrings = workbook->relationships()->documentRelationships(QStringLiteral("/sharedStrings"));
|
||||||
if (!rels_sharedStrings.isEmpty()) {
|
if (!rels_sharedStrings.isEmpty()) {
|
||||||
//In normal case this should be sharedStrings.xml which in xl
|
//In normal case this should be sharedStrings.xml which in xl
|
||||||
QString name = rels_sharedStrings[0].target;
|
QString name = rels_sharedStrings[0].target;
|
||||||
@@ -171,7 +171,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//load theme
|
//load theme
|
||||||
QList<XlsxRelationship> rels_theme = workbook->relationships().documentRelationships(QStringLiteral("/theme"));
|
QList<XlsxRelationship> rels_theme = workbook->relationships()->documentRelationships(QStringLiteral("/theme"));
|
||||||
if (!rels_theme.isEmpty()) {
|
if (!rels_theme.isEmpty()) {
|
||||||
//In normal case this should be theme/theme1.xml which in xl
|
//In normal case this should be theme/theme1.xml which in xl
|
||||||
QString name = rels_theme[0].target;
|
QString name = rels_theme[0].target;
|
||||||
@@ -185,7 +185,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|||||||
QString rel_path = getRelFilePath(sheet->filePath());
|
QString rel_path = getRelFilePath(sheet->filePath());
|
||||||
//If the .rel file exists, load it.
|
//If the .rel file exists, load it.
|
||||||
if (zipReader.filePaths().contains(rel_path))
|
if (zipReader.filePaths().contains(rel_path))
|
||||||
sheet->relationships().loadFromXmlData(zipReader.fileData(rel_path));
|
sheet->relationships()->loadFromXmlData(zipReader.fileData(rel_path));
|
||||||
sheet->loadFromXmlData(zipReader.fileData(sheet->filePath()));
|
sheet->loadFromXmlData(zipReader.fileData(sheet->filePath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|||||||
Drawing *drawing = workbook->drawings()[i];
|
Drawing *drawing = workbook->drawings()[i];
|
||||||
QString rel_path = getRelFilePath(drawing->filePath());
|
QString rel_path = getRelFilePath(drawing->filePath());
|
||||||
if (zipReader.filePaths().contains(rel_path))
|
if (zipReader.filePaths().contains(rel_path))
|
||||||
drawing->relationships.loadFromXmlData(zipReader.fileData(rel_path));
|
drawing->relationships()->loadFromXmlData(zipReader.fileData(rel_path));
|
||||||
drawing->loadFromXmlData(zipReader.fileData(drawing->filePath()));
|
drawing->loadFromXmlData(zipReader.fileData(drawing->filePath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,16 +237,16 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
|||||||
docPropsApp.addPartTitle(sheet->sheetName());
|
docPropsApp.addPartTitle(sheet->sheetName());
|
||||||
|
|
||||||
zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData());
|
||||||
Relationships &rel = sheet->relationships();
|
Relationships *rel = sheet->relationships();
|
||||||
if (!rel.isEmpty())
|
if (!rel->isEmpty())
|
||||||
zipWriter.addFile(QStringLiteral("xl/worksheets/_rels/sheet%1.xml.rels").arg(i+1), rel.saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/worksheets/_rels/sheet%1.xml.rels").arg(i+1), rel->saveToXmlData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// save workbook xml file
|
// save workbook xml file
|
||||||
contentTypes.addWorkbook();
|
contentTypes.addWorkbook();
|
||||||
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), workbook->saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), workbook->saveToXmlData());
|
||||||
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), workbook->relationships().saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), workbook->relationships()->saveToXmlData());
|
||||||
|
|
||||||
// save drawing xml files
|
// save drawing xml files
|
||||||
for (int i=0; i<workbook->drawings().size(); ++i) {
|
for (int i=0; i<workbook->drawings().size(); ++i) {
|
||||||
@@ -254,8 +254,8 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
|||||||
|
|
||||||
Drawing *drawing = workbook->drawings()[i];
|
Drawing *drawing = workbook->drawings()[i];
|
||||||
zipWriter.addFile(QStringLiteral("xl/drawings/drawing%1.xml").arg(i+1), drawing->saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/drawings/drawing%1.xml").arg(i+1), drawing->saveToXmlData());
|
||||||
if (!drawing->relationships.isEmpty())
|
if (!drawing->relationships()->isEmpty())
|
||||||
zipWriter.addFile(QStringLiteral("xl/drawings/_rels/drawing%1.xml.rels").arg(i+1), drawing->relationships.saveToXmlData());
|
zipWriter.addFile(QStringLiteral("xl/drawings/_rels/drawing%1.xml.rels").arg(i+1), drawing->relationships()->saveToXmlData());
|
||||||
}
|
}
|
||||||
|
|
||||||
// save docProps app/core xml file
|
// save docProps app/core xml file
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Drawing::~Drawing()
|
|||||||
|
|
||||||
void Drawing::saveToXmlFile(QIODevice *device) const
|
void Drawing::saveToXmlFile(QIODevice *device) const
|
||||||
{
|
{
|
||||||
relationships.clear();
|
relationships()->clear();
|
||||||
|
|
||||||
QXmlStreamWriter writer(device);
|
QXmlStreamWriter writer(device);
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ public:
|
|||||||
Worksheet *worksheet;
|
Worksheet *worksheet;
|
||||||
Workbook *workbook;
|
Workbook *workbook;
|
||||||
QList<DrawingAnchor *> anchors;
|
QList<DrawingAnchor *> anchors;
|
||||||
mutable Relationships relationships;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QXlsx
|
} // namespace QXlsx
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ void DrawingAnchor::loadXmlObjectGraphicFrame(QXmlStreamReader &reader)
|
|||||||
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
||||||
if (reader.name() == QLatin1String("chart")) {
|
if (reader.name() == QLatin1String("chart")) {
|
||||||
QString rId = reader.attributes().value(QLatin1String("r:id")).toString();
|
QString rId = reader.attributes().value(QLatin1String("r:id")).toString();
|
||||||
QString name = m_drawing->relationships.getRelationshipById(rId).target;
|
QString name = m_drawing->relationships()->getRelationshipById(rId).target;
|
||||||
QString path = QDir::cleanPath(splitPath(m_drawing->filePath())[0] + QLatin1String("/") + name);
|
QString path = QDir::cleanPath(splitPath(m_drawing->filePath())[0] + QLatin1String("/") + name);
|
||||||
|
|
||||||
bool exist = false;
|
bool exist = false;
|
||||||
@@ -234,7 +234,7 @@ void DrawingAnchor::loadXmlObjectPicture(QXmlStreamReader &reader)
|
|||||||
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
||||||
if (reader.name() == QLatin1String("blip")) {
|
if (reader.name() == QLatin1String("blip")) {
|
||||||
QString rId = reader.attributes().value(QLatin1String("r:embed")).toString();
|
QString rId = reader.attributes().value(QLatin1String("r:embed")).toString();
|
||||||
QString name = m_drawing->relationships.getRelationshipById(rId).target;
|
QString name = m_drawing->relationships()->getRelationshipById(rId).target;
|
||||||
QString path = QDir::cleanPath(splitPath(m_drawing->filePath())[0] + QLatin1String("/") + name);
|
QString path = QDir::cleanPath(splitPath(m_drawing->filePath())[0] + QLatin1String("/") + name);
|
||||||
|
|
||||||
bool exist = false;
|
bool exist = false;
|
||||||
@@ -329,12 +329,12 @@ void DrawingAnchor::saveXmlObjectGraphicFrame(QXmlStreamWriter &writer) const
|
|||||||
writer.writeAttribute(QStringLiteral("uri"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
|
writer.writeAttribute(QStringLiteral("uri"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
|
||||||
|
|
||||||
int idx = m_drawing->workbook->chartFiles().indexOf(m_chartFile);
|
int idx = m_drawing->workbook->chartFiles().indexOf(m_chartFile);
|
||||||
m_drawing->relationships.addDocumentRelationship(QStringLiteral("/chart"), QStringLiteral("../charts/chart%1.xml").arg(idx+1));
|
m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/chart"), QStringLiteral("../charts/chart%1.xml").arg(idx+1));
|
||||||
|
|
||||||
writer.writeEmptyElement(QStringLiteral("c:chart"));
|
writer.writeEmptyElement(QStringLiteral("c:chart"));
|
||||||
writer.writeAttribute(QStringLiteral("xmlns:c"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
|
writer.writeAttribute(QStringLiteral("xmlns:c"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
|
||||||
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
|
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
|
||||||
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(m_drawing->relationships.count()));
|
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(m_drawing->relationships()->count()));
|
||||||
|
|
||||||
writer.writeEndElement(); //a:graphicData
|
writer.writeEndElement(); //a:graphicData
|
||||||
writer.writeEndElement(); //a:graphic
|
writer.writeEndElement(); //a:graphic
|
||||||
@@ -364,14 +364,14 @@ void DrawingAnchor::saveXmlObjectPicture(QXmlStreamWriter &writer) const
|
|||||||
|
|
||||||
writer.writeEndElement(); //xdr:nvPicPr
|
writer.writeEndElement(); //xdr:nvPicPr
|
||||||
|
|
||||||
m_drawing->relationships.addDocumentRelationship(QStringLiteral("/image"), QStringLiteral("../media/image%1.%2")
|
m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/image"), QStringLiteral("../media/image%1.%2")
|
||||||
.arg(m_pictureFile->index()+1)
|
.arg(m_pictureFile->index()+1)
|
||||||
.arg(m_pictureFile->suffix()));
|
.arg(m_pictureFile->suffix()));
|
||||||
|
|
||||||
writer.writeStartElement(QStringLiteral("xdr:blipFill"));
|
writer.writeStartElement(QStringLiteral("xdr:blipFill"));
|
||||||
writer.writeEmptyElement(QStringLiteral("a:blip"));
|
writer.writeEmptyElement(QStringLiteral("a:blip"));
|
||||||
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
|
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
|
||||||
writer.writeAttribute(QStringLiteral("r:embed"), QStringLiteral("rId%1").arg(m_drawing->relationships.count()));
|
writer.writeAttribute(QStringLiteral("r:embed"), QStringLiteral("rId%1").arg(m_drawing->relationships()->count()));
|
||||||
writer.writeStartElement(QStringLiteral("a:stretch"));
|
writer.writeStartElement(QStringLiteral("a:stretch"));
|
||||||
writer.writeEmptyElement(QStringLiteral("a:fillRect"));
|
writer.writeEmptyElement(QStringLiteral("a:fillRect"));
|
||||||
writer.writeEndElement(); //a:stretch
|
writer.writeEndElement(); //a:stretch
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
QT_BEGIN_NAMESPACE_XLSX
|
QT_BEGIN_NAMESPACE_XLSX
|
||||||
|
|
||||||
OOXmlFilePrivate::OOXmlFilePrivate(OOXmlFile *q)
|
OOXmlFilePrivate::OOXmlFilePrivate(OOXmlFile *q)
|
||||||
:q_ptr(q)
|
:q_ptr(q), relationships(new Relationships)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -63,6 +63,8 @@ OOXmlFile::OOXmlFile(OOXmlFilePrivate *d)
|
|||||||
|
|
||||||
OOXmlFile::~OOXmlFile()
|
OOXmlFile::~OOXmlFile()
|
||||||
{
|
{
|
||||||
|
if (d_ptr->relationships)
|
||||||
|
delete d_ptr->relationships;
|
||||||
delete d_ptr;
|
delete d_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,4 +105,15 @@ QString OOXmlFile::filePath() const
|
|||||||
return d->filePathInPackage;
|
return d->filePathInPackage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \internal
|
||||||
|
*/
|
||||||
|
Relationships *OOXmlFile::relationships() const
|
||||||
|
{
|
||||||
|
Q_D(const OOXmlFile);
|
||||||
|
return d->relationships;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QT_END_NAMESPACE_XLSX
|
QT_END_NAMESPACE_XLSX
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class QIODevice;
|
|||||||
class QByteArray;
|
class QByteArray;
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE_XLSX
|
QT_BEGIN_NAMESPACE_XLSX
|
||||||
|
class Relationships;
|
||||||
class OOXmlFilePrivate;
|
class OOXmlFilePrivate;
|
||||||
|
|
||||||
class Q_XLSX_EXPORT OOXmlFile
|
class Q_XLSX_EXPORT OOXmlFile
|
||||||
@@ -47,6 +47,8 @@ public:
|
|||||||
virtual QByteArray saveToXmlData() const;
|
virtual QByteArray saveToXmlData() const;
|
||||||
virtual bool loadFromXmlData(const QByteArray &data);
|
virtual bool loadFromXmlData(const QByteArray &data);
|
||||||
|
|
||||||
|
Relationships *relationships() const;
|
||||||
|
|
||||||
void setFilePath(const QString path);
|
void setFilePath(const QString path);
|
||||||
QString filePath() const;
|
QString filePath() const;
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "xlsxooxmlfile.h"
|
#include "xlsxooxmlfile.h"
|
||||||
|
#include "xlsxrelationships_p.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE_XLSX
|
QT_BEGIN_NAMESPACE_XLSX
|
||||||
@@ -52,7 +54,7 @@ public:
|
|||||||
|
|
||||||
QString filePathInPackage;//such as "xl/worksheets/sheet1.xml"
|
QString filePathInPackage;//such as "xl/worksheets/sheet1.xml"
|
||||||
//used when load the .xlsx file
|
//used when load the .xlsx file
|
||||||
|
Relationships *relationships;
|
||||||
OOXmlFile *q_ptr;
|
OOXmlFile *q_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -387,14 +387,14 @@ QList<Drawing *> Workbook::drawings()
|
|||||||
void Workbook::saveToXmlFile(QIODevice *device) const
|
void Workbook::saveToXmlFile(QIODevice *device) const
|
||||||
{
|
{
|
||||||
Q_D(const Workbook);
|
Q_D(const Workbook);
|
||||||
d->relationships.clear();
|
d->relationships->clear();
|
||||||
|
|
||||||
for (int i=0; i<sheetCount(); ++i)
|
for (int i=0; i<sheetCount(); ++i)
|
||||||
d->relationships.addDocumentRelationship(QStringLiteral("/worksheet"), QStringLiteral("worksheets/sheet%1.xml").arg(i+1));
|
d->relationships->addDocumentRelationship(QStringLiteral("/worksheet"), QStringLiteral("worksheets/sheet%1.xml").arg(i+1));
|
||||||
d->relationships.addDocumentRelationship(QStringLiteral("/theme"), QStringLiteral("theme/theme1.xml"));
|
d->relationships->addDocumentRelationship(QStringLiteral("/theme"), QStringLiteral("theme/theme1.xml"));
|
||||||
d->relationships.addDocumentRelationship(QStringLiteral("/styles"), QStringLiteral("styles.xml"));
|
d->relationships->addDocumentRelationship(QStringLiteral("/styles"), QStringLiteral("styles.xml"));
|
||||||
if (!sharedStrings()->isEmpty())
|
if (!sharedStrings()->isEmpty())
|
||||||
d->relationships.addDocumentRelationship(QStringLiteral("/sharedStrings"), QStringLiteral("sharedStrings.xml"));
|
d->relationships->addDocumentRelationship(QStringLiteral("/sharedStrings"), QStringLiteral("sharedStrings.xml"));
|
||||||
|
|
||||||
QXmlStreamWriter writer(device);
|
QXmlStreamWriter writer(device);
|
||||||
|
|
||||||
@@ -488,7 +488,7 @@ bool Workbook::loadFromXmlFile(QIODevice *device)
|
|||||||
// if (attributes.hasAttribute(QLatin1String("state")))
|
// if (attributes.hasAttribute(QLatin1String("state")))
|
||||||
// QString state = attributes.value(QLatin1String("state")).toString();
|
// QString state = attributes.value(QLatin1String("state")).toString();
|
||||||
|
|
||||||
XlsxRelationship relationship = d->relationships.getRelationshipById(rId);
|
XlsxRelationship relationship = d->relationships->getRelationshipById(rId);
|
||||||
|
|
||||||
AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet;
|
AbstractSheet::SheetType type = AbstractSheet::ST_WorkSheet;
|
||||||
if (relationship.type.endsWith(QLatin1String("/worksheet")))
|
if (relationship.type.endsWith(QLatin1String("/worksheet")))
|
||||||
@@ -550,15 +550,6 @@ bool Workbook::loadFromXmlFile(QIODevice *device)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* \internal
|
|
||||||
*/
|
|
||||||
Relationships &Workbook::relationships()
|
|
||||||
{
|
|
||||||
Q_D(Workbook);
|
|
||||||
return d->relationships;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \internal
|
* \internal
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ private:
|
|||||||
|
|
||||||
void saveToXmlFile(QIODevice *device) const;
|
void saveToXmlFile(QIODevice *device) const;
|
||||||
bool loadFromXmlFile(QIODevice *device);
|
bool loadFromXmlFile(QIODevice *device);
|
||||||
Relationships &relationships();
|
|
||||||
|
|
||||||
SharedStrings *sharedStrings() const;
|
SharedStrings *sharedStrings() const;
|
||||||
Styles *styles();
|
Styles *styles();
|
||||||
|
|||||||
@@ -70,8 +70,6 @@ class WorkbookPrivate : public OOXmlFilePrivate
|
|||||||
public:
|
public:
|
||||||
WorkbookPrivate(Workbook *q);
|
WorkbookPrivate(Workbook *q);
|
||||||
|
|
||||||
mutable Relationships relationships;
|
|
||||||
|
|
||||||
QSharedPointer<SharedStrings> sharedStrings;
|
QSharedPointer<SharedStrings> sharedStrings;
|
||||||
QList<QSharedPointer<AbstractSheet> > sheets;
|
QList<QSharedPointer<AbstractSheet> > sheets;
|
||||||
QStringList sheetNames;
|
QStringList sheetNames;
|
||||||
|
|||||||
@@ -1188,7 +1188,7 @@ QList<CellRange> Worksheet::mergedCells() const
|
|||||||
void Worksheet::saveToXmlFile(QIODevice *device) const
|
void Worksheet::saveToXmlFile(QIODevice *device) const
|
||||||
{
|
{
|
||||||
Q_D(const Worksheet);
|
Q_D(const Worksheet);
|
||||||
d->relationships.clear();
|
d->relationships->clear();
|
||||||
|
|
||||||
QXmlStreamWriter writer(device);
|
QXmlStreamWriter writer(device);
|
||||||
|
|
||||||
@@ -1467,9 +1467,9 @@ void WorksheetPrivate::saveXmlHyperlinks(QXmlStreamWriter &writer) const
|
|||||||
writer.writeAttribute(QStringLiteral("ref"), ref);
|
writer.writeAttribute(QStringLiteral("ref"), ref);
|
||||||
if (data->linkType == XlsxHyperlinkData::External) {
|
if (data->linkType == XlsxHyperlinkData::External) {
|
||||||
//Update relationships
|
//Update relationships
|
||||||
relationships.addWorksheetRelationship(QStringLiteral("/hyperlink"), data->target, QStringLiteral("External"));
|
relationships->addWorksheetRelationship(QStringLiteral("/hyperlink"), data->target, QStringLiteral("External"));
|
||||||
|
|
||||||
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships.count()));
|
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships->count()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data->location.isEmpty())
|
if (!data->location.isEmpty())
|
||||||
@@ -1490,10 +1490,10 @@ void WorksheetPrivate::saveXmlDrawings(QXmlStreamWriter &writer) const
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
int idx = workbook->drawings().indexOf(drawing.data());
|
int idx = workbook->drawings().indexOf(drawing.data());
|
||||||
relationships.addWorksheetRelationship(QStringLiteral("/drawing"), QStringLiteral("../drawings/drawing%1.xml").arg(idx+1));
|
relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QStringLiteral("../drawings/drawing%1.xml").arg(idx+1));
|
||||||
|
|
||||||
writer.writeEmptyElement(QStringLiteral("drawing"));
|
writer.writeEmptyElement(QStringLiteral("drawing"));
|
||||||
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships.count()));
|
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships->count()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -2083,7 +2083,7 @@ void WorksheetPrivate::loadXmlHyperlinks(QXmlStreamReader &reader)
|
|||||||
|
|
||||||
if (attrs.hasAttribute(QLatin1String("r:id"))) {
|
if (attrs.hasAttribute(QLatin1String("r:id"))) {
|
||||||
link->linkType = XlsxHyperlinkData::External;
|
link->linkType = XlsxHyperlinkData::External;
|
||||||
XlsxRelationship ship = relationships.getRelationshipById(attrs.value(QLatin1String("r:id")).toString());
|
XlsxRelationship ship = relationships->getRelationshipById(attrs.value(QLatin1String("r:id")).toString());
|
||||||
link->target = ship.target;
|
link->target = ship.target;
|
||||||
} else {
|
} else {
|
||||||
link->linkType = XlsxHyperlinkData::Internal;
|
link->linkType = XlsxHyperlinkData::Internal;
|
||||||
@@ -2127,7 +2127,7 @@ bool Worksheet::loadFromXmlFile(QIODevice *device)
|
|||||||
d->loadXmlHyperlinks(reader);
|
d->loadXmlHyperlinks(reader);
|
||||||
} else if (reader.name() == QLatin1String("drawing")) {
|
} else if (reader.name() == QLatin1String("drawing")) {
|
||||||
QString rId = reader.attributes().value(QStringLiteral("r:id")).toString();
|
QString rId = reader.attributes().value(QStringLiteral("r:id")).toString();
|
||||||
QString name = d->relationships.getRelationshipById(rId).target;
|
QString name = d->relationships->getRelationshipById(rId).target;
|
||||||
QString path = QDir::cleanPath(splitPath(filePath())[0] + QLatin1String("/") + name);
|
QString path = QDir::cleanPath(splitPath(filePath())[0] + QLatin1String("/") + name);
|
||||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
||||||
d->drawing->setFilePath(path);
|
d->drawing->setFilePath(path);
|
||||||
|
|||||||
Reference in New Issue
Block a user