22 #include <com/sun/star/util/NumberFormat.hpp>
23 #include <osl/diagnose.h>
36 ScMyStyleNumberFormatSet::iterator aItr(aSet.find(aStyleNumberFormat));
37 if (aItr == aSet.end())
40 return aItr->nNumberFormat;
55 case util::NumberFormat::NUMBER:
58 mpNumberList = std::make_shared<ScRangeList>();
59 mpNumberList->AddAndPartialCombine(rRange);
62 case util::NumberFormat::TEXT:
65 mpTextList = std::make_shared<ScRangeList>();
66 mpTextList->AddAndPartialCombine(rRange);
69 case util::NumberFormat::TIME:
72 mpTimeList = std::make_shared<ScRangeList>();
73 mpTimeList->AddAndPartialCombine(rRange);
76 case util::NumberFormat::DATETIME:
79 mpDateTimeList = std::make_shared<ScRangeList>();
80 mpDateTimeList->AddAndPartialCombine(rRange);
86 mpPercentList = std::make_shared<ScRangeList>();
87 mpPercentList->AddAndPartialCombine(rRange);
90 case util::NumberFormat::LOGICAL:
93 mpLogicalList = std::make_shared<ScRangeList>();
94 mpLogicalList->AddAndPartialCombine(rRange);
97 case util::NumberFormat::UNDEFINED:
100 mpUndefinedList = std::make_shared<ScRangeList>();
101 mpUndefinedList->AddAndPartialCombine(rRange);
106 OSL_FAIL(
"wrong type");
119 auto itPair = pCurrencyList->insert(aStyle);
120 itPair.first->mpRanges->AddAndPartialCombine(rRange);
126 mpTextList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
128 mpNumberList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
130 mpTimeList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
132 mpDateTimeList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
134 mpPercentList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
136 mpLogicalList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
138 mpUndefinedList->InsertCol(static_cast<SCCOL>(nTab), static_cast<SCTAB>(nCol));
142 for (
auto& rCurrency : *pCurrencyList)
144 rCurrency.mpRanges->InsertCol(static_cast<SCCOL>(nCol), static_cast<SCTAB>(nTab));
150 const OUString* pStyleName,
const sal_Int16 nCellType,
160 SetStylesToRanges(*mpNumberList, pStyleName, util::NumberFormat::NUMBER,
nullptr, rImport);
161 mpNumberList.reset();
165 SetStylesToRanges(*mpTextList, pStyleName, util::NumberFormat::TEXT,
nullptr, rImport);
170 SetStylesToRanges(*mpTimeList, pStyleName, util::NumberFormat::TIME,
nullptr, rImport);
175 SetStylesToRanges(*mpDateTimeList, pStyleName, util::NumberFormat::DATETIME,
nullptr, rImport);
176 mpDateTimeList.reset();
181 mpPercentList.reset();
185 SetStylesToRanges(*mpLogicalList, pStyleName, util::NumberFormat::LOGICAL,
nullptr, rImport);
186 mpLogicalList.reset();
190 SetStylesToRanges(*mpUndefinedList, pStyleName, util::NumberFormat::UNDEFINED,
nullptr, rImport);
191 mpUndefinedList.reset();
195 for (
const auto& rCurrency : *pCurrencyList)
197 SetStylesToRanges(*rCurrency.mpRanges, pStyleName, util::NumberFormat::CURRENCY, &rCurrency.sCurrency, rImport);
204 aRowDefaultStyle(aCellStyles.
end()),
205 rImport(rTempImport),
208 bPrevRangeAdded(true)
228 it =
aCellStyles.emplace_hint(it, rStyleName, std::make_unique<ScMyStyleRanges>());
246 OSL_ENSURE(aPrevItr !=
aCellStyles.end(),
"no column default style");
248 aRange.aStart.SetCol(nStartCol);
249 aRange.aEnd.SetCol(i - 1);
265 OSL_FAIL(
"no column default style");
270 OSL_FAIL(
"too many columns");
300 OSL_ENSURE(static_cast<sal_uInt32>(nColumn) ==
aColDefaultStyles.size(),
"some columns are absent");
301 ScMyStylesMap::iterator aItr(
GetIterator(sStyleName));
303 for (sal_Int32
i = 0;
i < nRepeat; ++
i)
313 std::optional<OUString> pCurrencyP,
const sal_Int16 nCellTypeP)
324 bool bAddRange(
false);
369 ScRange aScRange( rAddress, rAddress );
378 rCellStyle.second->InsertCol(nCol, nTab);
395 rCellStyle.second->SetStylesToRanges(&rCellStyle.first,
rImport);
void InsertCol(const sal_Int32 nCol, const sal_Int32 nTab)
void AddCell(const ScAddress &rAddress)
void AddRange(const ScRange &rRange, const sal_Int16 nType)
std::optional< OUString > pPrevCurrency
void AddCurrencyRange(const ScRange &rRange, const std::optional< OUString > &pCurrency)
std::optional< OUString > pPrevStyleName
constexpr OUStringLiteral PERCENT(u"Percent")
static void SetStylesToRanges(const ScRangeList &rList, const OUString *pStyleName, const sal_Int16 nCellType, const OUString *pCurrency, ScXMLImport &rImport)
void SetRowStyle(const OUString &rStyleName)
void InsertCol(const sal_Int32 nCol, const sal_Int32 nTab)
void SetAttributes(std::optional< OUString > pStyleName, std::optional< OUString > pCurrency, const sal_Int16 nCellType)
~ScMyStylesImportHelper()
ScMyStylesImportHelper(ScXMLImport &rImport)
void AddSingleRange(const ScRange &rRange)
Use this class to manage solar mutex locking instead of calling LockSolarMutex() and UnlockSolarMutex...
enumrange< T >::Iterator end(enumrange< T >)
void AddColumnStyle(const OUString &rStyleName, const sal_Int32 nColumn, const sal_Int32 nRepeat)
ScMyStylesMap::iterator aRowDefaultStyle
std::vector< ScMyStylesMap::iterator > aColDefaultStyles
std::set< ScMyCurrencyStyle, LessCurrencyStyle > ScMyCurrencyStylesSet
std::optional< OUString > pCurrency
std::optional< OUString > pStyleName
ScMyStylesMap::iterator GetIterator(const OUString &rStyleName)
void AddDefaultRange(const ScRange &rRange)
ScMyStylesMap aCellStyles