14#include <document.hxx>
17#include <tokenarray.hxx>
21#include <compiler.hxx>
45#include <com/sun/star/task/XStatusIndicator.hpp>
51#include <orcus/exception.hpp>
56namespace os = orcus::spreadsheet;
65 case orcus::spreadsheet::formula_grammar_t::ods:
68 case orcus::spreadsheet::formula_grammar_t::xlsx:
71 case orcus::spreadsheet::formula_grammar_t::gnumeric:
74 case orcus::spreadsheet::formula_grammar_t::xls_xml:
77 case orcus::spreadsheet::formula_grammar_t::unknown:
88 , meCalcGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED)
89 , meOrcusGrammar(os::formula_grammar_t::
unknown)
90 , mnTextEncoding(RTL_TEXTENCODING_UTF8)
103 case orcus::character_set_t::iso_2022_jp:
104 case orcus::character_set_t::iso_2022_jp_2:
107 case orcus::character_set_t::jis_x0201:
110 case orcus::character_set_t::shift_jis:
113 case orcus::character_set_t::us_ascii:
116 case orcus::character_set_t::utf_7:
119 case orcus::character_set_t::windows_1250:
122 case orcus::character_set_t::windows_1251:
125 case orcus::character_set_t::windows_1252:
128 case orcus::character_set_t::windows_1253:
131 case orcus::character_set_t::windows_1254:
134 case orcus::character_set_t::windows_1255:
137 case orcus::character_set_t::windows_1256:
140 case orcus::character_set_t::windows_1257:
143 case orcus::character_set_t::windows_1258:
163 mrGlobalSettings(rGS) {}
176 std::ostringstream os;
177 os <<
"'" << address <<
"' is not a valid address expression.";
178 throw orcus::invalid_arg_error(os.str());
181 os::src_address_t ret;
182 ret.sheet = aAddr.
Tab();
183 ret.column = aAddr.
Col();
184 ret.row = aAddr.
Row();
200 std::ostringstream os;
201 os <<
"'" << range <<
"' is not a valid range expression.";
202 throw orcus::invalid_arg_error(os.str());
209 ret.last.sheet = aRange.
aEnd.
Tab();
210 ret.last.column = aRange.
aEnd.
Col();
211 ret.last.row = aRange.
aEnd.
Row();
218 mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {}
244 throw std::runtime_error(
"ScOrcusNamedExpression::set_named_range not implemented yet.");
257 pNames->
insert(pRange,
false);
263 : mfValue(
std::numeric_limits<double>::quiet_NaN())
268 , meGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED)
278 , meGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED)
283 : mfValue(
std::numeric_limits<double>::quiet_NaN())
288 , meGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED)
295 , mfValue(
std::numeric_limits<double>::quiet_NaN())
300 , meGrammar(eGrammar)
309 maStyles(*this, bSkipDefaultStyles),
313 orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name)
317 if (sheet_index == 0)
322 maSheets.push_back(std::make_unique<ScOrcusSheet>(
maDoc, 0, *
this));
330 maSheets.push_back(std::make_unique<ScOrcusSheet>(
maDoc, nTab, *
this));
336class FindSheetByIndex
340 explicit FindSheetByIndex(
SCTAB nTab) : mnTab(nTab) {}
341 bool operator() (
const std::unique_ptr<ScOrcusSheet>& rSheet)
const
343 return rSheet->getIndex() == mnTab;
358 std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
366 maSheets.push_back(std::make_unique<ScOrcusSheet>(
maDoc, nTab, *
this));
374 std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
382 maSheets.push_back(std::make_unique<ScOrcusSheet>(
maDoc, nTab, *
this));
408 auto toFormulaCell = [
this](
const CellStoreToken& rToken ) -> std::unique_ptr<ScFormulaCell>
414 return std::unique_ptr<ScFormulaCell>();
416 return std::make_unique<ScFormulaCell>(
maDoc.
getDoc(), rToken.maPos, *pArray);
423 switch (rToken.meType)
450 rToken.maPos, rToken.maStr1, rToken.meGrammar);
457 if (std::isfinite(rToken.mfValue))
467 std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
478 std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
482 if (std::isfinite(rToken.mfValue))
483 pCell->SetResultDouble(rToken.mfValue);
485 pCell->SetHybridString(
495 if (!rToken.mnIndex1 || !rToken.mnIndex2)
503 std::unique_ptr<ScTokenArray> pArray(aComp.
CompileString(rToken.maStr1));
512 if (!rToken.mnIndex1)
522 if (nCellCount == 100000)
600 uint32_t nRowRange, uint32_t nColRange )
618 if (rToken.
maPos != rPos)
644 if (rToken.
maPos != rPos)
703double translateToInternal(
double nVal, orcus::length_unit_t unit)
707 case orcus::length_unit_t::inch:
708 return nVal * 72.0 * 20.0;
709 case orcus::length_unit_t::twip:
711 case orcus::length_unit_t::point:
713 case orcus::length_unit_t::centimeter:
714 return nVal * 20.0 * 72.0 / 2.54;
715 case orcus::length_unit_t::unknown:
717 SAL_WARN(
"sc.orcus",
"unknown unit");
730 double nNewWidth = translateToInternal(width, unit);
742 double nNewHeight = translateToInternal(height, unit);
770 os::color_elem_t , os::color_elem_t )
772 SAL_INFO(
"sc.orcus.condformat",
"set_color");
778 SAL_INFO(
"sc.orcus.condformat",
"set_condition_type");
783 SAL_INFO(
"sc.orcus.condformat",
"set_formula");
789 SAL_INFO(
"sc.orcus.condformat",
"set_date");
794 SAL_INFO(
"sc.orcus.condformat",
"commit_condition");
800 SAL_INFO(
"sc.orcus.condformat",
"set_icon_name");
806 SAL_INFO(
"sc.orcus.condformat",
"set_databar_gradient");
812 SAL_INFO(
"sc.orcus.condformat",
"set_databar_axis");
816 os::color_elem_t , os::color_elem_t )
819 SAL_INFO(
"sc.orcus.condformat",
"set_databar_color_positive");
823 os::color_elem_t , os::color_elem_t )
826 SAL_INFO(
"sc.orcus.condformat",
"set_databar_color_negative");
832 SAL_INFO(
"sc.orcus.condformat",
"set_min_databar_length");
838 SAL_INFO(
"sc.orcus.condformat",
"set_max_databar_length");
843 SAL_INFO(
"sc.orcus.condformat",
"set_show_value");
849 SAL_INFO(
"sc.orcus.condformat",
"set_iconset_reverse");
854 SAL_INFO(
"sc.orcus.condformat",
"set_xf_id");
859 SAL_INFO(
"sc.orcus.condformat",
"set_operator");
866 case os::conditional_format_t::condition:
867 case os::conditional_format_t::formula:
871 case os::conditional_format_t::date:
873 case os::conditional_format_t::colorscale:
875 case os::conditional_format_t::databar:
877 case os::conditional_format_t::iconset:
880 SAL_INFO(
"sc.orcus.condformat",
"unknown conditional_format_t value");
883 SAL_INFO(
"sc.orcus.condformat",
"set_type");
888 SAL_INFO(
"sc.orcus.condformat",
"commit_entry");
893 SAL_INFO(
"sc.orcus.condformat",
"set_range");
897 os::row_t row_end, os::col_t col_end)
899 SAL_INFO(
"sc.orcus.condformat",
"set_range");
906 SAL_INFO(
"sc.orcus.condformat",
"commit_format");
914 mrStyles(static_cast<
ScOrcusStyles&>(*mrFactory.get_styles())),
915 maAutoFilter(rFactory.getGlobalSettings()),
917 maConditionalFormat(mnTab, rDoc.getDoc()),
918 maNamedExpressions(rDoc, rFactory.getGlobalSettings(), nTab),
920 maArrayFormula(*this),
942 meGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED),
943 mnSharedFormulaIndex(0),
959 meGrammar = getCalcGrammarFromOrcus(grammar);
1061 meGrammar(
formula::FormulaGrammar::GRAM_UNSPECIFIED) {}
1067 mnCol = range.first.column;
1068 mnRow = range.first.row;
1070 mnColRange = range.last.column - range.first.column + 1;
1071 mnRowRange = range.last.row - range.first.column + 1;
1076 meGrammar = getCalcGrammarFromOrcus(grammar);
1185 os::row_t row, os::col_t col,
int year,
int month,
int day,
int hour,
int minute,
double second)
1190 sal_uInt32 nSec = floor(second);
1209 SAL_INFO(
"sc.orcus.style",
"set format: " << xf_index);
1217 os::row_t row_end, os::col_t col_end,
size_t xf_index)
1219 SAL_INFO(
"sc.orcus.style",
"set format range: " << xf_index);
1227 orcus::spreadsheet::range_size_t ret;
1256 mrFactory(rFactory) {}
1291 orcus::spreadsheet::color_elem_t,
1292 orcus::spreadsheet::color_elem_t,
1293 orcus::spreadsheet::color_elem_t)
1355 double fSize = translateToInternal(*
mnSize, orcus::length_unit_t::point);
1375 if (!mePattern || !maFgColor)
1378 if (*mePattern == os::fill_pattern_t::solid)
1384 if (!mbLocked && !mbHidden && !mbPrintContent && !mbFormulaHidden)
1387 bool bLocked = mbLocked.value_or(
true);
1388 bool bHidden = mbHidden.value_or(
false);
1389 bool bFormulaHidden = mbFormulaHidden.value_or(
false);
1390 bool bPrintContent = mbPrintContent.value_or(
false);
1400 case os::border_direction_t::right:
1401 return SvxBoxItemLine::RIGHT;
1402 case os::border_direction_t::left:
1403 return SvxBoxItemLine::LEFT;
1404 case os::border_direction_t::top:
1405 return SvxBoxItemLine::TOP;
1406 case os::border_direction_t::bottom:
1407 return SvxBoxItemLine::BOTTOM;
1411 return SvxBoxItemLine::RIGHT;
1425 for (
const auto& [dir, attrs] :
maBorders)
1431 double nWidth = attrs.mnWidth.value_or(0.0);
1435 case os::border_direction_t::diagonal_tl_br:
1438 aDiagonal_TLBR.
SetLine(&aLine);
1441 case os::border_direction_t::diagonal_bl_tr:
1444 aDiagonal_BLTR.
SetLine(&aLine);
1450 aBoxItem.
SetLine(&aLine, eDir);
1466 sal_Int32 nCheckPos;
1468 OUString Code = *maCode;
1481 mnNumberFormatId(0),
1501 if (nFontId >=
maFonts.size())
1503 SAL_WARN(
"sc.orcus.style",
"invalid font id");
1510 if (nFillId >=
maFills.size())
1512 SAL_WARN(
"sc.orcus.style",
"invalid fill id");
1522 SAL_WARN(
"sc.orcus.style",
"invalid border id");
1530 SAL_WARN(
"sc.orcus.style",
"invalid protection id");
1539 SAL_WARN(
"sc.orcus.style",
"invalid number format id");
1556 SAL_INFO(
"sc.orcus.style",
"applyXfToitemSet: " << xfId);
1559 SAL_WARN(
"sc.orcus.style",
"invalid xf id");
1597 case orcus::spreadsheet::underline_t::single_line:
1598 case orcus::spreadsheet::underline_t::single_accounting:
1601 case orcus::spreadsheet::underline_t::double_line:
1602 case orcus::spreadsheet::underline_t::double_accounting:
1605 case orcus::spreadsheet::underline_t::none:
1608 case orcus::spreadsheet::underline_t::dotted:
1611 case orcus::spreadsheet::underline_t::dash:
1614 case orcus::spreadsheet::underline_t::long_dash:
1617 case orcus::spreadsheet::underline_t::dot_dash:
1620 case orcus::spreadsheet::underline_t::dot_dot_dot_dash:
1623 case orcus::spreadsheet::underline_t::wave:
1633 if (e == orcus::spreadsheet::underline_width_t::bold || e == orcus::spreadsheet::underline_width_t::thick)
1676 if (e == orcus::spreadsheet::underline_type_t::double_type)
1699 orcus::spreadsheet::color_elem_t red,
1700 orcus::spreadsheet::color_elem_t green,
1701 orcus::spreadsheet::color_elem_t blue)
1707 orcus::spreadsheet::color_elem_t red,
1708 orcus::spreadsheet::color_elem_t green,
1709 orcus::spreadsheet::color_elem_t blue)
1730 case os::strikethrough_type_t::unknown:
1733 case os::strikethrough_type_t::none:
1736 case os::strikethrough_type_t::single:
1739 case os::strikethrough_type_t::double_type:
1751 case os::strikethrough_width_t::bold:
1763 case os::strikethrough_text_t::slash:
1766 case os::strikethrough_text_t::cross:
1776 SAL_INFO(
"sc.orcus.style",
"commit font");
1795 orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
1801 orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
1808 SAL_INFO(
"sc.orcus.style",
"commit fill");
1822 orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style)
1828 case orcus::spreadsheet::border_style_t::solid:
1829 rBorder.
meStyle = SvxBorderLineStyle::SOLID;
1832 case orcus::spreadsheet::border_style_t::hair:
1833 rBorder.
meStyle = SvxBorderLineStyle::SOLID;
1836 case orcus::spreadsheet::border_style_t::medium:
1837 rBorder.
meStyle = SvxBorderLineStyle::SOLID;
1840 case orcus::spreadsheet::border_style_t::thick:
1841 rBorder.
meStyle = SvxBorderLineStyle::SOLID;
1844 case orcus::spreadsheet::border_style_t::thin:
1845 rBorder.
meStyle = SvxBorderLineStyle::SOLID;
1848 case orcus::spreadsheet::border_style_t::dash_dot:
1849 rBorder.
meStyle = SvxBorderLineStyle::DASH_DOT;
1852 case orcus::spreadsheet::border_style_t::dash_dot_dot:
1853 rBorder.
meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1856 case orcus::spreadsheet::border_style_t::dashed:
1857 rBorder.
meStyle = SvxBorderLineStyle::DASHED;
1860 case orcus::spreadsheet::border_style_t::dotted:
1861 rBorder.
meStyle = SvxBorderLineStyle::DOTTED;
1864 case orcus::spreadsheet::border_style_t::double_border:
1865 rBorder.
meStyle = SvxBorderLineStyle::DOUBLE;
1868 case orcus::spreadsheet::border_style_t::medium_dash_dot:
1869 case orcus::spreadsheet::border_style_t::slant_dash_dot:
1870 rBorder.
meStyle = SvxBorderLineStyle::DASH_DOT;
1873 case orcus::spreadsheet::border_style_t::medium_dash_dot_dot:
1874 rBorder.
meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1877 case orcus::spreadsheet::border_style_t::medium_dashed:
1878 rBorder.
meStyle = SvxBorderLineStyle::DASHED;
1881 case orcus::spreadsheet::border_style_t::unknown:
1882 case orcus::spreadsheet::border_style_t::none:
1891 orcus::spreadsheet::color_elem_t alpha,
1892 orcus::spreadsheet::color_elem_t red,
1893 orcus::spreadsheet::color_elem_t green,
1894 orcus::spreadsheet::color_elem_t blue)
1903 current_line.
mnWidth = translateToInternal(val, unit);
1908 SAL_INFO(
"sc.orcus.style",
"commit border");
1937 SAL_INFO(
"sc.orcus.style",
"commit cell protection");
1959 SAL_INFO(
"sc.orcus.style",
"commit number format");
1974 SAL_INFO(
"sc.orcus.style",
"commit cell style xf");
1988 SAL_INFO(
"sc.orcus.style",
"commit cell xf");
2044 case os::hor_alignment_t::left:
2047 case os::hor_alignment_t::right:
2050 case os::hor_alignment_t::center:
2053 case os::hor_alignment_t::justified:
2056 case os::hor_alignment_t::distributed:
2060 case os::hor_alignment_t::unknown:
2073 case os::ver_alignment_t::top:
2076 case os::ver_alignment_t::bottom:
2079 case os::ver_alignment_t::middle:
2082 case os::ver_alignment_t::justified:
2085 case os::ver_alignment_t::distributed:
2089 case os::ver_alignment_t::unknown:
2134 SAL_WARN(
"sc.orcus.style",
"invalid xf id for commit cell style");
2146 SfxStyleFamily::Para));
2161 mrGlobalSettings(rGS)
2179 SAL_INFO(
"sc.orcus.autofilter",
"set_column: " << col);
2185 SAL_INFO(
"sc.orcus.autofilter",
"append_column_match_value: " << aString);
2190 SAL_INFO(
"sc.orcus.autofilter",
"commit column");
2195 SAL_INFO(
"sc.orcus.autofilter",
"commit");
void IncCol(SCCOL nDelta=1)
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument &, const Details &rDetails=detailsOOOa1, ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, sal_Int32 *pSheetEndPos=nullptr, const OUString *pErrRef=nullptr)
void IncRow(SCROW nDelta=1)
std::unique_ptr< ScTokenArray > CompileString(const OUString &rFormula)
Tokenize formula expression string into an array of tokens.
Accessor class to ScDocument.
void setMatrixCells(const ScRange &rRange, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGrammar)
void setOriginDate(sal_uInt16 nYear, sal_uInt16 nMonth, sal_uInt16 nDay)
void setMergedCells(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
void setStringCell(const ScAddress &rPos, const OUString &rStr)
bool appendSheet(const OUString &rName)
void setFormulaCell(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, const double *pResult=nullptr)
void setSheetName(SCTAB nTab, const OUString &rName)
SCTAB getSheetCount() const
SCTAB getSheetIndex(const OUString &rName) const
void setNumericCell(const ScAddress &rPos, double fVal)
void fillDownCells(const ScAddress &rPos, SCROW nFillSize)
void setAutoInput(const ScAddress &rPos, const OUString &rStr, const ScSetStringParam *pStringParam=nullptr)
SC_DLLPUBLIC void SetColHidden(SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, bool bHidden)
SC_DLLPUBLIC ScDocumentPool * GetPool()
SC_DLLPUBLIC void ApplyPatternAreaTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, const ScPatternAttr &rAttr)
SC_DLLPUBLIC void ApplyPattern(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScPatternAttr &rAttr)
SC_DLLPUBLIC void SetColWidthOnly(SCCOL nCol, SCTAB nTab, sal_uInt16 nNewWidth)
SC_DLLPUBLIC ScStyleSheetPool * GetStyleSheetPool() const
SC_DLLPUBLIC void SetRowHeightOnly(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_uInt16 nNewHeight)
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
SC_DLLPUBLIC void SetRowHidden(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bHidden)
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
SC_DLLPUBLIC ScRangeName * GetRangeName(SCTAB nTab) const
virtual void set_column(orcus::spreadsheet::col_t col) override
virtual void commit() override
const ScOrcusGlobalSettings & mrGlobalSettings
virtual void append_column_match_value(std::string_view value) override
ScOrcusAutoFilter(const ScOrcusGlobalSettings &rGS)
virtual void commit_column() override
virtual void set_range(const orcus::spreadsheet::range_t &range) override
virtual ~ScOrcusAutoFilter() override
ScOrcusGlobalSettings maGlobalSettings
void pushSharedFormulaToken(const ScAddress &rPos, uint32_t nIndex)
virtual void finalize() override
StringHashType maStringHash
virtual orcus::spreadsheet::iface::import_shared_strings * get_shared_strings() override
std::vector< std::unique_ptr< ScOrcusSheet > > maSheets
void pushMatrixFormulaToken(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, uint32_t nRowRange, uint32_t nColRange)
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
void pushCellStoreToken(const ScAddress &rPos, uint32_t nStrIndex)
size_t addString(const OUString &rStr)
virtual orcus::spreadsheet::iface::import_global_settings * get_global_settings() override
void pushFillDownCellsToken(const ScAddress &rPos, uint32_t nFillSize)
void pushFormulaResult(const ScAddress &rPos, double fValue)
const ScOrcusGlobalSettings & getGlobalSettings() const
void setStatusIndicator(const css::uno::Reference< css::task::XStatusIndicator > &rIndicator)
ScOrcusSharedStrings maSharedStrings
ScDocumentImport & getDoc()
virtual orcus::spreadsheet::iface::import_styles * get_styles() override
ScOrcusFactory(ScDocument &rDoc, bool bSkipDefaultStyles=false)
std::vector< OUString > maStrings
size_t appendString(const OUString &rStr)
ScOrcusNamedExpression maNamedExpressions
virtual orcus::spreadsheet::iface::import_sheet * append_sheet(orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name) override
CellStoreTokensType maCellStoreTokens
virtual orcus::spreadsheet::iface::import_sheet * get_sheet(std::string_view sheet_name) override
void pushCellStoreAutoToken(const ScAddress &rPos, const OUString &rVal)
const OUString * getString(size_t nIndex) const
css::uno::Reference< css::task::XStatusIndicator > mxStatusIndicator
virtual void set_character_set(orcus::character_set_t cs) override
orcus::spreadsheet::formula_grammar_t meOrcusGrammar
ScOrcusGlobalSettings(ScDocumentImport &rDoc)
formula::FormulaGrammar::Grammar getCalcGrammar() const
ScDocumentImport & getDoc() const
virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const override
rtl_TextEncoding mnTextEncoding
virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) override
formula::FormulaGrammar::Grammar meCalcGrammar
rtl_TextEncoding getTextEncoding() const
virtual void set_origin_date(int year, int month, int day) override
virtual void set_base_position(const orcus::spreadsheet::src_address_t &pos) override
const ScOrcusGlobalSettings & mrGlobalSettings
virtual void set_named_range(std::string_view name, std::string_view range) override
virtual void set_named_expression(std::string_view name, std::string_view expression) override
ScOrcusNamedExpression(ScDocumentImport &rDoc, const ScOrcusGlobalSettings &rGS, SCTAB nTab=-1)
virtual void commit() override
const ScOrcusGlobalSettings & mrGlobalSettings
orcus::spreadsheet::src_range_t resolve_range(std::string_view range) override
orcus::spreadsheet::src_address_t resolve_address(std::string_view address) override
ScOrcusRefResolver(const ScOrcusGlobalSettings &rGS)
virtual void append_segment(std::string_view s) override
virtual size_t append(std::string_view s) override
virtual void set_segment_italic(bool b) override
virtual size_t add(std::string_view s) override
OStringBuffer maCurSegment
virtual void set_segment_bold(bool b) override
virtual void set_segment_font_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
ScOrcusFactory & mrFactory
virtual void set_segment_font_size(double point) override
virtual size_t commit_segments() override
ScOrcusSharedStrings(ScOrcusFactory &rFactory)
virtual void set_segment_font(size_t font_index) override
virtual void set_segment_font_name(std::string_view s) override
virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) override
virtual void set_merge_cell_range(const orcus::spreadsheet::range_t &range) override
virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) override
virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) override
virtual ~ScOrcusSheetProperties() override
virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) override
ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport &rDoc)
virtual orcus::spreadsheet::iface::import_formula * get_formula() override
virtual orcus::spreadsheet::iface::import_conditional_format * get_conditional_format() override
virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override
ScOrcusSheetProperties maProperties
ScOrcusFactory & mrFactory
ScOrcusConditionalFormat maConditionalFormat
virtual void fill_down_cells(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::row_t range_size) override
ScOrcusArrayFormula maArrayFormula
ScOrcusFactory & getFactory()
virtual orcus::spreadsheet::iface::import_sheet_properties * get_sheet_properties() override
virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override
virtual void set_date_time(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, int year, int month, int day, int hour, int minute, double second) override
virtual orcus::spreadsheet::iface::import_table * get_table() override
virtual orcus::spreadsheet::iface::import_array_formula * get_array_formula() override
sc::SharedFormulaGroups maFormulaGroups
virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) override
ScOrcusAutoFilter maAutoFilter
const sc::SharedFormulaGroups & getSharedFormulaGroups() const
virtual orcus::spreadsheet::iface::import_auto_filter * get_auto_filter() override
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
virtual orcus::spreadsheet::range_size_t get_sheet_size() const override
ScOrcusNamedExpression maNamedExpressions
ScOrcusSheet(ScDocumentImport &rDoc, SCTAB nTab, ScOrcusFactory &rFactory)
ScDocumentImport & getDoc()
virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::string_id_t sindex) override
virtual void set_fill_fg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
virtual void set_cell_formula_hidden(bool b) override
virtual void set_dxf_count(size_t count) override
std::vector< font > maFonts
cell_style maCurrentCellStyle
std::vector< fill > maFills
virtual void set_fill_bg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
virtual void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s) override
virtual void set_cell_hidden(bool b) override
virtual void set_xf_apply_alignment(bool b) override
std::vector< number_format > maNumberFormats
virtual void set_cell_xf_count(size_t n) override
protection maCurrentProtection
virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit) override
virtual void set_cell_style_xf(size_t index) override
std::vector< xf > maCellXfs
virtual void set_xf_number_format(size_t index) override
virtual void set_font_name(std::string_view name) override
virtual void set_font_italic(bool b) override
virtual void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s) override
std::vector< protection > maProtections
virtual void set_font_underline(orcus::spreadsheet::underline_t e) override
virtual size_t commit_dxf() override
virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style) override
virtual size_t commit_cell_style_xf() override
number_format maCurrentNumberFormat
virtual void set_cell_style_xf_count(size_t n) override
std::vector< xf > maCellStyleXfs
virtual size_t commit_cell_protection() override
virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) override
virtual void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s) override
virtual void set_border_count(size_t n) override
ScOrcusStyles(ScOrcusFactory &rFactory, bool bSkipDefaultStyles=false)
virtual void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s) override
virtual void set_cell_style_name(std::string_view name) override
virtual void set_xf_protection(size_t index) override
virtual size_t commit_fill() override
virtual void set_xf_font(size_t index) override
virtual size_t commit_number_format() override
virtual void set_font_size(double point) override
virtual void set_font_underline_width(orcus::spreadsheet::underline_width_t e) override
ScOrcusFactory & mrFactory
virtual void set_font_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
virtual void set_cell_style_count(size_t n) override
virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) override
virtual size_t commit_font() override
virtual void set_font_bold(bool b) override
virtual void set_cell_print_content(bool b) override
virtual void set_cell_locked(bool b) override
void applyXfToItemSet(SfxItemSet &rSet, const xf &rXf)
virtual size_t commit_cell_xf() override
virtual void set_cell_style_builtin(size_t index) override
virtual void set_font_underline_mode(orcus::spreadsheet::underline_mode_t e) override
virtual void set_number_format_code(std::string_view s) override
virtual void set_border_color(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
std::vector< border > maBorders
virtual void set_font_underline_type(orcus::spreadsheet::underline_type_t e) override
virtual void set_xf_fill(size_t index) override
virtual size_t commit_border() override
virtual void set_number_format_identifier(size_t n) override
virtual void set_xf_border(size_t index) override
virtual void set_number_format_count(size_t n) override
virtual void set_fill_count(size_t n) override
virtual void set_fill_pattern_type(orcus::spreadsheet::fill_pattern_t fp) override
virtual void set_cell_style_parent_name(std::string_view name) override
virtual void set_font_count(size_t n) override
virtual void set_xf_style_xf(size_t index) override
virtual size_t commit_cell_style() override
virtual void set_font_underline_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
SC_DLLPUBLIC bool insert(ScRangeData *p, bool bReuseFreeIndex=true)
Insert object into set.
ScRefFlags Parse(const OUString &, const ScDocument &, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, ScAddress::ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, const OUString *pErrRef=nullptr)
static SC_DLLPUBLIC OUString ProgrammaticToDisplayName(const OUString &rProgName, SfxStyleFamily nType)
virtual SfxStyleSheetBase & Make(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits nMask=SfxStyleSearchBits::All) override
void CreateStandardStyles()
bool HasStandardStyles() const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
virtual bool SetParent(const OUString &)
virtual SfxItemSet & GetItemSet()
void SetLine(const editeng::SvxBorderLine *pNew, SvxBoxItemLine nLine)
void SetLine(const editeng::SvxBorderLine *pNew)
void SetColor(const Color &rCol)
SharedString intern(const OUString &rStr)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
#define LANGUAGE_ENGLISH_US
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
SvGenericNameContainerMapImpl maProperties
const sal_Int16 API_LINE_THICK
const sal_Int16 API_LINE_MEDIUM
const sal_Int16 API_LINE_THIN
const sal_Int16 API_LINE_NONE
Font auto color (system window text color).
const sal_Int16 API_LINE_HAIR
OUString ScResId(TranslateId aId)
constexpr TypedWhichId< SvxFontHeightItem > ATTR_FONT_HEIGHT(101)
constexpr TypedWhichId< SvxPostureItem > ATTR_CTL_FONT_POSTURE(119)
constexpr TypedWhichId< SvxFontHeightItem > ATTR_CJK_FONT_HEIGHT(112)
constexpr TypedWhichId< SvxPostureItem > ATTR_FONT_POSTURE(103)
constexpr TypedWhichId< SvxWeightItem > ATTR_FONT_WEIGHT(102)
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
constexpr TypedWhichId< SvxWeightItem > ATTR_CJK_FONT_WEIGHT(113)
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_TLBR(141)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_VER_JUSTIFY_METHOD(133)
constexpr TypedWhichId< SvxHorJustifyItem > ATTR_HOR_JUSTIFY(129)
constexpr TypedWhichId< SvxBoxItem > ATTR_BORDER(150)
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_HOR_JUSTIFY_METHOD(130)
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALUE_FORMAT(146)
constexpr TypedWhichId< SvxCrossedOutItem > ATTR_FONT_CROSSEDOUT(106)
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_BLTR(142)
constexpr TypedWhichId< SvxVerJustifyItem > ATTR_VER_JUSTIFY(132)
constexpr TypedWhichId< SvxFontItem > ATTR_FONT(100)
constexpr TypedWhichId< SvxWeightItem > ATTR_CTL_FONT_WEIGHT(118)
constexpr TypedWhichId< SvxPostureItem > ATTR_CJK_FONT_POSTURE(114)
constexpr TypedWhichId< SvxFontHeightItem > ATTR_CTL_FONT_HEIGHT(117)
constexpr TypedWhichId< SvxUnderlineItem > ATTR_FONT_UNDERLINE(104)
@ SharedFormulaWithResult
CellStoreToken(const ScAddress &rPos, Type eType)
formula::FormulaGrammar::Grammar meGrammar
std::optional< double > mnWidth
std::optional< Color > maColor
std::optional< SvxBorderLineStyle > meStyle
std::map< orcus::spreadsheet::border_direction_t, border_line > maBorders
void applyToItemSet(SfxItemSet &rSet) const
std::optional< Color > maBgColor
std::optional< Color > maFgColor
void applyToItemSet(SfxItemSet &rSet) const
std::optional< orcus::spreadsheet::fill_pattern_t > mePattern
std::optional< bool > mbItalic
void applyToItemSet(SfxItemSet &rSet) const
std::optional< OUString > maName
std::optional< Color > maColor
std::optional< Color > maUnderlineColor
std::optional< FontLineStyle > meUnderline
std::optional< bool > mbBold
std::optional< double > mnSize
std::optional< FontStrikeout > meStrikeout
std::optional< bool > mbHidden
void applyToItemSet(SfxItemSet &rSet) const
std::optional< bool > mbPrintContent
std::optional< bool > mbLocked
std::optional< bool > mbFormulaHidden
SvxCellJustifyMethod meHorAlignMethod
SvxCellVerJustify meVerAlignment
SvxCellJustifyMethod meVerAlignMethod
SvxCellHorJustify meHorAlignment
constexpr OUStringLiteral SC_STYLE_PROG_STANDARD