|
|
|
@@ -137,14 +137,12 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|
|
|
|
QString xlworkbook_Path = rels_xl[0].target;
|
|
|
|
|
QStringList xlworkbook_PathList = splitPath(xlworkbook_Path);
|
|
|
|
|
QString xlworkbook_Dir = xlworkbook_PathList[0];
|
|
|
|
|
QString xlworkbook_Name = xlworkbook_PathList[1];
|
|
|
|
|
workbook->relationships().loadFromXmlData(zipReader.fileData(getRelFilePath(xlworkbook_Path)));
|
|
|
|
|
workbook->loadFromXmlData(zipReader.fileData(xlworkbook_Path));
|
|
|
|
|
QList<XlsxSheetItemInfo> sheetNameIdPairList = workbook->d_func()->sheetItemInfoList;
|
|
|
|
|
Relationships xlworkbook_Rels;
|
|
|
|
|
xlworkbook_Rels.loadFromXmlData(zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels")));
|
|
|
|
|
|
|
|
|
|
//load styles
|
|
|
|
|
QList<XlsxRelationship> rels_styles = xlworkbook_Rels.documentRelationships(QStringLiteral("/styles"));
|
|
|
|
|
QList<XlsxRelationship> rels_styles = workbook->relationships().documentRelationships(QStringLiteral("/styles"));
|
|
|
|
|
if (!rels_styles.isEmpty()) {
|
|
|
|
|
//In normal case this should be styles.xml which in xl
|
|
|
|
|
QString name = rels_styles[0].target;
|
|
|
|
@@ -155,7 +153,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//load sharedStrings
|
|
|
|
|
QList<XlsxRelationship> rels_sharedStrings = xlworkbook_Rels.documentRelationships(QStringLiteral("/sharedStrings"));
|
|
|
|
|
QList<XlsxRelationship> rels_sharedStrings = workbook->relationships().documentRelationships(QStringLiteral("/sharedStrings"));
|
|
|
|
|
if (!rels_sharedStrings.isEmpty()) {
|
|
|
|
|
//In normal case this should be sharedStrings.xml which in xl
|
|
|
|
|
QString name = rels_sharedStrings[0].target;
|
|
|
|
@@ -164,7 +162,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//load theme
|
|
|
|
|
QList<XlsxRelationship> rels_theme = xlworkbook_Rels.documentRelationships(QStringLiteral("/theme"));
|
|
|
|
|
QList<XlsxRelationship> rels_theme = workbook->relationships().documentRelationships(QStringLiteral("/theme"));
|
|
|
|
|
if (!rels_theme.isEmpty()) {
|
|
|
|
|
//In normal case this should be theme/theme1.xml which in xl
|
|
|
|
|
QString name = rels_theme[0].target;
|
|
|
|
@@ -173,13 +171,13 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//load worksheets
|
|
|
|
|
QList<XlsxRelationship> rels_worksheets = xlworkbook_Rels.documentRelationships(QStringLiteral("/worksheet"));
|
|
|
|
|
QList<XlsxRelationship> rels_worksheets = workbook->relationships().documentRelationships(QStringLiteral("/worksheet"));
|
|
|
|
|
if (rels_worksheets.isEmpty())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
for (int i=0; i<sheetNameIdPairList.size(); ++i) {
|
|
|
|
|
XlsxSheetItemInfo info = sheetNameIdPairList[i];
|
|
|
|
|
QString worksheet_path = xlworkbook_Dir + QLatin1String("/") + xlworkbook_Rels.getRelationshipById(info.rId).target;
|
|
|
|
|
QString worksheet_path = xlworkbook_Dir + QLatin1String("/") + workbook->relationships().getRelationshipById(info.rId).target;
|
|
|
|
|
QString rel_path = getRelFilePath(worksheet_path);
|
|
|
|
|
Worksheet *sheet = workbook->addWorksheet(info.name, info.sheetId);
|
|
|
|
|
//If the .rel file exists, load it.
|
|
|
|
@@ -219,14 +217,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
|
|
|
|
|
|
|
|
|
// save workbook xml file
|
|
|
|
|
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), workbook->saveToXmlData());
|
|
|
|
|
Relationships rels;
|
|
|
|
|
for (int i=0; i<workbook->worksheetCount(); ++i)
|
|
|
|
|
rels.addDocumentRelationship(QStringLiteral("/worksheet"), QStringLiteral("worksheets/sheet%1.xml").arg(i+1));
|
|
|
|
|
rels.addDocumentRelationship(QStringLiteral("/theme"), QStringLiteral("theme/theme1.xml"));
|
|
|
|
|
rels.addDocumentRelationship(QStringLiteral("/styles"), QStringLiteral("styles.xml"));
|
|
|
|
|
if (!workbook->sharedStrings()->isEmpty())
|
|
|
|
|
rels.addDocumentRelationship(QStringLiteral("/sharedStrings"), QStringLiteral("sharedStrings.xml"));
|
|
|
|
|
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), rels.saveToXmlData());
|
|
|
|
|
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), workbook->relationships().saveToXmlData());
|
|
|
|
|
|
|
|
|
|
// save drawing xml files
|
|
|
|
|
for (int i=0; i<workbook->drawings().size(); ++i) {
|
|
|
|
|