1
0
mirror of https://github.com/QtExcel/QXlsx.git synced 2025-01-16 04:42:53 +08:00

Strict fixes

This disable CMake for checking for a C compiler.
Doesn't quietly fails if Qt is not found.
Add strict definitions for correct usage of
QStrings and disables the deprecated foreach
loops and other deprecated usage of Qt classes.
This commit is contained in:
Daniel Nicoletti 2020-05-22 14:38:18 -03:00
parent d0d5501062
commit 5dc16e3da3
21 changed files with 228 additions and 206 deletions

View File

@ -1,14 +1,24 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(QXlsx) project(QXlsx VERSION 1.0.0 LANGUAGES CXX)
#------------------------------------------------------------------------------ find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core Gui)
# Qt
#------------------------------------------------------------------------------
find_package(Qt5 REQUIRED QUIET COMPONENTS Core Gui)
find_package(Qt5Gui CONFIG REQUIRED Private) find_package(Qt5Gui CONFIG REQUIRED Private)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
add_definitions(
-DQT_NO_KEYWORDS
-DQT_NO_CAST_TO_ASCII
-DQT_NO_CAST_FROM_ASCII
-DQT_STRICT_ITERATORS
-DQT_NO_URL_CAST_FROM_STRING
-DQT_NO_CAST_FROM_BYTEARRAY
-DQT_USE_QSTRINGBUILDER
-DQT_NO_SIGNALS_SLOTS_KEYWORDS
-DQT_USE_FAST_OPERATOR_PLUS
-DQT_DISABLE_DEPRECATED_BEFORE=0x050c00
)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Library # Library
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -22,10 +22,10 @@ class XlsxSeries
{ {
public: public:
//At present, we care about number cell ranges only! //At present, we care about number cell ranges only!
QString numberDataSource_numRef = ""; // yval, val QString numberDataSource_numRef; // yval, val
QString axDataSource_numRef = ""; // xval, cat QString axDataSource_numRef; // xval, cat
QString headerH_numRef = ""; QString headerH_numRef;
QString headerV_numRef = ""; QString headerV_numRef;
bool swapHeader = false; bool swapHeader = false;
}; };
@ -41,7 +41,7 @@ public:
XlsxAxis::AxisPos p, XlsxAxis::AxisPos p,
int id, int id,
int crossId, int crossId,
QString axisTitle = QString("") ) QString axisTitle = QString())
{ {
type = t; type = t;
axisPos = p; axisPos = p;

View File

@ -39,7 +39,6 @@
#include "xlsxglobal.h" #include "xlsxglobal.h"
#include "xlsxabstractooxmlfile.h" #include "xlsxabstractooxmlfile.h"
#include <QList> #include <QList>
#include <QPair>
#include <QStringList> #include <QStringList>
#include <QMap> #include <QMap>
@ -64,7 +63,7 @@ public:
private: private:
QStringList m_titlesOfPartsList; QStringList m_titlesOfPartsList;
QList<QPair<QString, int> > m_headingPairsList; QList<std::pair<QString, int> > m_headingPairsList;
QMap<QString, QString> m_properties; QMap<QString, QString> m_properties;
}; };

View File

@ -25,9 +25,13 @@ CellPrivate::CellPrivate(Cell *p) :
} }
CellPrivate::CellPrivate(const CellPrivate * const cp) CellPrivate::CellPrivate(const CellPrivate * const cp)
: value(cp->value), formula(cp->formula), cellType(cp->cellType) : parent(cp->parent)
, format(cp->format), richString(cp->richString), parent(cp->parent), , cellType(cp->cellType)
styleNumber(cp->styleNumber) , value(cp->value)
, formula(cp->formula)
, format(cp->format)
, richString(cp->richString)
, styleNumber(cp->styleNumber)
{ {
} }
@ -248,7 +252,7 @@ bool Cell::isDateTime() const
Cell::CellType cellType = d->cellType; Cell::CellType cellType = d->cellType;
double dValue = d->value.toDouble(); // number double dValue = d->value.toDouble(); // number
QString strValue = d->value.toString().toUtf8(); // QString strValue = d->value.toString().toUtf8();
bool isValidFormat = d->format.isValid(); bool isValidFormat = d->format.isValid();
bool isDateTimeFormat = d->format.isDateTimeFormat(); // datetime format bool isDateTimeFormat = d->format.isDateTimeFormat(); // datetime format

View File

