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_Name = xlworkbook_PathList[1];
|
||||
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(
|
||||
zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels")));
|
||||
|
||||
@@ -177,11 +177,11 @@ bool Package::parsePackage(QIODevice *packageDevice)
|
||||
return false;
|
||||
|
||||
for (int i=0; i<sheetNameIdPairList.size(); ++i) {
|
||||
QPair<QString, QString> pair = sheetNameIdPairList[i];
|
||||
QString worksheet_rId = pair.second;
|
||||
XlsxSheetItemInfo info = sheetNameIdPairList[i];
|
||||
QString worksheet_rId = info.rId;
|
||||
QString name = xlworkbook_Rels.getRelationshipById(worksheet_rId).target;
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
@@ -136,6 +136,21 @@ Worksheet *Workbook::addWorksheet(const QString &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)
|
||||
{
|
||||
Q_D(Workbook);
|
||||
@@ -325,10 +340,14 @@ QSharedPointer<Workbook> Workbook::loadFromXmlFile(QIODevice *device)
|
||||
QXmlStreamReader::TokenType token = reader.readNext();
|
||||
if (token == QXmlStreamReader::StartElement) {
|
||||
if (reader.name() == QLatin1String("sheet")) {
|
||||
XlsxSheetItemInfo info;
|
||||
QXmlStreamAttributes attributes = reader.attributes();
|
||||
QString sheetName = attributes.value(QLatin1String("name")).toString();
|
||||
QString rId = attributes.value(QLatin1String("r:id")).toString();
|
||||
book->d_func()->sheetNameIdPairList.append(QPair<QString, QString>(sheetName, rId));
|
||||
info.name = attributes.value(QLatin1String("name")).toString();
|
||||
info.sheetId = attributes.value(QLatin1String("sheetId")).toInt();
|
||||
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")) {
|
||||
QXmlStreamAttributes attrs = reader.attributes();
|
||||
if (attrs.hasAttribute(QLatin1String("date1904")))
|
||||
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
QList<QImage> images();
|
||||
QList<Drawing *> drawings();
|
||||
void prepareDrawings();
|
||||
|
||||
Worksheet *addWorksheet(const QString &name, int sheetId);
|
||||
WorkbookPrivate * const d_ptr;
|
||||
};
|
||||
|
||||
|
||||
@@ -30,6 +30,16 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
struct XlsxSheetItemInfo
|
||||
{
|
||||
XlsxSheetItemInfo(){}
|
||||
|
||||
QString name;
|
||||
int sheetId;
|
||||
QString rId;
|
||||
QString state;
|
||||
};
|
||||
|
||||
class WorkbookPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(Workbook)
|
||||
@@ -44,7 +54,7 @@ public:
|
||||
QList<QImage> images;
|
||||
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 date1904;
|
||||
|
||||
Reference in New Issue
Block a user