diff --git a/examples/xlsx/readwrite/main.cpp b/examples/xlsx/readwrite/main.cpp index c12bc32..922e72c 100644 --- a/examples/xlsx/readwrite/main.cpp +++ b/examples/xlsx/readwrite/main.cpp @@ -14,6 +14,7 @@ int main() format->setFontSize(15); format->setBorderStyle(QXlsx::Format::BorderDashDotDot); format->setPatternBackgroundColor(QColor(Qt::gray)); + format->setHorizontalAlignment(QXlsx::Format::AlignHCenter); xlsx.write("A1", "Hello Qt!", format); xlsx.write("A2", 500); xlsx.saveAs("first.xlsx"); diff --git a/src/xlsx/xlsxstyles.cpp b/src/xlsx/xlsxstyles.cpp index 1cd6941..4459ecf 100755 --- a/src/xlsx/xlsxstyles.cpp +++ b/src/xlsx/xlsxstyles.cpp @@ -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 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 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); //Find the endElement of xf