# HG changeset patch # User Andre Heinecke # Date 1459349765 -7200 # Node ID 4ecb91aaf33ff23e1be54d06cfea1aaa02475ce0 # Parent 4f679f613e913ea655612cb2fd611d7c1551d0f3 Hack dataBar's without gradient This is a Microsoft extension and there is no built in support for this. We hardcode what we need here as this is enough for us. diff -r 4f679f613e91 -r 4ecb91aaf33f src/xlsx/xlsxconditionalformatting.cpp --- a/src/xlsx/xlsxconditionalformatting.cpp Tue Mar 22 17:53:56 2016 +0100 +++ b/src/xlsx/xlsxconditionalformatting.cpp Wed Mar 30 16:56:05 2016 +0200 @@ -662,6 +662,9 @@ sqref.append(range.toString()); writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1Char(' '))); + const QString extNS = QStringLiteral("http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"); + const QString xmNS = QStringLiteral("http://schemas.microsoft.com/office/excel/2006/main"); + for (int i=0; icfRules.size(); ++i) { const QSharedPointer &rule = d->cfRules[i]; writer.writeStartElement(QStringLiteral("cfRule")); @@ -698,6 +701,16 @@ d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo2].value()); rule->attrs[XlsxCfRuleData::A_color1].value().saveToXml(writer); writer.writeEndElement();//dataBar + writer.writeStartElement(QStringLiteral("extLst")); + writer.writeStartElement(QStringLiteral("ext")); + writer.writeNamespace(extNS, QStringLiteral("x14")); + writer.writeAttribute(QStringLiteral("uri"), + QStringLiteral("{B025F937-C7B1-47D3-B67F-A62EFF666E3E}")); + writer.writeStartElement(extNS, QStringLiteral("id")); + writer.writeCharacters(QStringLiteral("{00000000-000E-0000-0000-000001000000}")); + writer.writeEndElement(); //id + writer.writeEndElement(); //ext + writer.writeEndElement(); //extLst } else if (rule->attrs[XlsxCfRuleData::A_type] == QLatin1String("colorScale")) { writer.writeStartElement(QStringLiteral("colorScale")); d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo1].value()); @@ -729,6 +742,46 @@ } writer.writeEndElement(); //conditionalFormatting + writer.writeStartElement(QStringLiteral("extLst")); + writer.writeStartElement(QStringLiteral("ext")); + writer.writeNamespace(extNS, QStringLiteral("x14")); + writer.writeAttribute(QStringLiteral("uri"), + QStringLiteral("{78C0D931-6437-407d-A8EE-F0AAD7539E65}")); + writer.writeStartElement(extNS, QStringLiteral("conditionalFormattings")); + writer.writeStartElement(extNS, QStringLiteral("conditionalFormatting")); + writer.writeNamespace(xmNS, QStringLiteral("xm")); + writer.writeStartElement(extNS, QStringLiteral("cfRule")); + writer.writeAttribute("type", "dataBar"); + writer.writeAttribute("id", "{00000000-000E-0000-0000-000001000000}"); + writer.writeStartElement(extNS, "dataBar"); + writer.writeAttribute("gradient", "0"); + writer.writeAttribute("negativeBarColorSameAsPositive", "1"); + writer.writeAttribute("axisPosition", "none"); + writer.writeStartElement(extNS, "cfvo"); + writer.writeAttribute("type", "num"); + writer.writeStartElement(xmNS, "f"); + writer.writeCharacters("0"); + writer.writeEndElement(); // f + writer.writeEndElement(); // cfvo + + writer.writeStartElement(extNS, "cfvo"); + writer.writeAttribute("type", "num"); + writer.writeStartElement(xmNS, "f"); + writer.writeCharacters("100"); + writer.writeEndElement(); // f + writer.writeEndElement(); // cfvo + writer.writeEndElement(); // dataBar + writer.writeEndElement(); // cfrule + + writer.writeStartElement(xmNS, "sqref"); + writer.writeCharacters(sqref.join(QLatin1Char(' '))); + writer.writeEndElement(); // sqref + + writer.writeEndElement(); // conditionalFormatting + writer.writeEndElement(); // conditionalFormattings + + writer.writeEndElement(); //ext + writer.writeEndElement(); //extLst return true; }