Load orignal sheetId
This commit is contained in:
@@ -139,7 +139,7 @@ bool Package::parsePackage(QIODevice *packageDevice)
|
|||||||
QString xlworkbook_Dir = xlworkbook_PathList[0];
|
QString xlworkbook_Dir = xlworkbook_PathList[0];
|
||||||
QString xlworkbook_Name = xlworkbook_PathList[1];
|
QString xlworkbook_Name = xlworkbook_PathList[1];
|
||||||
QSharedPointer<Workbook> book = Workbook::loadFromXmlData(zipReader.fileData(xlworkbook_Path));
|
QSharedPointer<Workbook> book = Workbook::loadFromXmlData(zipReader.fileData(xlworkbook_Path));
|
||||||
QList<QPair<QString, QString> > sheetNameIdPairList = book->d_func()->sheetNameIdPairList;
|
QList<XlsxSheetItemInfo> sheetNameIdPairList = book->d_func()->sheetItemInfoList;
|
||||||
Relationships xlworkbook_Rels = Relationships::loadFromXmlData(
|
Relationships xlworkbook_Rels = Relationships::loadFromXmlData(
|
||||||
zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels")));
|
zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels")));
|
||||||
|
|
||||||
@@ -177,11 +177,11 @@ bool Package::parsePackage(QIODevice *packageDevice)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (int i=0; i<sheetNameIdPairList.size(); ++i) {
|
for (int i=0; i<sheetNameIdPairList.size(); ++i) {
|
||||||
QPair<QString, QString> pair = sheetNameIdPairList[i];
|
XlsxSheetItemInfo info = sheetNameIdPairList[i];
|
||||||
QString worksheet_rId = pair.second;
|
QString worksheet_rId = info.rId;
|
||||||
QString name = xlworkbook_Rels.getRelationshipById(worksheet_rId).target;
|
QString name = xlworkbook_Rels.getRelationshipById(worksheet_rId).target;
|
||||||
QString worksheet_path = xlworkbook_Dir + QLatin1String("/") + name;
|
QString worksheet_path = xlworkbook_Dir + QLatin1String("/") + name;
|
||||||
Worksheet *sheet = m_document->workbook()->addWorksheet(pair.first);
|
Worksheet *sheet = m_document->workbook()->addWorksheet(info.name, info.sheetId);
|
||||||
sheet->loadFromXmlData(zipReader.fileData(worksheet_path));
|
sheet->loadFromXmlData(zipReader.fileData(worksheet_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -136,6 +136,21 @@ Worksheet *Workbook::addWorksheet(const QString &name)
|
|||||||
return insertWorkSheet(d->worksheets.size(), name);
|
return insertWorkSheet(d->worksheets.size(), name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \internal
|
||||||
|
* Used only when load the xlsx file!!
|
||||||
|
*/
|
||||||
|
Worksheet *Workbook::addWorksheet(const QString &name, int sheetId)
|
||||||
|
{
|
||||||
|
Q_D(Workbook);
|
||||||
|
if (sheetId > d->last_sheet_id)
|
||||||
|
d->last_sheet_id = sheetId;
|
||||||
|
|
||||||
|
Worksheet *sheet = new Worksheet(name, sheetId, this);
|
||||||
|
d->worksheets.append(QSharedPointer<Worksheet>(sheet));
|
||||||
|
return sheet;
|
||||||
|
}
|
||||||
|
|
||||||
Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
||||||
{
|
{
|
||||||
Q_D(Workbook);
|
Q_D(Workbook);
|
||||||
@@ -325,10 +340,14 @@ QSharedPointer<Workbook> Workbook::loadFromXmlFile(QIODevice *device)
|
|||||||
QXmlStreamReader::TokenType token = reader.readNext();
|
QXmlStreamReader::TokenType token = reader.readNext();
|
||||||
if (token == QXmlStreamReader::StartElement) {
|
if (token == QXmlStreamReader::StartElement) {
|
||||||
if (reader.name() == QLatin1String("sheet")) {
|
if (reader.name() == QLatin1String("sheet")) {
|
||||||
|
XlsxSheetItemInfo info;
|
||||||
QXmlStreamAttributes attributes = reader.attributes();
|
QXmlStreamAttributes attributes = reader.attributes();
|
||||||
QString sheetName = attributes.value(QLatin1String("name")).toString();
|
info.name = attributes.value(QLatin1String("name")).toString();
|
||||||
QString rId = attributes.value(QLatin1String("r:id")).toString();
|
info.sheetId = attributes.value(QLatin1String("sheetId")).toInt();
|
||||||
book->d_func()->sheetNameIdPairList.append(QPair<QString, QString>(sheetName, rId));
|
info.rId = attributes.value(QLatin1String("r:id")).toString();
|
||||||
|
if (attributes.hasAttribute(QLatin1String("state")))
|
||||||
|
info.state = attributes.value(QLatin1String("state")).toString();
|
||||||
|
book->d_func()->sheetItemInfoList.append(info);
|
||||||
} else if (reader.name() == QLatin1String("workbookPr")) {
|
} else if (reader.name() == QLatin1String("workbookPr")) {
|
||||||
QXmlStreamAttributes attrs = reader.attributes();
|
QXmlStreamAttributes attrs = reader.attributes();
|
||||||
if (attrs.hasAttribute(QLatin1String("date1904")))
|
if (attrs.hasAttribute(QLatin1String("date1904")))
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ private:
|
|||||||
QList<QImage> images();
|
QList<QImage> images();
|
||||||
QList<Drawing *> drawings();
|
QList<Drawing *> drawings();
|
||||||
void prepareDrawings();
|
void prepareDrawings();
|
||||||
|
Worksheet *addWorksheet(const QString &name, int sheetId);
|
||||||
WorkbookPrivate * const d_ptr;
|
WorkbookPrivate * const d_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,16 @@
|
|||||||
|
|
||||||
namespace QXlsx {
|
namespace QXlsx {
|
||||||
|
|
||||||
|
struct XlsxSheetItemInfo
|
||||||
|
{
|
||||||
|
XlsxSheetItemInfo(){}
|
||||||
|
|
||||||
|
QString name;
|
||||||
|
int sheetId;
|
||||||
|
QString rId;
|
||||||
|
QString state;
|
||||||
|
};
|
||||||
|
|
||||||
class WorkbookPrivate
|
class WorkbookPrivate
|
||||||
{
|
{
|
||||||
Q_DECLARE_PUBLIC(Workbook)
|
Q_DECLARE_PUBLIC(Workbook)
|
||||||
@@ -44,7 +54,7 @@ public:
|
|||||||
QList<QImage> images;
|
QList<QImage> images;
|
||||||
QList<Drawing *> drawings;
|
QList<Drawing *> drawings;
|
||||||
|
|
||||||
QList<QPair<QString, QString> > sheetNameIdPairList;//Data from xml file
|
QList<XlsxSheetItemInfo> sheetItemInfoList;//Data from xml file
|
||||||
|
|
||||||
bool strings_to_numbers_enabled;
|
bool strings_to_numbers_enabled;
|
||||||
bool date1904;
|
bool date1904;
|
||||||
|
|||||||
Reference in New Issue
Block a user