Can read .xlsx files with merge cells
This commit is contained in:
@@ -1172,6 +1172,39 @@ void WorksheetPrivate::readColumnsInfo(XmlStreamReader &reader)
|
||||
}
|
||||
}
|
||||
|
||||
void WorksheetPrivate::readMergeCells(XmlStreamReader &reader)
|
||||
{
|
||||
Q_ASSERT(reader.name() == QLatin1String("mergeCells"));
|
||||
|
||||
QXmlStreamAttributes attributes = reader.attributes();
|
||||
int count = attributes.value(QLatin1String("count")).toInt();
|
||||
|
||||
while(!(reader.name() == QLatin1String("mergeCells") && reader.tokenType() == QXmlStreamReader::EndElement)) {
|
||||
reader.readNextStartElement();
|
||||
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
||||
if (reader.name() == QLatin1String("mergeCell")) {
|
||||
QXmlStreamAttributes attrs = reader.attributes();
|
||||
QString rangeStr = attrs.value(QLatin1String("ref")).toString();
|
||||
QStringList items = rangeStr.split(QLatin1Char(':'));
|
||||
if (items.size() != 2) {
|
||||
//Error
|
||||
} else {
|
||||
QPoint p0 = xl_cell_to_rowcol(items[0]);
|
||||
QPoint p1 = xl_cell_to_rowcol(items[1]);
|
||||
|
||||
XlsxCellRange range;
|
||||
range.row_begin = p0.x();
|
||||
range.column_begin = p0.y();
|
||||
range.row_end = p1.x();
|
||||
range.column_end = p1.y();
|
||||
|
||||
merges.append(range);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Worksheet::loadFromXmlFile(QIODevice *device)
|
||||
{
|
||||
Q_D(Worksheet);
|
||||
@@ -1205,6 +1238,8 @@ bool Worksheet::loadFromXmlFile(QIODevice *device)
|
||||
d->readColumnsInfo(reader);
|
||||
} else if (reader.name() == QLatin1String("sheetData")) {
|
||||
d->readSheetData(reader);
|
||||
} else if (reader.name() == QLatin1String("mergeCells")) {
|
||||
d->readMergeCells(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user