|
@ -60,7 +60,7 @@ WorksheetPrivate::WorksheetPrivate(Worksheet *p, Worksheet::CreateFlag flag) |
|
|
: AbstractSheetPrivate(p, flag) |
|
|
: AbstractSheetPrivate(p, flag) |
|
|
, windowProtection(false), showFormulas(false), showGridLines(true), showRowColHeaders(true) |
|
|
, windowProtection(false), showFormulas(false), showGridLines(true), showRowColHeaders(true) |
|
|
, showZeros(true), rightToLeft(false), tabSelected(false), showRuler(false) |
|
|
, showZeros(true), rightToLeft(false), tabSelected(false), showRuler(false) |
|
|
, showOutlineSymbols(true), showWhiteSpace(true) |
|
|
, showOutlineSymbols(true), showWhiteSpace(true), urlPattern(QStringLiteral("^([fh]tt?ps?://)|(mailto:)|(file://)")) |
|
|
{ |
|
|
{ |
|
|
previous_row = 0; |
|
|
previous_row = 0; |
|
|
|
|
|
|
|
@ -429,32 +429,10 @@ bool Worksheet::write(int row, int column, const QVariant &value, const Format & |
|
|
if (value.isNull()) { |
|
|
if (value.isNull()) { |
|
|
//Blank
|
|
|
//Blank
|
|
|
ret = writeBlank(row, column, format); |
|
|
ret = writeBlank(row, column, format); |
|
|
} else if (value.userType() == qMetaTypeId<RichString>()) { |
|
|
|
|
|
ret = writeString(row, column, value.value<RichString>(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::Bool) { |
|
|
|
|
|
//Bool
|
|
|
|
|
|
ret = writeBool(row,column, value.toBool(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QDateTime || value.userType() == QMetaType::QDate) { |
|
|
|
|
|
//DateTime, Date
|
|
|
|
|
|
// note that, QTime cann't convert to QDateTime
|
|
|
|
|
|
ret = writeDateTime(row, column, value.toDateTime(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QTime) { |
|
|
|
|
|
//Time
|
|
|
|
|
|
ret = writeTime(row, column, value.toTime(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::Int || value.userType() == QMetaType::UInt |
|
|
|
|
|
|| value.userType() == QMetaType::LongLong || value.userType() == QMetaType::ULongLong |
|
|
|
|
|
|| value.userType() == QMetaType::Double || value.userType() == QMetaType::Float) { |
|
|
|
|
|
//Number
|
|
|
|
|
|
|
|
|
|
|
|
ret = writeNumeric(row, column, value.toDouble(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QUrl) { |
|
|
|
|
|
//Url
|
|
|
|
|
|
ret = writeHyperlink(row, column, value.toUrl(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QString) { |
|
|
} else if (value.userType() == QMetaType::QString) { |
|
|
//String
|
|
|
//String
|
|
|
QString token = value.toString(); |
|
|
QString token = value.toString(); |
|
|
bool ok; |
|
|
bool ok; |
|
|
QRegularExpression urlPattern(QStringLiteral("^([fh]tt?ps?://)|(mailto:)|(file://)")); |
|
|
|
|
|
|
|
|
|
|
|
if (token.startsWith(QLatin1String("="))) { |
|
|
if (token.startsWith(QLatin1String("="))) { |
|
|
//convert to formula
|
|
|
//convert to formula
|
|
@ -462,7 +440,7 @@ bool Worksheet::write(int row, int column, const QVariant &value, const Format & |
|
|
} else if (token.startsWith(QLatin1String("{=")) && token.endsWith(QLatin1Char('}'))) { |
|
|
} else if (token.startsWith(QLatin1String("{=")) && token.endsWith(QLatin1Char('}'))) { |
|
|
//convert to array formula
|
|
|
//convert to array formula
|
|
|
ret = writeArrayFormula(CellRange(row, column, row, column), token, format); |
|
|
ret = writeArrayFormula(CellRange(row, column, row, column), token, format); |
|
|
} else if (token.contains(urlPattern)) { |
|
|
} else if (d->workbook->isStringsToHyperlinksEnabled() && token.contains(d->urlPattern)) { |
|
|
//convert to url
|
|
|
//convert to url
|
|
|
ret = writeHyperlink(row, column, QUrl(token)); |
|
|
ret = writeHyperlink(row, column, QUrl(token)); |
|
|
} else if (d->workbook->isStringsToNumbersEnabled() && (value.toDouble(&ok), ok)) { |
|
|
} else if (d->workbook->isStringsToNumbersEnabled() && (value.toDouble(&ok), ok)) { |
|
@ -472,6 +450,27 @@ bool Worksheet::write(int row, int column, const QVariant &value, const Format & |
|
|
//normal string now
|
|
|
//normal string now
|
|
|
ret = writeString(row, column, token, format); |
|
|
ret = writeString(row, column, token, format); |
|
|
} |
|
|
} |
|
|
|
|
|
} else if (value.userType() == qMetaTypeId<RichString>()) { |
|
|
|
|
|
ret = writeString(row, column, value.value<RichString>(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::Int || value.userType() == QMetaType::UInt |
|
|
|
|
|
|| value.userType() == QMetaType::LongLong || value.userType() == QMetaType::ULongLong |
|
|
|
|
|
|| value.userType() == QMetaType::Double || value.userType() == QMetaType::Float) { |
|
|
|
|
|
//Number
|
|
|
|
|
|
|
|
|
|
|
|
ret = writeNumeric(row, column, value.toDouble(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::Bool) { |
|
|
|
|
|
//Bool
|
|
|
|
|
|
ret = writeBool(row,column, value.toBool(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QDateTime || value.userType() == QMetaType::QDate) { |
|
|
|
|
|
//DateTime, Date
|
|
|
|
|
|
// note that, QTime cann't convert to QDateTime
|
|
|
|
|
|
ret = writeDateTime(row, column, value.toDateTime(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QTime) { |
|
|
|
|
|
//Time
|
|
|
|
|
|
ret = writeTime(row, column, value.toTime(), format); |
|
|
|
|
|
} else if (value.userType() == QMetaType::QUrl) { |
|
|
|
|
|
//Url
|
|
|
|
|
|
ret = writeHyperlink(row, column, value.toUrl(), format); |
|
|
} else { |
|
|
} else { |
|
|
//Wrong type
|
|
|
//Wrong type
|
|
|
return false; |
|
|
return false; |
|
@ -635,7 +634,7 @@ bool Worksheet::writeString(int row, int column, const QString &value, const For |
|
|
return false; |
|
|
return false; |
|
|
|
|
|
|
|
|
RichString rs; |
|
|
RichString rs; |
|
|
if (Qt::mightBeRichText(value) && d->workbook->isHtmlToRichStringEnabled()) |
|
|
if (d->workbook->isHtmlToRichStringEnabled() && Qt::mightBeRichText(value)) |
|
|
rs.setHtml(value); |
|
|
rs.setHtml(value); |
|
|
else |
|
|
else |
|
|
rs.addFragment(value, Format()); |
|
|
rs.addFragment(value, Format()); |
|
|