Fix issue 4: Fix background color of solid pattern
For a solid fill, Excel reverses the role of foreground and background colours
This commit is contained in:
@@ -46,6 +46,10 @@ int main()
|
||||
format5->setNumberFormat(22);
|
||||
xlsx.write("A5", QDate(2013, 8, 29), format5);
|
||||
|
||||
QXlsx::Format *format6 = xlsx.createFormat();
|
||||
format6->setPatternBackgroundColor(QColor(Qt::gray));
|
||||
xlsx.write("A6", "Background color: green", format6);
|
||||
|
||||
xlsx.saveAs(DATA_PATH"TestStyle.xlsx");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -311,12 +311,13 @@ void Styles::writeFill(XmlStreamWriter &writer, FillData *fill)
|
||||
writer.writeStartElement(QStringLiteral("fill"));
|
||||
writer.writeStartElement(QStringLiteral("patternFill"));
|
||||
writer.writeAttribute(QStringLiteral("patternType"), patternStrings[fill->pattern]);
|
||||
// For a solid fill, Excel reverses the role of foreground and background colours
|
||||
if (fill->fgColor.isValid()) {
|
||||
writer.writeEmptyElement(QStringLiteral("fgColor"));
|
||||
writer.writeEmptyElement(fill->pattern == Format::PatternSolid ? QStringLiteral("bgColor") : QStringLiteral("fgColor"));
|
||||
writer.writeAttribute(QStringLiteral("rgb"), QStringLiteral("FF")+fill->fgColor.name().mid(1));
|
||||
}
|
||||
if (fill->bgColor.isValid()) {
|
||||
writer.writeEmptyElement(QStringLiteral("bgColor"));
|
||||
writer.writeEmptyElement(fill->pattern == Format::PatternSolid ? QStringLiteral("fgColor") : QStringLiteral("bgColor"));
|
||||
writer.writeAttribute(QStringLiteral("rgb"), QStringLiteral("FF")+fill->bgColor.name().mid(1));
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ public:
|
||||
private Q_SLOTS:
|
||||
void testEmptyStyle();
|
||||
void testAddFormat();
|
||||
void testSolidFillBackgroundColor();
|
||||
};
|
||||
|
||||
StylesTest::StylesTest()
|
||||
@@ -41,6 +42,19 @@ void StylesTest::testAddFormat()
|
||||
QVERIFY2(xmlData.contains("<cellXfs count=\"2\">"), ""); //Note we have a default one
|
||||
}
|
||||
|
||||
// For a solid fill, Excel reverses the role of foreground and background colours
|
||||
void StylesTest::testSolidFillBackgroundColor()
|
||||
{
|
||||
QXlsx::Styles styles;
|
||||
QXlsx::Format *format = styles.createFormat();
|
||||
format->setPatternBackgroundColor(QColor(Qt::red));
|
||||
styles.addFormat(format);
|
||||
|
||||
QByteArray xmlData = styles.saveToXmlData();
|
||||
|
||||
QVERIFY(xmlData.contains("<patternFill patternType=\"solid\"><fgColor rgb=\"FFff0000\"/>"));
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(StylesTest)
|
||||
|
||||
#include "tst_stylestest.moc"
|
||||
|
||||
Reference in New Issue
Block a user