Can read .xlsx files with alignment styles now
This commit is contained in:
@@ -14,6 +14,7 @@ int main()
|
|||||||
format->setFontSize(15);
|
format->setFontSize(15);
|
||||||
format->setBorderStyle(QXlsx::Format::BorderDashDotDot);
|
format->setBorderStyle(QXlsx::Format::BorderDashDotDot);
|
||||||
format->setPatternBackgroundColor(QColor(Qt::gray));
|
format->setPatternBackgroundColor(QColor(Qt::gray));
|
||||||
|
format->setHorizontalAlignment(QXlsx::Format::AlignHCenter);
|
||||||
xlsx.write("A1", "Hello Qt!", format);
|
xlsx.write("A1", "Hello Qt!", format);
|
||||||
xlsx.write("A2", 500);
|
xlsx.write("A2", 500);
|
||||||
xlsx.saveAs("first.xlsx");
|
xlsx.saveAs("first.xlsx");
|
||||||
|
|||||||
@@ -859,6 +859,57 @@ bool Styles::readCellXfs(XmlStreamReader &reader)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xfAttrs.hasAttribute(QLatin1String("applyAlignment"))) {
|
||||||
|
reader.readNextStartElement();
|
||||||
|
if (reader.name() == QLatin1String("alignment")) {
|
||||||
|
QXmlStreamAttributes alignAttrs = reader.attributes();
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("horizontal"))) {
|
||||||
|
static QMap<QString, Format::HorizontalAlignment> alignStringMap;
|
||||||
|
if (alignStringMap.isEmpty()) {
|
||||||
|
alignStringMap.insert(QStringLiteral("left"), Format::AlignLeft);
|
||||||
|
alignStringMap.insert(QStringLiteral("center"), Format::AlignHCenter);
|
||||||
|
alignStringMap.insert(QStringLiteral("right"), Format::AlignRight);
|
||||||
|
alignStringMap.insert(QStringLiteral("justify"), Format::AlignHJustify);
|
||||||
|
alignStringMap.insert(QStringLiteral("centerContinuous"), Format::AlignHMerge);
|
||||||
|
alignStringMap.insert(QStringLiteral("distributed"), Format::AlignHDistributed);
|
||||||
|
}
|
||||||
|
QString str = alignAttrs.value(QLatin1String("horizontal")).toString();
|
||||||
|
if (alignStringMap.contains(str))
|
||||||
|
format->setHorizontalAlignment(alignStringMap[str]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("vertical"))) {
|
||||||
|
static QMap<QString, Format::VerticalAlignment> alignStringMap;
|
||||||
|
if (alignStringMap.isEmpty()) {
|
||||||
|
alignStringMap.insert(QStringLiteral("top"), Format::AlignTop);
|
||||||
|
alignStringMap.insert(QStringLiteral("center"), Format::AlignVCenter);
|
||||||
|
alignStringMap.insert(QStringLiteral("justify"), Format::AlignVJustify);
|
||||||
|
alignStringMap.insert(QStringLiteral("distributed"), Format::AlignVDistributed);
|
||||||
|
}
|
||||||
|
QString str = alignAttrs.value(QLatin1String("vertical")).toString();
|
||||||
|
if (alignStringMap.contains(str))
|
||||||
|
format->setVerticalAlignment(alignStringMap[str]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("indent"))) {
|
||||||
|
int indent = alignAttrs.value(QLatin1String("indent")).toInt();
|
||||||
|
format->setIndent(indent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("textRotation"))) {
|
||||||
|
int rotation = alignAttrs.value(QLatin1String("textRotation")).toInt();
|
||||||
|
format->setRotation(rotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("wrapText")))
|
||||||
|
format->setTextWarp(true);
|
||||||
|
|
||||||
|
if (alignAttrs.hasAttribute(QLatin1String("shrinkToFit")))
|
||||||
|
format->setShrinkToFit(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
addFormat(format);
|
addFormat(format);
|
||||||
|
|
||||||
//Find the endElement of xf
|
//Find the endElement of xf
|
||||||
|
|||||||
Reference in New Issue
Block a user