@ -111,7 +111,7 @@ void Chart::addSeries(const CellRange &range, AbstractSheet *sheet, bool headerH
} }
else else
{ {
series->headerH_numRef = ""; series->headerH_numRef = QString();
} }
if( headerV ) if( headerV )
{ {
@ -120,7 +120,7 @@ void Chart::addSeries(const CellRange &range, AbstractSheet *sheet, bool headerH
} }
else else
{ {
series->headerV_numRef = ""; series->headerV_numRef = QString();
} }
series->swapHeader = swapHeaders; series->swapHeader = swapHeaders;
@ -165,7 +165,7 @@ void Chart::addSeries(const CellRange &range, AbstractSheet *sheet, bool headerH
} }
else else
{ {
series->headerH_numRef = ""; series->headerH_numRef = QString();
} }
if( headerV ) if( headerV )
@ -175,7 +175,7 @@ void Chart::addSeries(const CellRange &range, AbstractSheet *sheet, bool headerH
} }
else else
{ {
series->headerV_numRef = ""; series->headerV_numRef = QString();
} }
series->swapHeader = swapHeaders; series->swapHeader = swapHeaders;
@ -1056,26 +1056,26 @@ void ChartPrivate::saveXmlChartLegend(QXmlStreamWriter &writer) const
{ {
//case Chart::ChartAxisPos::Right: //case Chart::ChartAxisPos::Right:
case Chart::Right : case Chart::Right :
pos = "r"; pos = QStringLiteral("r");
break; break;
// case Chart::ChartAxisPos::Left: // case Chart::ChartAxisPos::Left:
case Chart::Left : case Chart::Left :
pos = "l"; pos = QStringLiteral("l");
break; break;
// case Chart::ChartAxisPos::Top: // case Chart::ChartAxisPos::Top:
case Chart::Top : case Chart::Top :
pos = "t"; pos = QStringLiteral("t");
break; break;
// case Chart::ChartAxisPos::Bottom: // case Chart::ChartAxisPos::Bottom:
case Chart::Bottom : case Chart::Bottom :
pos = "b"; pos = QStringLiteral("b");
break; break;
default: default:
pos = "r"; pos = QStringLiteral("r");
break; break;
} }
@ -1143,7 +1143,7 @@ void ChartPrivate::saveXmlBarChart(QXmlStreamWriter &writer) const
// Note: Bar3D have 2~3 axes // Note: Bar3D have 2~3 axes
int axisListSize = axisList.size(); // int axisListSize = axisList.size();
// [dev62] // [dev62]
// Q_ASSERT( axisListSize == 2 || // Q_ASSERT( axisListSize == 2 ||
// ( axisListSize == 3 && chartType == Chart::CT_Bar3DChart ) ); // ( axisListSize == 3 && chartType == Chart::CT_Bar3DChart ) );
@ -1466,7 +1466,7 @@ bool ChartPrivate::loadXmlAxisValAx(QXmlStreamReader &reader)
bool ChartPrivate::loadXmlAxisEG_AxShared(QXmlStreamReader &reader, XlsxAxis* axis) bool ChartPrivate::loadXmlAxisEG_AxShared(QXmlStreamReader &reader, XlsxAxis* axis)
{ {
Q_ASSERT( NULL != axis ); Q_ASSERT( NULL != axis );
Q_ASSERT( reader.name().endsWith("Ax") ); Q_ASSERT( reader.name().endsWith(QLatin1String("Ax")) );
QString name = reader.name().toString(); // QString name = reader.name().toString(); //
while ( !reader.atEnd() ) while ( !reader.atEnd() )
@ -1479,7 +1479,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared(QXmlStreamReader &reader, XlsxAxis* ax
if ( reader.name() == QLatin1String("axId") ) // mandatory element if ( reader.name() == QLatin1String("axId") ) // mandatory element
{ {
// dev57 // dev57
uint axId = reader.attributes().value("val").toString().toUInt(); // for Qt5.1 uint axId = reader.attributes().value(QStringLiteral("val")).toString().toUInt(); // for Qt5.1
axis->axisId = axId; axis->axisId = axId;
} }
else if ( reader.name() == QLatin1String("scaling") ) else if ( reader.name() == QLatin1String("scaling") )
@ -1498,10 +1498,10 @@ bool ChartPrivate::loadXmlAxisEG_AxShared(QXmlStreamReader &reader, XlsxAxis* ax
QString axPosVal = reader.attributes().value(QLatin1String("val")).toString(); QString axPosVal = reader.attributes().value(QLatin1String("val")).toString();
if ( axPosVal == "l" ) { axis->axisPos = XlsxAxis::Left; } if ( axPosVal == QLatin1String("l") ) { axis->axisPos = XlsxAxis::Left; }
else if ( axPosVal == "r" ) { axis->axisPos = XlsxAxis::Right; } else if ( axPosVal == QLatin1String("r") ) { axis->axisPos = XlsxAxis::Right; }
else if ( axPosVal == "t" ) { axis->axisPos = XlsxAxis::Top; } else if ( axPosVal == QLatin1String("t") ) { axis->axisPos = XlsxAxis::Top; }
else if ( axPosVal == "b" ) { axis->axisPos = XlsxAxis::Bottom; } else if ( axPosVal == QLatin1String("b") ) { axis->axisPos = XlsxAxis::Bottom; }
} }
else if ( reader.name() == QLatin1String("majorGridlines") ) else if ( reader.name() == QLatin1String("majorGridlines") )
{ {
@ -1592,7 +1592,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Scaling(QXmlStreamReader &reader, Xlsx
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "scaling" ) reader.name() == QLatin1String("scaling") )
{ {
break; break;
} }
@ -1661,7 +1661,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title(QXmlStreamReader &reader, XlsxAx
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "title" ) reader.name() == QLatin1String("title") )
{ {
break; break;
} }
@ -1682,7 +1682,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Overlay(QXmlStreamReader &reader
{ {
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "overlay" ) reader.name() == QLatin1String("overlay") )
{ {
break; break;
} }
@ -1709,7 +1709,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Tx(QXmlStreamReader &reader, Xls
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "tx" ) reader.name() == QLatin1String("tx") )
{ {
break; break;
} }
@ -1736,7 +1736,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Tx_Rich(QXmlStreamReader &reader
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "rich" ) reader.name() == QLatin1String("rich") )
{ {
break; break;
} }
@ -1768,7 +1768,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Tx_Rich_P(QXmlStreamReader &read
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "p" ) reader.name() == QLatin1String("p") )
{ {
break; break;
} }
@ -1796,7 +1796,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Tx_Rich_P_pPr(QXmlStreamReader &
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "pPr" ) reader.name() == QLatin1String("pPr") )
{ {
break; break;
} }
@ -1825,7 +1825,7 @@ bool ChartPrivate::loadXmlAxisEG_AxShared_Title_Tx_Rich_P_R(QXmlStreamReader &re
} }
} }
else if ( reader.tokenType() == QXmlStreamReader::EndElement && else if ( reader.tokenType() == QXmlStreamReader::EndElement &&
reader.name() == "r" ) reader.name() == QLatin1String("r") )
{ {
break; break;
} }
@ -1951,7 +1951,7 @@ void ChartPrivate::saveXmlAxisCatAx(QXmlStreamWriter &writer, XlsxAxis* axis) co
</xsd:complexType> </xsd:complexType>
*/ */
writer.writeStartElement("c:catAx"); writer.writeStartElement(QStringLiteral("c:catAx"));
saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared
@ -1985,7 +1985,7 @@ void ChartPrivate::saveXmlAxisDateAx(QXmlStreamWriter &writer, XlsxAxis* axis) c
</xsd:complexType> </xsd:complexType>
*/ */
writer.writeStartElement("c:dateAx"); writer.writeStartElement(QStringLiteral("c:dateAx"));
saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared
@ -2015,7 +2015,7 @@ void ChartPrivate::saveXmlAxisSerAx(QXmlStreamWriter &writer, XlsxAxis* axis) co
</xsd:complexType> </xsd:complexType>
*/ */
writer.writeStartElement("c:serAx"); writer.writeStartElement(QStringLiteral("c:serAx"));
saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared
@ -2042,7 +2042,7 @@ void ChartPrivate::saveXmlAxisValAx(QXmlStreamWriter &writer, XlsxAxis* axis) co
</xsd:complexType> </xsd:complexType>
*/ */
writer.writeStartElement("c:valAx"); writer.writeStartElement(QStringLiteral("c:valAx"));
saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared saveXmlAxisEG_AxShared(writer, axis); // EG_AxShared
@ -2100,11 +2100,11 @@ void ChartPrivate::saveXmlAxisEG_AxShared(QXmlStreamWriter &writer, XlsxAxis* ax
if( majorGridlinesEnabled ) if( majorGridlinesEnabled )
{ {
writer.writeEmptyElement("c:majorGridlines"); writer.writeEmptyElement(QStringLiteral("c:majorGridlines"));
} }
if( minorGridlinesEnabled ) if( minorGridlinesEnabled )
{ {
writer.writeEmptyElement("c:minorGridlines"); writer.writeEmptyElement(QStringLiteral("c:minorGridlines"));
} }
saveXmlAxisEG_AxShared_Title(writer, axis); // "c:title" CT_Title saveXmlAxisEG_AxShared_Title(writer, axis); // "c:title" CT_Title
@ -2159,28 +2159,28 @@ void ChartPrivate::saveXmlAxisEG_AxShared_Title(QXmlStreamWriter &writer, XlsxAx
</xsd:complexType> </xsd:complexType>
*/ */
writer.writeStartElement("c:title"); writer.writeStartElement(QStringLiteral("c:title"));
// CT_Tx {{ // CT_Tx {{
writer.writeStartElement("c:tx"); writer.writeStartElement(QStringLiteral("c:tx"));
writer.writeStartElement("c:rich"); // CT_TextBody writer.writeStartElement(QStringLiteral("c:rich")); // CT_TextBody
writer.writeEmptyElement(QStringLiteral("a:bodyPr")); // CT_TextBodyProperties writer.writeEmptyElement(QStringLiteral("a:bodyPr")); // CT_TextBodyProperties
writer.writeEmptyElement(QStringLiteral("a:lstStyle")); // CT_TextListStyle writer.writeEmptyElement(QStringLiteral("a:lstStyle")); // CT_TextListStyle
writer.writeStartElement("a:p"); writer.writeStartElement(QStringLiteral("a:p"));
writer.writeStartElement("a:pPr"); writer.writeStartElement(QStringLiteral("a:pPr"));
writer.writeAttribute(QStringLiteral("lvl"), QString::number(0)); writer.writeAttribute(QStringLiteral("lvl"), QString::number(0));
writer.writeStartElement("a:defRPr"); writer.writeStartElement(QStringLiteral("a:defRPr"));
writer.writeAttribute(QStringLiteral("b"), QString::number(0)); writer.writeAttribute(QStringLiteral("b"), QString::number(0));
writer.writeEndElement(); // a:defRPr writer.writeEndElement(); // a:defRPr
writer.writeEndElement(); // a:pPr writer.writeEndElement(); // a:pPr
writer.writeStartElement("a:r"); writer.writeStartElement(QStringLiteral("a:r"));
QString strAxisName = GetAxisName(axis); QString strAxisName = GetAxisName(axis);
writer.writeTextElement( QStringLiteral("a:t"), strAxisName ); writer.writeTextElement( QStringLiteral("a:t"), strAxisName );
writer.writeEndElement(); // a:r writer.writeEndElement(); // a:r
@ -2192,7 +2192,7 @@ void ChartPrivate::saveXmlAxisEG_AxShared_Title(QXmlStreamWriter &writer, XlsxAx
writer.writeEndElement(); // c:tx writer.writeEndElement(); // c:tx
// CT_Tx }} // CT_Tx }}
writer.writeStartElement("c:overlay"); writer.writeStartElement(QStringLiteral("c:overlay"));
writer.writeAttribute(QStringLiteral("val"), QString::number(0)); // CT_Boolean writer.writeAttribute(QStringLiteral("val"), QString::number(0)); // CT_Boolean
writer.writeEndElement(); // c:overlay writer.writeEndElement(); // c:overlay
@ -2248,13 +2248,13 @@ QString ChartPrivate::readSubTree(QXmlStreamReader &reader)
{ {
prefix = reader.prefix().toString(); prefix = reader.prefix().toString();
treeString += QString("<" + reader.qualifiedName().toString() ); treeString += QLatin1String("<") + reader.qualifiedName().toString();
foreach(const QXmlStreamAttribute &attr, reader.attributes()) const QXmlStreamAttributes attributes = reader.attributes();
{ for (const QXmlStreamAttribute &attr : attributes) {
treeString += QString( " " + attr.name().toString() + "=\"" + attr.value().toString() + "\""); treeString += QLatin1String(" ") + attr.name().toString() + QLatin1String("=\"") + attr.value().toString() + QLatin1String("\"");
} }
treeString += ">"; treeString += QStringLiteral(">");
} }
else if (reader.tokenType() == QXmlStreamReader::EndElement ) else if (reader.tokenType() == QXmlStreamReader::EndElement )
{ {
@ -2262,7 +2262,7 @@ QString ChartPrivate::readSubTree(QXmlStreamReader &reader)
{ {
break; break;
} }
treeString += QString("</" + reader.qualifiedName().toString() + ">"); treeString += QLatin1String("</") + reader.qualifiedName().toString() + QLatin1String(">");
} }
} }
@ -2288,25 +2288,25 @@ bool ChartPrivate::loadXmlChartLegend(QXmlStreamReader &reader)
if (reader.name() == QLatin1String("legendPos")) // c:legendPos if (reader.name() == QLatin1String("legendPos")) // c:legendPos
{ {
QString pos = reader.attributes().value(QLatin1String("val")).toString(); QString pos = reader.attributes().value(QLatin1String("val")).toString();
if( pos.compare("r",Qt::CaseInsensitive) == 0) if( pos.compare(QLatin1String("r"), Qt::CaseInsensitive) == 0)
{ {
// legendPos = Chart::ChartAxisPos::Right; // legendPos = Chart::ChartAxisPos::Right;
legendPos = Chart::Right; legendPos = Chart::Right;
} }
else else
if( pos.compare("l",Qt::CaseInsensitive) == 0) if( pos.compare(QLatin1String("l"), Qt::CaseInsensitive) == 0)
{ {
// legendPos = Chart::ChartAxisPos::Left; // legendPos = Chart::ChartAxisPos::Left;
legendPos = Chart::Left; legendPos = Chart::Left;
} }
else else
if( pos.compare("t",Qt::CaseInsensitive) == 0) if( pos.compare(QLatin1String("t"), Qt::CaseInsensitive) == 0)
{ {
// legendPos = Chart::ChartAxisPos::Top; // legendPos = Chart::ChartAxisPos::Top;
legendPos = Chart::Top; legendPos = Chart::Top;
} }
else else
if( pos.compare("b",Qt::CaseInsensitive) == 0) if( pos.compare(QLatin1String("b"), Qt::CaseInsensitive) == 0)
{ {
// legendPos = Chart::ChartAxisPos::Bottom; // legendPos = Chart::ChartAxisPos::Bottom;
legendPos = Chart::Bottom; legendPos = Chart::Bottom;
@ -2321,7 +2321,7 @@ bool ChartPrivate::loadXmlChartLegend(QXmlStreamReader &reader)
if (reader.name() == QLatin1String("overlay")) // c:legendPos if (reader.name() == QLatin1String("overlay")) // c:legendPos
{ {
QString pos = reader.attributes().value(QLatin1String("val")).toString(); QString pos = reader.attributes().value(QLatin1String("val")).toString();
if( pos.compare("1",Qt::CaseInsensitive) == 0 ) if( pos.compare(QLatin1String("1"), Qt::CaseInsensitive) == 0 )
{ {
legendOverlay = true; legendOverlay = true;
} }

View File

@ -106,10 +106,10 @@ void Chartsheet::saveToXmlFile(QIODevice *device) const
writer.writeEndElement(); //sheetViews writer.writeEndElement(); //sheetViews
int idx = d->workbook->drawings().indexOf(d->drawing.data()); int idx = d->workbook->drawings().indexOf(d->drawing.data());
d->relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QString("../drawings/drawing%1.xml").arg(idx+1)); d->relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QStringLiteral("../drawings/drawing%1.xml").arg(idx+1));
writer.writeEmptyElement(QStringLiteral("drawing")); writer.writeEmptyElement(QStringLiteral("drawing"));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(d->relationships->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(d->relationships->count()));
writer.writeEndElement();//chartsheet writer.writeEndElement();//chartsheet
writer.writeEndDocument(); writer.writeEndDocument();

View File

@ -204,19 +204,19 @@ bool ConditionalFormatting::addHighlightCellsRule(HighlightRuleType type, const
if (type == Highlight_ContainsText) { if (type == Highlight_ContainsText) {
cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("containsText"); cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("containsText");
cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("containsText"); cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("containsText");
cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QString("NOT(ISERROR(SEARCH(\"%1\",%2)))").arg(formula1); cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QStringLiteral("NOT(ISERROR(SEARCH(\"%1\",%2)))").arg(formula1);
} else if (type == Highlight_NotContainsText) { } else if (type == Highlight_NotContainsText) {
cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("notContainsText"); cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("notContainsText");
cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("notContains"); cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("notContains");
cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QString("ISERROR(SEARCH(\"%2\",%1))").arg(formula1); cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QStringLiteral("ISERROR(SEARCH(\"%2\",%1))").arg(formula1);
} else if (type == Highlight_BeginsWith) { } else if (type == Highlight_BeginsWith) {
cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("beginsWith"); cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("beginsWith");
cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("beginsWith"); cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("beginsWith");
cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QString("LEFT(%2,LEN(\"%1\"))=\"%1\"").arg(formula1); cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QStringLiteral("LEFT(%2,LEN(\"%1\"))=\"%1\"").arg(formula1);
} else { } else {
cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("endsWith"); cfRule->attrs[XlsxCfRuleData::A_type] = QStringLiteral("endsWith");
cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("endsWith"); cfRule->attrs[XlsxCfRuleData::A_operator] = QStringLiteral("endsWith");
cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QString("RIGHT(%2,LEN(\"%1\"))=\"%1\"").arg(formula1); cfRule->attrs[XlsxCfRuleData::A_formula1_temp] = QStringLiteral("RIGHT(%2,LEN(\"%1\"))=\"%1\"").arg(formula1);
} }
cfRule->attrs[XlsxCfRuleData::A_text] = formula1; cfRule->attrs[XlsxCfRuleData::A_text] = formula1;
skipFormula = true; skipFormula = true;
@ -631,9 +631,11 @@ bool ConditionalFormatting::loadFromXml(QXmlStreamReader &reader, Styles *styles
d->ranges.clear(); d->ranges.clear();
d->cfRules.clear(); d->cfRules.clear();
QXmlStreamAttributes attrs = reader.attributes(); QXmlStreamAttributes attrs = reader.attributes();
QString sqref = attrs.value(QLatin1String("sqref")).toString(); const QString sqref = attrs.value(QLatin1String("sqref")).toString();
foreach (QString range, sqref.split(QLatin1Char(' '))) const auto sqrefParts = sqref.split(QLatin1Char(' '));
for (const QString &range : sqrefParts) {
this->addRange(range); this->addRange(range);
}
while (!reader.atEnd()) { while (!reader.atEnd()) {
reader.readNextStartElement(); reader.readNextStartElement();
@ -658,8 +660,10 @@ bool ConditionalFormatting::saveToXml(QXmlStreamWriter &writer) const
{ {
writer.writeStartElement(QStringLiteral("conditionalFormatting")); writer.writeStartElement(QStringLiteral("conditionalFormatting"));
QStringList sqref; QStringList sqref;
foreach (CellRange range, ranges()) const auto rangeList = ranges();
for (const CellRange &range : rangeList) {
sqref.append(range.toString()); sqref.append(range.toString());
}
writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1String(" "))); writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1String(" ")));
for (int i=0; i<d->cfRules.size(); ++i) { for (int i=0; i<d->cfRules.size(); ++i) {

View File

@ -38,7 +38,7 @@ ContentTypes::ContentTypes(CreateFlag flag)
m_package_prefix = QStringLiteral("application/vnd.openxmlformats-package."); m_package_prefix = QStringLiteral("application/vnd.openxmlformats-package.");
m_document_prefix = QStringLiteral("application/vnd.openxmlformats-officedocument."); m_document_prefix = QStringLiteral("application/vnd.openxmlformats-officedocument.");
m_defaults.insert(QStringLiteral("rels"), m_package_prefix + QStringLiteral("relationships+xml")); m_defaults.insert(QStringLiteral("rels"), m_package_prefix + QLatin1String("relationships+xml"));
m_defaults.insert(QStringLiteral("xml"), QStringLiteral("application/xml")); m_defaults.insert(QStringLiteral("xml"), QStringLiteral("application/xml"));
} }
@ -54,77 +54,77 @@ void ContentTypes::addOverride(const QString &key, const QString &value)
void ContentTypes::addDocPropApp() void ContentTypes::addDocPropApp()
{ {
addOverride(QStringLiteral("/docProps/app.xml"), m_document_prefix + QStringLiteral("extended-properties+xml")); addOverride(QStringLiteral("/docProps/app.xml"), m_document_prefix + QLatin1String("extended-properties+xml"));
} }
void ContentTypes::addDocPropCore() void ContentTypes::addDocPropCore()
{ {
addOverride(QStringLiteral("/docProps/core.xml"), m_package_prefix + QStringLiteral("core-properties+xml")); addOverride(QStringLiteral("/docProps/core.xml"), m_package_prefix + QLatin1String("core-properties+xml"));
} }
void ContentTypes::addStyles() void ContentTypes::addStyles()
{ {
addOverride(QStringLiteral("/xl/styles.xml"), m_document_prefix + QStringLiteral("spreadsheetml.styles+xml")); addOverride(QStringLiteral("/xl/styles.xml"), m_document_prefix + QLatin1String("spreadsheetml.styles+xml"));
} }
void ContentTypes::addTheme() void ContentTypes::addTheme()
{ {
addOverride(QStringLiteral("/xl/theme/theme1.xml"), m_document_prefix + QStringLiteral("theme+xml")); addOverride(QStringLiteral("/xl/theme/theme1.xml"), m_document_prefix + QLatin1String("theme+xml"));
} }
void ContentTypes::addWorkbook() void ContentTypes::addWorkbook()
{ {
addOverride(QStringLiteral("/xl/workbook.xml"), m_document_prefix + QStringLiteral("spreadsheetml.sheet.main+xml")); addOverride(QStringLiteral("/xl/workbook.xml"), m_document_prefix + QLatin1String("spreadsheetml.sheet.main+xml"));
} }
void ContentTypes::addWorksheetName(const QString &name) void ContentTypes::addWorksheetName(const QString &name)
{ {
addOverride(QString("/xl/worksheets/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.worksheet+xml")); addOverride(QStringLiteral("/xl/worksheets/%1.xml").arg(name), m_document_prefix + QLatin1String("spreadsheetml.worksheet+xml"));
} }
void ContentTypes::addChartsheetName(const QString &name) void ContentTypes::addChartsheetName(const QString &name)
{ {
addOverride(QString("/xl/chartsheets/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.chartsheet+xml")); addOverride(QStringLiteral("/xl/chartsheets/%1.xml").arg(name), m_document_prefix + QLatin1String("spreadsheetml.chartsheet+xml"));
} }
void ContentTypes::addDrawingName(const QString &name) void ContentTypes::addDrawingName(const QString &name)
{ {
addOverride(QString("/xl/drawings/%1.xml").arg(name), m_document_prefix + QStringLiteral("drawing+xml")); addOverride(QStringLiteral("/xl/drawings/%1.xml").arg(name), m_document_prefix + QLatin1String("drawing+xml"));
} }
void ContentTypes::addChartName(const QString &name) void ContentTypes::addChartName(const QString &name)
{ {
addOverride(QString("/xl/charts/%1.xml").arg(name), m_document_prefix + QStringLiteral("drawingml.chart+xml")); addOverride(QStringLiteral("/xl/charts/%1.xml").arg(name), m_document_prefix + QLatin1String("drawingml.chart+xml"));
} }
void ContentTypes::addCommentName(const QString &name) void ContentTypes::addCommentName(const QString &name)
{ {
addOverride(QString("/xl/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.comments+xml")); addOverride(QStringLiteral("/xl/%1.xml").arg(name), m_document_prefix + QLatin1String("spreadsheetml.comments+xml"));
} }
void ContentTypes::addTableName(const QString &name) void ContentTypes::addTableName(const QString &name)
{ {
addOverride(QString("/xl/tables/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.table+xml")); addOverride(QStringLiteral("/xl/tables/%1.xml").arg(name), m_document_prefix + QLatin1String("spreadsheetml.table+xml"));
} }
void ContentTypes::addExternalLinkName(const QString &name) void ContentTypes::addExternalLinkName(const QString &name)
{ {
addOverride(QString("/xl/externalLinks/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.externalLink+xml")); addOverride(QStringLiteral("/xl/externalLinks/%1.xml").arg(name), m_document_prefix + QLatin1String("spreadsheetml.externalLink+xml"));
} }
void ContentTypes::addSharedString() void ContentTypes::addSharedString()
{ {
addOverride(QStringLiteral("/xl/sharedStrings.xml"), m_document_prefix + QStringLiteral("spreadsheetml.sharedStrings+xml")); addOverride(QStringLiteral("/xl/sharedStrings.xml"), m_document_prefix + QLatin1String("spreadsheetml.sharedStrings+xml"));
} }
void ContentTypes::addVmlName() void ContentTypes::addVmlName()
{ {
addOverride(QStringLiteral("vml"), m_document_prefix + QStringLiteral("vmlDrawing")); addOverride(QStringLiteral("vml"), m_document_prefix + QLatin1String("vmlDrawing"));
} }
void ContentTypes::addCalcChain() void ContentTypes::addCalcChain()
{ {
addOverride(QStringLiteral("/xl/calcChain.xml"), m_document_prefix + QStringLiteral("spreadsheetml.calcChain+xml")); addOverride(QStringLiteral("/xl/calcChain.xml"), m_document_prefix + QLatin1String("spreadsheetml.calcChain+xml"));
} }
void ContentTypes::addVbaProject() void ContentTypes::addVbaProject()

View File

@ -443,7 +443,8 @@ bool DataValidation::saveToXml(QXmlStreamWriter &writer) const
writer.writeAttribute(QStringLiteral("prompt"), promptMessage()); writer.writeAttribute(QStringLiteral("prompt"), promptMessage());
QStringList sqref; QStringList sqref;
foreach (CellRange range, ranges()) const auto rangeList = ranges();
for (const CellRange &range : rangeList)
sqref.append(range.toString()); sqref.append(range.toString());
writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1String(" "))); writer.writeAttribute(QStringLiteral("sqref"), sqref.join(QLatin1String(" ")));
@ -496,7 +497,8 @@ DataValidation DataValidation::loadFromXml(QXmlStreamReader &reader)
QXmlStreamAttributes attrs = reader.attributes(); QXmlStreamAttributes attrs = reader.attributes();
QString sqref = attrs.value(QLatin1String("sqref")).toString(); QString sqref = attrs.value(QLatin1String("sqref")).toString();
foreach (QString range, sqref.split(QLatin1Char(' '))) const auto sqrefParts = sqref.split(QLatin1Char(' '));
for (const QString &range : sqrefParts)
validation.addRange(range); validation.addRange(range);
if (attrs.hasAttribute(QLatin1String("type"))) { if (attrs.hasAttribute(QLatin1String("type"))) {

View File

@ -46,7 +46,7 @@ void DocPropsApp::addPartTitle(const QString &title)
void DocPropsApp::addHeadingPair(const QString &name, int value) void DocPropsApp::addHeadingPair(const QString &name, int value)
{ {
m_headingPairsList.append(qMakePair(name, value)); m_headingPairsList.append({ name, value });
} }
bool DocPropsApp::setProperty(const QString &name, const QString &value) bool DocPropsApp::setProperty(const QString &name, const QString &value)
@ -96,8 +96,8 @@ void DocPropsApp::saveToXmlFile(QIODevice *device) const
writer.writeStartElement(vt, QStringLiteral("vector")); writer.writeStartElement(vt, QStringLiteral("vector"));
writer.writeAttribute(QStringLiteral("size"), QString::number(m_headingPairsList.size()*2)); writer.writeAttribute(QStringLiteral("size"), QString::number(m_headingPairsList.size()*2));
writer.writeAttribute(QStringLiteral("baseType"), QStringLiteral("variant")); writer.writeAttribute(QStringLiteral("baseType"), QStringLiteral("variant"));
typedef QPair<QString,int> PairType; //Make foreach happy
foreach (PairType pair, m_headingPairsList) { for (const auto &pair : m_headingPairsList) {
writer.writeStartElement(vt, QStringLiteral("variant")); writer.writeStartElement(vt, QStringLiteral("variant"));
writer.writeTextElement(vt, QStringLiteral("lpstr"), pair.first); writer.writeTextElement(vt, QStringLiteral("lpstr"), pair.first);
writer.writeEndElement(); //vt:variant writer.writeEndElement(); //vt:variant
@ -112,7 +112,7 @@ void DocPropsApp::saveToXmlFile(QIODevice *device) const
writer.writeStartElement(vt, QStringLiteral("vector")); writer.writeStartElement(vt, QStringLiteral("vector"));
writer.writeAttribute(QStringLiteral("size"), QString::number(m_titlesOfPartsList.size())); writer.writeAttribute(QStringLiteral("size"), QString::number(m_titlesOfPartsList.size()));
writer.writeAttribute(QStringLiteral("baseType"), QStringLiteral("lpstr")); writer.writeAttribute(QStringLiteral("baseType"), QStringLiteral("lpstr"));
foreach (QString title, m_titlesOfPartsList) for (const QString &title : m_titlesOfPartsList)
writer.writeTextElement(vt, QStringLiteral("lpstr"), title); writer.writeTextElement(vt, QStringLiteral("lpstr"), title);
writer.writeEndElement();//vt:vector writer.writeEndElement();//vt:vector
writer.writeEndElement();//TitlesOfParts writer.writeEndElement();//TitlesOfParts

View File

@ -195,7 +195,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
DocPropsCore props(DocPropsCore::F_LoadFromExists); DocPropsCore props(DocPropsCore::F_LoadFromExists);
props.loadFromXmlData(zipReader.fileData(docPropsCore_Name)); props.loadFromXmlData(zipReader.fileData(docPropsCore_Name));
foreach (QString name, props.propertyNames()) for (const QString &name : props.propertyNames())
q->setDocumentProperty(name, props.property(name)); q->setDocumentProperty(name, props.property(name));
} }
@ -208,7 +208,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
DocPropsApp props(DocPropsApp::F_LoadFromExists); DocPropsApp props(DocPropsApp::F_LoadFromExists);
props.loadFromXmlData(zipReader.fileData(docPropsApp_Name)); props.loadFromXmlData(zipReader.fileData(docPropsApp_Name));
foreach (QString name, props.propertyNames()) for (const QString &name : props.propertyNames())
q->setDocumentProperty(name, props.property(name)); q->setDocumentProperty(name, props.property(name));
} }
@ -234,7 +234,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
// dev34 // dev34
QString path; QString path;
if ( xlworkbook_Dir == "." ) // root if ( xlworkbook_Dir == QLatin1String(".") ) // root
{ {
path = name; path = name;
} }
@ -337,42 +337,42 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
for (int i = 0 ; i < worksheets.size(); ++i) for (int i = 0 ; i < worksheets.size(); ++i)
{ {
QSharedPointer<AbstractSheet> sheet = worksheets[i]; QSharedPointer<AbstractSheet> sheet = worksheets[i];
contentTypes->addWorksheetName(QString("sheet%1").arg(i+1)); contentTypes->addWorksheetName(QStringLiteral("sheet%1").arg(i+1));
docPropsApp.addPartTitle(sheet->sheetName()); docPropsApp.addPartTitle(sheet->sheetName());
zipWriter.addFile(QString("xl/worksheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData());
Relationships *rel = sheet->relationships(); Relationships *rel = sheet->relationships();
if (!rel->isEmpty()) if (!rel->isEmpty())
zipWriter.addFile(QString("xl/worksheets/_rels/sheet%1.xml.rels").arg(i+1), rel->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/worksheets/_rels/sheet%1.xml.rels").arg(i+1), rel->saveToXmlData());
} }
//save chartsheet xml files //save chartsheet xml files
QList<QSharedPointer<AbstractSheet> > chartsheets = workbook->getSheetsByTypes(AbstractSheet::ST_ChartSheet); QList<QSharedPointer<AbstractSheet> > chartsheets = workbook->getSheetsByTypes(AbstractSheet::ST_ChartSheet);
if (!chartsheets.isEmpty()) if (!chartsheets.isEmpty())
docPropsApp.addHeadingPair(QStringLiteral("Chartsheets"), chartsheets.size()); docPropsApp.addHeadingPair(QStringLiteral("Chartsheets"), chartsheets.size());
for (int i=0; i<chartsheets.size(); ++i) for (int i=0; i<chartsheets.size(); ++i)
{ {
QSharedPointer<AbstractSheet> sheet = chartsheets[i]; QSharedPointer<AbstractSheet> sheet = chartsheets[i];
contentTypes->addWorksheetName(QString("sheet%1").arg(i+1)); contentTypes->addWorksheetName(QStringLiteral("sheet%1").arg(i+1));
docPropsApp.addPartTitle(sheet->sheetName()); docPropsApp.addPartTitle(sheet->sheetName());
zipWriter.addFile(QString("xl/chartsheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/chartsheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData());
Relationships *rel = sheet->relationships(); Relationships *rel = sheet->relationships();
if (!rel->isEmpty()) if (!rel->isEmpty())
zipWriter.addFile(QString("xl/chartsheets/_rels/sheet%1.xml.rels").arg(i+1), rel->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/chartsheets/_rels/sheet%1.xml.rels").arg(i+1), rel->saveToXmlData());
} }
// save external links xml files // save external links xml files
for (int i=0; i<workbook->d_func()->externalLinks.count(); ++i) for (int i=0; i<workbook->d_func()->externalLinks.count(); ++i)
{ {
SimpleOOXmlFile *link = workbook->d_func()->externalLinks[i].data(); SimpleOOXmlFile *link = workbook->d_func()->externalLinks[i].data();
contentTypes->addExternalLinkName(QString("externalLink%1").arg(i+1)); contentTypes->addExternalLinkName(QStringLiteral("externalLink%1").arg(i+1));
zipWriter.addFile(QString("xl/externalLinks/externalLink%1.xml").arg(i+1), link->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/externalLinks/externalLink%1.xml").arg(i+1), link->saveToXmlData());
Relationships *rel = link->relationships(); Relationships *rel = link->relationships();
if (!rel->isEmpty()) if (!rel->isEmpty())
zipWriter.addFile(QString("xl/externalLinks/_rels/externalLink%1.xml.rels").arg(i+1), rel->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/externalLinks/_rels/externalLink%1.xml.rels").arg(i+1), rel->saveToXmlData());
} }
// save workbook xml file // save workbook xml file
@ -383,16 +383,16 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
// save drawing xml files // save drawing xml files
for (int i=0; i<workbook->drawings().size(); ++i) for (int i=0; i<workbook->drawings().size(); ++i)
{ {
contentTypes->addDrawingName(QString("drawing%1").arg(i+1)); contentTypes->addDrawingName(QStringLiteral("drawing%1").arg(i+1));
Drawing *drawing = workbook->drawings()[i]; Drawing *drawing = workbook->drawings()[i];
zipWriter.addFile(QString("xl/drawings/drawing%1.xml").arg(i+1), drawing->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/drawings/drawing%1.xml").arg(i+1), drawing->saveToXmlData());
if (!drawing->relationships()->isEmpty()) if (!drawing->relationships()->isEmpty())
zipWriter.addFile(QString("xl/drawings/_rels/drawing%1.xml.rels").arg(i+1), drawing->relationships()->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/drawings/_rels/drawing%1.xml.rels").arg(i+1), drawing->relationships()->saveToXmlData());
} }
// save docProps app/core xml file // save docProps app/core xml file
foreach (QString name, q->documentPropertyNames()) { for (const QString &name : q->documentPropertyNames()) {
docPropsApp.setProperty(name, q->documentProperty(name)); docPropsApp.setProperty(name, q->documentProperty(name));
docPropsCore.setProperty(name, q->documentProperty(name)); docPropsCore.setProperty(name, q->documentProperty(name));
} }
@ -422,9 +422,9 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
// save chart xml files // save chart xml files
for (int i=0; i<workbook->chartFiles().size(); ++i) for (int i=0; i<workbook->chartFiles().size(); ++i)
{ {
contentTypes->addChartName(QString("chart%1").arg(i+1)); contentTypes->addChartName(QStringLiteral("chart%1").arg(i+1));
QSharedPointer<Chart> cf = workbook->chartFiles()[i]; QSharedPointer<Chart> cf = workbook->chartFiles()[i];
zipWriter.addFile(QString("xl/charts/chart%1.xml").arg(i+1), cf->saveToXmlData()); zipWriter.addFile(QStringLiteral("xl/charts/chart%1.xml").arg(i+1), cf->saveToXmlData());
} }
// save image files // save image files
@ -434,7 +434,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
if (!mf->mimeType().isEmpty()) if (!mf->mimeType().isEmpty())
contentTypes->addDefault(mf->suffix(), mf->mimeType()); contentTypes->addDefault(mf->suffix(), mf->mimeType());
zipWriter.addFile(QString("xl/media/image%1.%2").arg(i+1).arg(mf->suffix()), mf->contents()); zipWriter.addFile(QStringLiteral("xl/media/image%1.%2").arg(i+1).arg(mf->suffix()), mf->contents());
} }
// save root .rels xml file // save root .rels xml file
@ -471,11 +471,11 @@ bool DocumentPrivate::copyStyle(const QString &from, const QString &to)
// copy all files from "to" zip except those related to style // copy all files from "to" zip except those related to style
for (int i = 0; i < toFilePaths.size(); i++) { for (int i = 0; i < toFilePaths.size(); i++) {
if (toFilePaths[i].contains("xl/styles")) { if (toFilePaths[i].contains(QLatin1String("xl/styles"))) {
if (filePaths.contains(toFilePaths[i])) { // style file exist in 'from' as well if (filePaths.contains(toFilePaths[i])) { // style file exist in 'from' as well
// modify style file // modify style file
std::string fromData = QString(zipReader.fileData(toFilePaths[i])).toStdString(); std::string fromData = QString::fromUtf8(zipReader.fileData(toFilePaths[i])).toStdString();
std::string toData = QString(toReader->fileData(toFilePaths[i])).toStdString(); std::string toData = QString::fromUtf8(toReader->fileData(toFilePaths[i])).toStdString();
// copy default theme style from 'from' to 'to' // copy default theme style from 'from' to 'to'
toData = xlsxDocumentCpp::copyTag(fromData, toData, "dxfs"); toData = xlsxDocumentCpp::copyTag(fromData, toData, "dxfs");
temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8()); temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8());
@ -484,11 +484,11 @@ bool DocumentPrivate::copyStyle(const QString &from, const QString &to)
} }
} }
if (toFilePaths[i].contains("xl/workbook")) { if (toFilePaths[i].contains(QLatin1String("xl/workbook"))) {
if (filePaths.contains(toFilePaths[i])) { // workbook file exist in 'from' as well if (filePaths.contains(toFilePaths[i])) { // workbook file exist in 'from' as well
// modify workbook file // modify workbook file
std::string fromData = QString(zipReader.fileData(toFilePaths[i])).toStdString(); std::string fromData = QString::fromUtf8(zipReader.fileData(toFilePaths[i])).toStdString();
std::string toData = QString(toReader->fileData(toFilePaths[i])).toStdString(); std::string toData = QString::fromUtf8(toReader->fileData(toFilePaths[i])).toStdString();
// copy default theme style from 'from' to 'to' // copy default theme style from 'from' to 'to'
toData = xlsxDocumentCpp::copyTag(fromData, toData, "workbookPr"); toData = xlsxDocumentCpp::copyTag(fromData, toData, "workbookPr");
temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8()); temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8());
@ -496,11 +496,11 @@ bool DocumentPrivate::copyStyle(const QString &from, const QString &to)
} }
} }
if (toFilePaths[i].contains("xl/worksheets/sheet")) { if (toFilePaths[i].contains(QLatin1String("xl/worksheets/sheet"))) {
if (filePaths.contains(toFilePaths[i])) { // sheet file exist in 'from' as well if (filePaths.contains(toFilePaths[i])) { // sheet file exist in 'from' as well
// modify sheet file // modify sheet file
std::string fromData = QString(zipReader.fileData(toFilePaths[i])).toStdString(); std::string fromData = QString::fromUtf8(zipReader.fileData(toFilePaths[i])).toStdString();
std::string toData = QString(toReader->fileData(toFilePaths[i])).toStdString(); std::string toData = QString::fromUtf8(toReader->fileData(toFilePaths[i])).toStdString();
// copy "conditionalFormatting" from 'from' to 'to' // copy "conditionalFormatting" from 'from' to 'to'
toData = xlsxDocumentCpp::copyTag(fromData, toData, "conditionalFormatting"); toData = xlsxDocumentCpp::copyTag(fromData, toData, "conditionalFormatting");
temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8()); temporalZip.addFile(toFilePaths.at(i), QString::fromUtf8(toData.c_str()).toUtf8());
@ -1254,14 +1254,14 @@ bool Document::changeimage(int filenoinmidea, QString newfile)
const QString suffix = newfile.mid(newfile.lastIndexOf(QLatin1Char('.'))+1); const QString suffix = newfile.mid(newfile.lastIndexOf(QLatin1Char('.'))+1);
QString mimetypemy; QString mimetypemy;
if(QString::compare("jpg", suffix, Qt::CaseInsensitive)==0) if(QString::compare(QLatin1String("jpg"), suffix, Qt::CaseInsensitive)==0)
mimetypemy="image/jpeg"; mimetypemy=QStringLiteral("image/jpeg");
if(QString::compare("bmp", suffix, Qt::CaseInsensitive)==0) if(QString::compare(QLatin1String("bmp"), suffix, Qt::CaseInsensitive)==0)
mimetypemy="image/bmp"; mimetypemy=QStringLiteral("image/bmp");
if(QString::compare("gif", suffix, Qt::CaseInsensitive)==0) if(QString::compare(QLatin1String("gif"), suffix, Qt::CaseInsensitive)==0)
mimetypemy="image/gif"; mimetypemy=QStringLiteral("image/gif");
if(QString::compare("png", suffix, Qt::CaseInsensitive)==0) if(QString::compare(QLatin1String("png"), suffix, Qt::CaseInsensitive)==0)
mimetypemy="image/png"; mimetypemy=QStringLiteral("image/png");
QByteArray ba; QByteArray ba;
QBuffer buffer(&ba); QBuffer buffer(&ba);
@ -1332,7 +1332,7 @@ bool Document::autosizeColumnWidth(const CellRange &range)
QMap<int, int> colWidth = getMaximalColumnWidth(range.firstRow(), range.lastRow()); QMap<int, int> colWidth = getMaximalColumnWidth(range.firstRow(), range.lastRow());
foreach(int key, colWidth.keys()) for (int key : colWidth.keys())
{ {
if( (key >= range.firstColumn()) && (key <= range.lastColumn()) ) if( (key >= range.firstColumn()) && (key <= range.lastColumn()) )
{ {
@ -1354,7 +1354,7 @@ bool Document::autosizeColumnWidth(int column)
QMap<int, int> colWidth = getMaximalColumnWidth(); QMap<int, int> colWidth = getMaximalColumnWidth();
foreach(int key, colWidth.keys()) for (int key : colWidth.keys())
{ {
if( key == column) if( key == column)
{ {
@ -1372,11 +1372,13 @@ bool Document::autosizeColumnWidth(int column)
*/ */
bool Document::autosizeColumnWidth(int colFirst, int colLast) bool Document::autosizeColumnWidth(int colFirst, int colLast)
{ {
Q_UNUSED(colFirst)
Q_UNUSED(colLast)
bool erg = false; bool erg = false;
QMap<int, int> colWidth = getMaximalColumnWidth(); QMap<int, int> colWidth = getMaximalColumnWidth();
foreach(int key, colWidth.keys()) for (int key : colWidth.keys())
{ {
if( (key >= colFirst) && (key <= colLast) ) if( (key >= colFirst) && (key <= colLast) )
{ {
@ -1398,7 +1400,7 @@ bool Document::autosizeColumnWidth(void)
QMap<int, int> colWidth = getMaximalColumnWidth(); QMap<int, int> colWidth = getMaximalColumnWidth();
foreach(int key, colWidth.keys()) for (int key : colWidth.keys())
{ {
erg |= setColumnWidth(key, colWidth.value(key)); erg |= setColumnWidth(key, colWidth.value(key));
} }

View File

@ -55,7 +55,7 @@ void Drawing::saveToXmlFile(QIODevice *device) const
writer.writeAttribute(QStringLiteral("xmlns:xdr"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing")); writer.writeAttribute(QStringLiteral("xmlns:xdr"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"));
writer.writeAttribute(QStringLiteral("xmlns:a"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/main")); writer.writeAttribute(QStringLiteral("xmlns:a"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/main"));
foreach (DrawingAnchor *anchor, anchors) for (DrawingAnchor *anchor : anchors)
anchor->saveToXml(writer); anchor->saveToXml(writer);
writer.writeEndElement();//xdr:wsDr writer.writeEndElement();//xdr:wsDr

View File

@ -741,7 +741,7 @@ void DrawingAnchor::saveXmlObjectGraphicFrame(QXmlStreamWriter &writer) const
writer.writeStartElement(QStringLiteral("xdr:nvGraphicFramePr")); writer.writeStartElement(QStringLiteral("xdr:nvGraphicFramePr"));
writer.writeEmptyElement(QStringLiteral("xdr:cNvPr")); writer.writeEmptyElement(QStringLiteral("xdr:cNvPr"));
writer.writeAttribute(QStringLiteral("id"), QString::number(m_id)); writer.writeAttribute(QStringLiteral("id"), QString::number(m_id));
writer.writeAttribute(QStringLiteral("name"), QString("Chart %1").arg(m_id)); writer.writeAttribute(QStringLiteral("name"), QStringLiteral("Chart %1").arg(m_id));
writer.writeEmptyElement(QStringLiteral("xdr:cNvGraphicFramePr")); writer.writeEmptyElement(QStringLiteral("xdr:cNvGraphicFramePr"));
writer.writeEndElement();//xdr:nvGraphicFramePr writer.writeEndElement();//xdr:nvGraphicFramePr
@ -753,12 +753,12 @@ void DrawingAnchor::saveXmlObjectGraphicFrame(QXmlStreamWriter &writer) const
writer.writeAttribute(QStringLiteral("uri"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart")); writer.writeAttribute(QStringLiteral("uri"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
int idx = m_drawing->workbook->chartFiles().indexOf(m_chartFile); int idx = m_drawing->workbook->chartFiles().indexOf(m_chartFile);
m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/chart"), QString("../charts/chart%1.xml").arg(idx+1)); m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/chart"), QStringLiteral("../charts/chart%1.xml").arg(idx+1));
writer.writeEmptyElement(QStringLiteral("c:chart")); writer.writeEmptyElement(QStringLiteral("c:chart"));
writer.writeAttribute(QStringLiteral("xmlns:c"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart")); writer.writeAttribute(QStringLiteral("xmlns:c"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/chart"));
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships")); writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(m_drawing->relationships()->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(m_drawing->relationships()->count()));
writer.writeEndElement(); //a:graphicData writer.writeEndElement(); //a:graphicData
writer.writeEndElement(); //a:graphic writer.writeEndElement(); //a:graphic
@ -779,7 +779,7 @@ void DrawingAnchor::saveXmlObjectPicture(QXmlStreamWriter &writer) const
writer.writeStartElement(QStringLiteral("xdr:nvPicPr")); writer.writeStartElement(QStringLiteral("xdr:nvPicPr"));
writer.writeEmptyElement(QStringLiteral("xdr:cNvPr")); writer.writeEmptyElement(QStringLiteral("xdr:cNvPr"));
writer.writeAttribute(QStringLiteral("id"), QString::number(m_id+1)); // liufeijin writer.writeAttribute(QStringLiteral("id"), QString::number(m_id+1)); // liufeijin
writer.writeAttribute(QStringLiteral("name"), QString("Picture %1").arg(m_id)); writer.writeAttribute(QStringLiteral("name"), QStringLiteral("Picture %1").arg(m_id));
writer.writeStartElement(QStringLiteral("xdr:cNvPicPr")); writer.writeStartElement(QStringLiteral("xdr:cNvPicPr"));
writer.writeEmptyElement(QStringLiteral("a:picLocks")); writer.writeEmptyElement(QStringLiteral("a:picLocks"));
@ -788,14 +788,14 @@ void DrawingAnchor::saveXmlObjectPicture(QXmlStreamWriter &writer) const
writer.writeEndElement(); //xdr:nvPicPr writer.writeEndElement(); //xdr:nvPicPr
m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/image"), QString("../media/image%1.%2") m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/image"), QStringLiteral("../media/image%1.%2")
.arg(m_pictureFile->index()+1) .arg(m_pictureFile->index()+1)
.arg(m_pictureFile->suffix())); .arg(m_pictureFile->suffix()));
writer.writeStartElement(QStringLiteral("xdr:blipFill")); writer.writeStartElement(QStringLiteral("xdr:blipFill"));
writer.writeEmptyElement(QStringLiteral("a:blip")); writer.writeEmptyElement(QStringLiteral("a:blip"));
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships")); writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
writer.writeAttribute(QStringLiteral("r:embed"), QString("rId%1").arg(m_drawing->relationships()->count())); writer.writeAttribute(QStringLiteral("r:embed"), QStringLiteral("rId%1").arg(m_drawing->relationships()->count()));
writer.writeStartElement(QStringLiteral("a:stretch")); writer.writeStartElement(QStringLiteral("a:stretch"));
writer.writeEmptyElement(QStringLiteral("a:fillRect")); writer.writeEmptyElement(QStringLiteral("a:fillRect"));
writer.writeEndElement(); //a:stretch writer.writeEndElement(); //a:stretch
@ -852,13 +852,13 @@ void DrawingAnchor::saveXmlObjectShape(QXmlStreamWriter &writer) const
writer.writeEndElement(); //a:prstGeom writer.writeEndElement(); //a:prstGeom
if(!m_pictureFile.isNull()){ if(!m_pictureFile.isNull()){
m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/image"), QString("../media/image%1.%2").arg(m_pictureFile->index()+1).arg(m_pictureFile->suffix())); m_drawing->relationships()->addDocumentRelationship(QStringLiteral("/image"), QStringLiteral("../media/image%1.%2").arg(m_pictureFile->index()+1).arg(m_pictureFile->suffix()));
writer.writeStartElement(QStringLiteral("a:blipFill")); writer.writeStartElement(QStringLiteral("a:blipFill"));
writer.writeAttribute(QStringLiteral("dpi"), QString::number(dpiTA)); writer.writeAttribute(QStringLiteral("dpi"), QString::number(dpiTA));
writer.writeAttribute(QStringLiteral("rotWithShape"),QString::number(rotWithShapeTA)); writer.writeAttribute(QStringLiteral("rotWithShape"),QString::number(rotWithShapeTA));
writer.writeStartElement(QStringLiteral("a:blip")); writer.writeStartElement(QStringLiteral("a:blip"));
writer.writeAttribute(QStringLiteral("r:embed"), QString("rId%1").arg(m_drawing->relationships()->count())); //sp_blip_rembed QStringLiteral("rId%1").arg(m_drawing->relationships()->count()) can't made new pic writer.writeAttribute(QStringLiteral("r:embed"), QStringLiteral("rId%1").arg(m_drawing->relationships()->count())); //sp_blip_rembed QStringLiteral("rId%1").arg(m_drawing->relationships()->count()) can't made new pic
writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships")); writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships"));
if(!sp_blip_cstate.isNull()){ if(!sp_blip_cstate.isNull()){
writer.writeAttribute(QStringLiteral("cstate"), sp_blip_cstate); writer.writeAttribute(QStringLiteral("cstate"), sp_blip_cstate);

View File

@ -82,7 +82,7 @@ void Relationships::addWorksheetRelationship(const QString &relativeType, const
QList<XlsxRelationship> Relationships::relationships(const QString &type) const QList<XlsxRelationship> Relationships::relationships(const QString &type) const
{ {
QList<XlsxRelationship> res; QList<XlsxRelationship> res;
foreach (XlsxRelationship ship, m_relationships) { for (const XlsxRelationship &ship : m_relationships) {
if (ship.type == type) if (ship.type == type)
res.append(ship); res.append(ship);
} }
@ -92,7 +92,7 @@ QList<XlsxRelationship> Relationships::relationships(const QString &type) const
void Relationships::addRelationship(const QString &type, const QString &target, const QString &targetMode) void Relationships::addRelationship(const QString &type, const QString &target, const QString &targetMode)
{ {
XlsxRelationship relation; XlsxRelationship relation;
relation.id = QString("rId%1").arg(m_relationships.size()+1); relation.id = QStringLiteral("rId%1").arg(m_relationships.size()+1);
relation.type = type; relation.type = type;
relation.target = target; relation.target = target;
relation.targetMode = targetMode; relation.targetMode = targetMode;
@ -107,7 +107,7 @@ void Relationships::saveToXmlFile(QIODevice *device) const
writer.writeStartDocument(QStringLiteral("1.0"), true); writer.writeStartDocument(QStringLiteral("1.0"), true);
writer.writeStartElement(QStringLiteral("Relationships")); writer.writeStartElement(QStringLiteral("Relationships"));
writer.writeAttribute(QStringLiteral("xmlns"), QStringLiteral("http://schemas.openxmlformats.org/package/2006/relationships")); writer.writeAttribute(QStringLiteral("xmlns"), QStringLiteral("http://schemas.openxmlformats.org/package/2006/relationships"));
foreach (XlsxRelationship relation, m_relationships) { for (const XlsxRelationship &relation : m_relationships) {
writer.writeStartElement(QStringLiteral("Relationship")); writer.writeStartElement(QStringLiteral("Relationship"));
writer.writeAttribute(QStringLiteral("Id"), relation.id); writer.writeAttribute(QStringLiteral("Id"), relation.id);
writer.writeAttribute(QStringLiteral("Type"), relation.type); writer.writeAttribute(QStringLiteral("Type"), relation.type);
@ -164,7 +164,7 @@ bool Relationships::loadFromXmlData(const QByteArray &data)
XlsxRelationship Relationships::getRelationshipById(const QString &id) const XlsxRelationship Relationships::getRelationshipById(const QString &id) const
{ {
foreach (XlsxRelationship ship, m_relationships) { for (const XlsxRelationship &ship : m_relationships) {
if (ship.id == id) if (ship.id == id)
return ship; return ship;
} }

View File

@ -130,7 +130,7 @@ bool RichString::isNull() const
*/ */
bool RichString::isEmtpy() const bool RichString::isEmtpy() const
{ {
foreach (const QString str, d->fragmentTexts) { for (const QString str : d->fragmentTexts) {
if (!str.isEmpty()) if (!str.isEmpty())
return false; return false;
} }

View File

@ -203,7 +203,7 @@ void SharedStrings::saveToXmlFile(QIODevice *device) const
writer.writeAttribute(QStringLiteral("count"), QString::number(m_stringCount)); writer.writeAttribute(QStringLiteral("count"), QString::number(m_stringCount));
writer.writeAttribute(QStringLiteral("uniqueCount"), QString::number(m_stringList.size())); writer.writeAttribute(QStringLiteral("uniqueCount"), QString::number(m_stringList.size()));
foreach (RichString string, m_stringList) { for (const RichString &string : m_stringList) {
writer.writeStartElement(QStringLiteral("si")); writer.writeStartElement(QStringLiteral("si"));
if (string.isRichString()) { if (string.isRichString()) {
//Rich text string //Rich text string

View File

@ -597,7 +597,7 @@ void Styles::writeCellXfs(QXmlStreamWriter &writer) const
{ {
writer.writeStartElement(QStringLiteral("cellXfs")); writer.writeStartElement(QStringLiteral("cellXfs"));
writer.writeAttribute(QStringLiteral("count"), QString::number(m_xf_formatsList.size())); writer.writeAttribute(QStringLiteral("count"), QString::number(m_xf_formatsList.size()));
foreach (const Format &format, m_xf_formatsList) { for (const Format &format : m_xf_formatsList) {
int xf_id = 0; int xf_id = 0;
writer.writeStartElement(QStringLiteral("xf")); writer.writeStartElement(QStringLiteral("xf"));
writer.writeAttribute(QStringLiteral("numFmtId"), QString::number(format.numberFormatIndex())); writer.writeAttribute(QStringLiteral("numFmtId"), QString::number(format.numberFormatIndex()));
@ -683,7 +683,7 @@ void Styles::writeDxfs(QXmlStreamWriter &writer) const
{ {
writer.writeStartElement(QStringLiteral("dxfs")); writer.writeStartElement(QStringLiteral("dxfs"));
writer.writeAttribute(QStringLiteral("count"), QString::number(m_dxf_formatsList.size())); writer.writeAttribute(QStringLiteral("count"), QString::number(m_dxf_formatsList.size()));
foreach (const Format &format, m_dxf_formatsList) for (const Format &format : m_dxf_formatsList)
writeDxf(writer, format); writeDxf(writer, format);
writer.writeEndElement(); //dxfs writer.writeEndElement(); //dxfs
} }
@ -718,7 +718,7 @@ void Styles::writeColors(QXmlStreamWriter &writer) const
writer.writeStartElement(QStringLiteral("colors")); writer.writeStartElement(QStringLiteral("colors"));
writer.writeStartElement(QStringLiteral("indexedColors")); writer.writeStartElement(QStringLiteral("indexedColors"));
foreach(QColor color, m_indexedColors) { for (const QColor &color : m_indexedColors) {
writer.writeEmptyElement(QStringLiteral("rgbColor")); writer.writeEmptyElement(QStringLiteral("rgbColor"));
writer.writeAttribute(QStringLiteral("rgb"), XlsxColor::toARGBString(color)); writer.writeAttribute(QStringLiteral("rgb"), XlsxColor::toARGBString(color));
} }

View File

@ -74,7 +74,7 @@ QString getRelFilePath(const QString &filePath)
// return QString(); // return QString();
// dev34 // dev34
ret = QString("_rels/") + QString("%0.rels").arg(filePath); ret = QLatin1String("_rels/") + QStringLiteral("%0.rels").arg(filePath);
return ret; return ret;
} }
@ -243,15 +243,17 @@ bool isSpaceReserveNeeded(const QString &s)
*/ */
QString convertSharedFormula(const QString &rootFormula, const CellReference &rootCell, const CellReference &cell) QString convertSharedFormula(const QString &rootFormula, const CellReference &rootCell, const CellReference &cell)
{ {
Q_UNUSED(rootCell)
Q_UNUSED(cell)
//Find all the "$?[A-Z]+$?[0-9]+" patterns in the rootFormula. //Find all the "$?[A-Z]+$?[0-9]+" patterns in the rootFormula.
QList<QPair<QString, int> > segments; QList<std::pair<QString, int> > segments;
QString segment; QString segment;
bool inQuote = false; bool inQuote = false;
enum RefState{INVALID, PRE_AZ, AZ, PRE_09, _09}; enum RefState{INVALID, PRE_AZ, AZ, PRE_09, _09};
RefState refState = INVALID; RefState refState = INVALID;
int refFlag = 0; // 0x00, 0x01, 0x02, 0x03 ==> A1, $A1, A$1, $A$1 int refFlag = 0; // 0x00, 0x01, 0x02, 0x03 ==> A1, $A1, A$1, $A$1
foreach (QChar ch, rootFormula) { for (QChar ch : rootFormula) {
if (inQuote) { if (inQuote) {
segment.append(ch); segment.append(ch);
if (ch == QLatin1Char('"')) if (ch == QLatin1Char('"'))
@ -267,7 +269,7 @@ QString convertSharedFormula(const QString &rootFormula, const CellReference &ro
refState = PRE_09; refState = PRE_09;
refFlag |= 0x02; refFlag |= 0x02;
} else { } else {
segments.append(qMakePair(segment, refState==_09 ? refFlag : -1)); segments.append({ segment, refState==_09 ? refFlag : -1 });
segment = QString(ch); //Start new segment. segment = QString(ch); //Start new segment.
refState = PRE_AZ; refState = PRE_AZ;
refFlag = 0x01; refFlag = 0x01;
@ -276,7 +278,7 @@ QString convertSharedFormula(const QString &rootFormula, const CellReference &ro
if (refState == PRE_AZ || refState == AZ) { if (refState == PRE_AZ || refState == AZ) {
segment.append(ch); segment.append(ch);
} else { } else {
segments.append(qMakePair(segment, refState==_09 ? refFlag : -1)); segments.append({ segment, refState==_09 ? refFlag : -1 });
segment = QString(ch); //Start new segment. segment = QString(ch); //Start new segment.
refFlag = 0x00; refFlag = 0x00;
} }
@ -290,7 +292,7 @@ QString convertSharedFormula(const QString &rootFormula, const CellReference &ro
refState = INVALID; refState = INVALID;
} else { } else {
if (refState == _09) { if (refState == _09) {
segments.append(qMakePair(segment, refFlag)); segments.append({ segment, refFlag });
segment = QString(ch); //Start new segment. segment = QString(ch); //Start new segment.
} else { } else {
segment.append(ch); segment.append(ch);
@ -301,12 +303,11 @@ QString convertSharedFormula(const QString &rootFormula, const CellReference &ro
} }
if (!segment.isEmpty()) if (!segment.isEmpty())
segments.append(qMakePair(segment, refState==_09 ? refFlag : -1)); segments.append({ segment, refState==_09 ? refFlag : -1 });
//Replace "A1", "$A1", "A$1" segment with proper one. //Replace "A1", "$A1", "A$1" segment with proper one.
QStringList result; QStringList result;
typedef QPair<QString, int> PairType; for (const auto &p : segments) {
foreach (PairType p, segments) {
//qDebug()<<p.first<<p.second; //qDebug()<<p.first<<p.second;
if (p.second != -1 && p.second != 3) { if (p.second != -1 && p.second != 3) {
CellReference oldRef(p.first); CellReference oldRef(p.first);

View File

@ -230,12 +230,12 @@ AbstractSheet *Workbook::insertSheet(int index, const QString &name, AbstractShe
if (type == AbstractSheet::ST_WorkSheet) { if (type == AbstractSheet::ST_WorkSheet) {
do { do {
++d->last_worksheet_index; ++d->last_worksheet_index;
sheetName = QString("Sheet%1").arg(d->last_worksheet_index); sheetName = QStringLiteral("Sheet%1").arg(d->last_worksheet_index);
} while (d->sheetNames.contains(sheetName)); } while (d->sheetNames.contains(sheetName));
} else if (type == AbstractSheet::ST_ChartSheet) { } else if (type == AbstractSheet::ST_ChartSheet) {
do { do {
++d->last_chartsheet_index; ++d->last_chartsheet_index;
sheetName = QString("Chart%1").arg(d->last_chartsheet_index); sheetName = QStringLiteral("Chart%1").arg(d->last_chartsheet_index);
} while (d->sheetNames.contains(sheetName)); } while (d->sheetNames.contains(sheetName));
} else { } else {
qWarning("unsupported sheet type."); qWarning("unsupported sheet type.");
@ -364,7 +364,7 @@ bool Workbook::copySheet(int index, const QString &newName)
int copy_index = 1; int copy_index = 1;
do { do {
++copy_index; ++copy_index;
worksheetName = QString("%1(%2)").arg(d->sheets[index]->sheetName()).arg(copy_index); worksheetName = QStringLiteral("%1(%2)").arg(d->sheets[index]->sheetName()).arg(copy_index);
} while (d->sheetNames.contains(worksheetName)); } while (d->sheetNames.contains(worksheetName));
} }
@ -501,11 +501,11 @@ void Workbook::saveToXmlFile(QIODevice *device) const
writer.writeAttribute(QStringLiteral("state"), QStringLiteral("veryHidden")); writer.writeAttribute(QStringLiteral("state"), QStringLiteral("veryHidden"));
if (sheet->sheetType() == AbstractSheet::ST_WorkSheet) if (sheet->sheetType() == AbstractSheet::ST_WorkSheet)
d->relationships->addDocumentRelationship(QStringLiteral("/worksheet"), QString("worksheets/sheet%1.xml").arg(++worksheetIndex)); d->relationships->addDocumentRelationship(QStringLiteral("/worksheet"), QStringLiteral("worksheets/sheet%1.xml").arg(++worksheetIndex));
else else
d->relationships->addDocumentRelationship(QStringLiteral("/chartsheet"), QString("chartsheets/sheet%1.xml").arg(++chartsheetIndex)); d->relationships->addDocumentRelationship(QStringLiteral("/chartsheet"), QStringLiteral("chartsheets/sheet%1.xml").arg(++chartsheetIndex));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(d->relationships->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(d->relationships->count()));
} }
writer.writeEndElement();//sheets writer.writeEndElement();//sheets
@ -513,15 +513,15 @@ void Workbook::saveToXmlFile(QIODevice *device) const
writer.writeStartElement(QStringLiteral("externalReferences")); writer.writeStartElement(QStringLiteral("externalReferences"));
for (int i=0; i<d->externalLinks.size(); ++i) { for (int i=0; i<d->externalLinks.size(); ++i) {
writer.writeEmptyElement(QStringLiteral("externalReference")); writer.writeEmptyElement(QStringLiteral("externalReference"));
d->relationships->addDocumentRelationship(QStringLiteral("/externalLink"), QString("externalLinks/externalLink%1.xml").arg(i+1)); d->relationships->addDocumentRelationship(QStringLiteral("/externalLink"), QStringLiteral("externalLinks/externalLink%1.xml").arg(i+1));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(d->relationships->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(d->relationships->count()));
} }
writer.writeEndElement();//externalReferences writer.writeEndElement();//externalReferences
} }
if (!d->definedNamesList.isEmpty()) { if (!d->definedNamesList.isEmpty()) {
writer.writeStartElement(QStringLiteral("definedNames")); writer.writeStartElement(QStringLiteral("definedNames"));
foreach (XlsxDefineNameData data, d->definedNamesList) { for (const XlsxDefineNameData &data : d->definedNamesList) {
writer.writeStartElement(QStringLiteral("definedName")); writer.writeStartElement(QStringLiteral("definedName"));
writer.writeAttribute(QStringLiteral("name"), data.name); writer.writeAttribute(QStringLiteral("name"), data.name);
if (!data.comment.isEmpty()) if (!data.comment.isEmpty())

View File

@ -115,7 +115,7 @@ void WorksheetPrivate::calculateSpans() const
if (row_num%16 == 0 || row_num == dimension.lastRow()) { if (row_num%16 == 0 || row_num == dimension.lastRow()) {
if (span_max != -1) { if (span_max != -1) {
row_spans[row_num / 16] = QString("%1:%2").arg(span_min).arg(span_max); row_spans[row_num / 16] = QStringLiteral("%1:%2").arg(span_min).arg(span_max);
span_min = XLSX_COLUMN_MAX+1; span_min = XLSX_COLUMN_MAX+1;
span_max = -1; span_max = -1;
} }
@ -1326,7 +1326,7 @@ void Worksheet::saveToXmlFile(QIODevice *device) const
writer.writeEndElement();//sheetData writer.writeEndElement();//sheetData
d->saveXmlMergeCells(writer); d->saveXmlMergeCells(writer);
foreach (const ConditionalFormatting cf, d->conditionalFormattingList) for (const ConditionalFormatting &cf : d->conditionalFormattingList)
cf.saveToXml(writer); cf.saveToXml(writer);
d->saveXmlDataValidations(writer); d->saveXmlDataValidations(writer);
@ -1751,7 +1751,7 @@ void WorksheetPrivate::saveXmlMergeCells(QXmlStreamWriter &writer) const
writer.writeStartElement(QStringLiteral("mergeCells")); writer.writeStartElement(QStringLiteral("mergeCells"));
writer.writeAttribute(QStringLiteral("count"), QString::number(merges.size())); writer.writeAttribute(QStringLiteral("count"), QString::number(merges.size()));
foreach (CellRange range, merges) for (const CellRange &range : merges)
{ {
writer.writeEmptyElement(QStringLiteral("mergeCell")); writer.writeEmptyElement(QStringLiteral("mergeCell"));
writer.writeAttribute(QStringLiteral("ref"), range.toString()); writer.writeAttribute(QStringLiteral("ref"), range.toString());
@ -1768,7 +1768,7 @@ void WorksheetPrivate::saveXmlDataValidations(QXmlStreamWriter &writer) const
writer.writeStartElement(QStringLiteral("dataValidations")); writer.writeStartElement(QStringLiteral("dataValidations"));
writer.writeAttribute(QStringLiteral("count"), QString::number(dataValidationsList.size())); writer.writeAttribute(QStringLiteral("count"), QString::number(dataValidationsList.size()));
foreach (DataValidation validation, dataValidationsList) for (const DataValidation &validation : dataValidationsList)
validation.saveToXml(writer); validation.saveToXml(writer);
writer.writeEndElement(); //dataValidations writer.writeEndElement(); //dataValidations
@ -1806,7 +1806,7 @@ void WorksheetPrivate::saveXmlHyperlinks(QXmlStreamWriter &writer) const
// Update relationships // Update relationships
relationships->addWorksheetRelationship(QStringLiteral("/hyperlink"), data->target, QStringLiteral("External")); relationships->addWorksheetRelationship(QStringLiteral("/hyperlink"), data->target, QStringLiteral("External"));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(relationships->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships->count()));
} }
if (!data->location.isEmpty()) if (!data->location.isEmpty())
@ -1838,10 +1838,10 @@ void WorksheetPrivate::saveXmlDrawings(QXmlStreamWriter &writer) const
return; return;
int idx = workbook->drawings().indexOf(drawing.data()); int idx = workbook->drawings().indexOf(drawing.data());
relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QString("../drawings/drawing%1.xml").arg(idx+1)); relationships->addWorksheetRelationship(QStringLiteral("/drawing"), QStringLiteral("../drawings/drawing%1.xml").arg(idx+1));
writer.writeEmptyElement(QStringLiteral("drawing")); writer.writeEmptyElement(QStringLiteral("drawing"));
writer.writeAttribute(QStringLiteral("r:id"), QString("rId%1").arg(relationships->count())); writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(relationships->count()));
} }
void WorksheetPrivate::splitColsInfo(int colFirst, int colLast) void WorksheetPrivate::splitColsInfo(int colFirst, int colLast)
@ -1970,8 +1970,8 @@ bool Worksheet::setColumnWidth(int colFirst, int colLast, double width)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast); const QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast);
foreach(QSharedPointer<XlsxColumnInfo> columnInfo, columnInfoList) for (const QSharedPointer<XlsxColumnInfo> &columnInfo : columnInfoList)
{ {
columnInfo->width = width; columnInfo->width = width;
} }
@ -1988,8 +1988,8 @@ bool Worksheet::setColumnFormat(int colFirst, int colLast, const Format &format)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast); const QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast);
foreach(QSharedPointer<XlsxColumnInfo> columnInfo, columnInfoList) for (const QSharedPointer<XlsxColumnInfo> &columnInfo : columnInfoList)
columnInfo->format = format; columnInfo->format = format;
if(columnInfoList.count() > 0) { if(columnInfoList.count() > 0) {
@ -2008,8 +2008,8 @@ bool Worksheet::setColumnHidden(int colFirst, int colLast, bool hidden)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast); const QList <QSharedPointer<XlsxColumnInfo> > columnInfoList = d->getColumnInfoList(colFirst, colLast);
foreach(QSharedPointer<XlsxColumnInfo> columnInfo, columnInfoList) for (const QSharedPointer<XlsxColumnInfo> &columnInfo : columnInfoList)
columnInfo->hidden = hidden; columnInfo->hidden = hidden;
return (columnInfoList.count() > 0); return (columnInfoList.count() > 0);
@ -2087,9 +2087,8 @@ bool Worksheet::setRowHeight(int rowFirst,int rowLast, double height)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast); const QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast);
for (const QSharedPointer<XlsxRowInfo> &rowInfo : rowInfoList) {
foreach(QSharedPointer<XlsxRowInfo> rowInfo, rowInfoList) {
rowInfo->height = height; rowInfo->height = height;
rowInfo->customHeight = true; rowInfo->customHeight = true;
} }
@ -2107,9 +2106,8 @@ bool Worksheet::setRowFormat(int rowFirst,int rowLast, const Format &format)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast); const QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast);
for (const QSharedPointer<XlsxRowInfo> &rowInfo : rowInfoList)
foreach(QSharedPointer<XlsxRowInfo> rowInfo, rowInfoList)
rowInfo->format = format; rowInfo->format = format;
d->workbook->styles()->addXfFormat(format); d->workbook->styles()->addXfFormat(format);
@ -2126,8 +2124,8 @@ bool Worksheet::setRowHidden(int rowFirst,int rowLast, bool hidden)
{ {
Q_D(Worksheet); Q_D(Worksheet);
QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast); const QList <QSharedPointer<XlsxRowInfo> > rowInfoList = d->getRowInfoList(rowFirst,rowLast);
foreach(QSharedPointer<XlsxRowInfo> rowInfo, rowInfoList) for (const QSharedPointer<XlsxRowInfo> &rowInfo : rowInfoList)
rowInfo->hidden = hidden; rowInfo->hidden = hidden;
return rowInfoList.count() > 0; return rowInfoList.count() > 0;
@ -2687,7 +2685,7 @@ void WorksheetPrivate::loadXmlSheetFormatProps(QXmlStreamReader &reader)
bool isSetWidth = false; bool isSetWidth = false;
// Retain default values // Retain default values
foreach (QXmlStreamAttribute attrib, attributes) for (const QXmlStreamAttribute &attrib : attributes)
{ {
if(attrib.name() == QLatin1String("baseColWidth") ) if(attrib.name() == QLatin1String("baseColWidth") )
{ {
@ -2957,16 +2955,18 @@ void WorksheetPrivate::validateDimension()
int firstColumn = -1; int firstColumn = -1;
int lastColumn = -1; int lastColumn = -1;
for (QMap<int, QMap<int, QSharedPointer<Cell> > >::const_iterator it = cellTable.begin(); it != cellTable.end(); ++it) auto it = cellTable.constBegin();
{ while (it != cellTable.constEnd()) {
Q_ASSERT(!it.value().isEmpty()); Q_ASSERT(!it.value().isEmpty());
if (firstColumn == -1 || it.value().constBegin().key() < firstColumn) if (firstColumn == -1 || it.value().constBegin().key() < firstColumn)
firstColumn = it.value().constBegin().key(); firstColumn = it.value().constBegin().key();
if (lastColumn == -1 || (it.value().constEnd()-1).key() > lastColumn) if (lastColumn == -1 || (it.value().constEnd()-1).key() > lastColumn)
lastColumn = (it.value().constEnd()-1).key(); lastColumn = (it.value().constEnd()-1).key();
}
++it;
}
CellRange cr(firstRow, firstColumn, lastRow, lastColumn); CellRange cr(firstRow, firstColumn, lastRow, lastColumn);

View File

@ -49,11 +49,11 @@ ZipReader::~ZipReader()
void ZipReader::init() void ZipReader::init()
{ {
#if QT_VERSION >= 0x050600 // Qt 5.6 or over #if QT_VERSION >= 0x050600 // Qt 5.6 or over
QVector<QZipReader::FileInfo> allFiles = m_reader->fileInfoList(); const QVector<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
#else #else
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList(); const QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
#endif #endif
foreach (const QZipReader::FileInfo &fi, allFiles) { for (const QZipReader::FileInfo &fi : allFiles) {
if (fi.isFile || (!fi.isDir && !fi.isFile && !fi.isSymLink)) if (fi.isFile || (!fi.isDir && !fi.isFile && !fi.isSymLink))
m_filePaths.append(fi.filePath); m_filePaths.append(fi.filePath);
} }