comparison src/xlsx/xlsxconditionalformatting.cpp @ 19:4ecb91aaf33f

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.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 30 Mar 2016 16:56:05 +0200
parents 93d3106bb9a4
children
comparison
equal deleted inserted replaced
18:4f679f613e91 19:4ecb91aaf33f
660 QStringList sqref; 660 QStringList sqref;
661 foreach (CellRange range, ranges()) 661 foreach (CellRange range, ranges())
662 sqref.append(range.toString()); 662 sqref.append(range.toString());
663 writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1Char(' '))); 663 writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1Char(' ')));
664 664
665 const QString extNS = QStringLiteral("http://schemas.microsoft.com/office/spreadsheetml/2009/9/main");
666 const QString xmNS = QStringLiteral("http://schemas.microsoft.com/office/excel/2006/main");
667
665 for (int i=0; i<d->cfRules.size(); ++i) { 668 for (int i=0; i<d->cfRules.size(); ++i) {
666 const QSharedPointer<XlsxCfRuleData> &rule = d->cfRules[i]; 669 const QSharedPointer<XlsxCfRuleData> &rule = d->cfRules[i];
667 writer.writeStartElement(QStringLiteral("cfRule")); 670 writer.writeStartElement(QStringLiteral("cfRule"));
668 writer.writeAttribute(QStringLiteral("type"), rule->attrs[XlsxCfRuleData::A_type].toString()); 671 writer.writeAttribute(QStringLiteral("type"), rule->attrs[XlsxCfRuleData::A_type].toString());
669 if (rule->dxfFormat.dxfIndexValid()) 672 if (rule->dxfFormat.dxfIndexValid())
696 writer.writeAttribute(QStringLiteral("showValue"), QStringLiteral("0")); 699 writer.writeAttribute(QStringLiteral("showValue"), QStringLiteral("0"));
697 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo1].value<XlsxCfVoData>()); 700 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo1].value<XlsxCfVoData>());
698 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo2].value<XlsxCfVoData>()); 701 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo2].value<XlsxCfVoData>());
699 rule->attrs[XlsxCfRuleData::A_color1].value<XlsxColor>().saveToXml(writer); 702 rule->attrs[XlsxCfRuleData::A_color1].value<XlsxColor>().saveToXml(writer);
700 writer.writeEndElement();//dataBar 703 writer.writeEndElement();//dataBar
704 writer.writeStartElement(QStringLiteral("extLst"));
705 writer.writeStartElement(QStringLiteral("ext"));
706 writer.writeNamespace(extNS, QStringLiteral("x14"));
707 writer.writeAttribute(QStringLiteral("uri"),
708 QStringLiteral("{B025F937-C7B1-47D3-B67F-A62EFF666E3E}"));
709 writer.writeStartElement(extNS, QStringLiteral("id"));
710 writer.writeCharacters(QStringLiteral("{00000000-000E-0000-0000-000001000000}"));
711 writer.writeEndElement(); //id
712 writer.writeEndElement(); //ext
713 writer.writeEndElement(); //extLst
701 } else if (rule->attrs[XlsxCfRuleData::A_type] == QLatin1String("colorScale")) { 714 } else if (rule->attrs[XlsxCfRuleData::A_type] == QLatin1String("colorScale")) {
702 writer.writeStartElement(QStringLiteral("colorScale")); 715 writer.writeStartElement(QStringLiteral("colorScale"));
703 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo1].value<XlsxCfVoData>()); 716 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo1].value<XlsxCfVoData>());
704 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo2].value<XlsxCfVoData>()); 717 d->writeCfVo(writer, rule->attrs[XlsxCfRuleData::A_cfvo2].value<XlsxCfVoData>());
705 if (rule->attrs.contains(XlsxCfRuleData::A_cfvo3)) 718 if (rule->attrs.contains(XlsxCfRuleData::A_cfvo3))
727 740
728 writer.writeEndElement(); //cfRule 741 writer.writeEndElement(); //cfRule
729 } 742 }
730 743
731 writer.writeEndElement(); //conditionalFormatting 744 writer.writeEndElement(); //conditionalFormatting
745 writer.writeStartElement(QStringLiteral("extLst"));
746 writer.writeStartElement(QStringLiteral("ext"));
747 writer.writeNamespace(extNS, QStringLiteral("x14"));
748 writer.writeAttribute(QStringLiteral("uri"),
749 QStringLiteral("{78C0D931-6437-407d-A8EE-F0AAD7539E65}"));
750 writer.writeStartElement(extNS, QStringLiteral("conditionalFormattings"));
751 writer.writeStartElement(extNS, QStringLiteral("conditionalFormatting"));
752 writer.writeNamespace(xmNS, QStringLiteral("xm"));
753 writer.writeStartElement(extNS, QStringLiteral("cfRule"));
754 writer.writeAttribute("type", "dataBar");
755 writer.writeAttribute("id", "{00000000-000E-0000-0000-000001000000}");
756 writer.writeStartElement(extNS, "dataBar");
757 writer.writeAttribute("gradient", "0");
758 writer.writeAttribute("negativeBarColorSameAsPositive", "1");
759 writer.writeAttribute("axisPosition", "none");
760 writer.writeStartElement(extNS, "cfvo");
761 writer.writeAttribute("type", "num");
762 writer.writeStartElement(xmNS, "f");
763 writer.writeCharacters("0");
764 writer.writeEndElement(); // f
765 writer.writeEndElement(); // cfvo
766
767 writer.writeStartElement(extNS, "cfvo");
768 writer.writeAttribute("type", "num");
769 writer.writeStartElement(xmNS, "f");
770 writer.writeCharacters("100");
771 writer.writeEndElement(); // f
772 writer.writeEndElement(); // cfvo
773 writer.writeEndElement(); // dataBar
774 writer.writeEndElement(); // cfrule
775
776 writer.writeStartElement(xmNS, "sqref");
777 writer.writeCharacters(sqref.join(QLatin1Char(' ')));
778 writer.writeEndElement(); // sqref
779
780 writer.writeEndElement(); // conditionalFormatting
781 writer.writeEndElement(); // conditionalFormattings
782
783 writer.writeEndElement(); //ext
784 writer.writeEndElement(); //extLst
732 return true; 785 return true;
733 } 786 }
734 787
735 QT_END_NAMESPACE_XLSX 788 QT_END_NAMESPACE_XLSX
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)