Browse Source

Make relationships as a property of OOXmlFile

master
Debao Zhang 11 years ago
parent
commit
14edb0f001
  1. 9
      src/xlsx/xlsxabstractsheet.cpp
  2. 2
      src/xlsx/xlsxabstractsheet.h
  3. 2
      src/xlsx/xlsxabstractsheet_p.h
  4. 24
      src/xlsx/xlsxdocument.cpp
  5. 2
      src/xlsx/xlsxdrawing.cpp
  6. 1
      src/xlsx/xlsxdrawing_p.h
  7. 12
      src/xlsx/xlsxdrawinganchor.cpp
  8. 15
      src/xlsx/xlsxooxmlfile.cpp
  9. 4
      src/xlsx/xlsxooxmlfile.h
  10. 4
      src/xlsx/xlsxooxmlfile_p.h
  11. 21
      src/xlsx/xlsxworkbook.cpp
  12. 1
      src/xlsx/xlsxworkbook.h
  13. 2
      src/xlsx/xlsxworkbook_p.h
  14. 14
      src/xlsx/xlsxworksheet.cpp

9
src/xlsx/xlsxabstractsheet.cpp

@ -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

2
src/xlsx/xlsxabstractsheet.h

@ -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;

2
src/xlsx/xlsxabstractsheet_p.h

@ -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;

24
src/xlsx/xlsxdocument.cpp

@ -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

2
src/xlsx/xlsxdrawing.cpp

@ -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);

1
src/xlsx/xlsxdrawing_p.h

@ -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

12
src/xlsx/xlsxdrawinganchor.cpp

@ -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

15
src/xlsx/xlsxooxmlfile.cpp

@ -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

4
src/xlsx/xlsxooxmlfile.h

@ -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:

4
src/xlsx/xlsxooxmlfile_p.h

@ -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;
}; };

21
src/xlsx/xlsxworkbook.cpp

@ -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
*/ */

1
src/xlsx/xlsxworkbook.h

@ -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();

2
src/xlsx/xlsxworkbook_p.h

@ -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;

14
src/xlsx/xlsxworksheet.cpp

@ -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);

Loading…
Cancel
Save