summaryrefslogtreecommitdiff
path: root/sc/source/filter/orcus/interface.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/orcus/interface.cxx')
-rw-r--r--sc/source/filter/orcus/interface.cxx32
1 files changed, 28 insertions, 4 deletions
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 3735f28c82b2..660512c534e6 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -35,6 +35,16 @@ void ScOrcusGlobalSettings::set_origin_date(int year, int month, int day)
mrDoc.setOriginDate(year, month, day);
}
+void ScOrcusGlobalSettings::set_default_formula_grammar(os::formula_grammar_t eGrammar)
+{
+ meGrammar = eGrammar;
+}
+
+os::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const
+{
+ return meGrammar;
+}
+
ScOrcusFactory::StringCellCache::StringCellCache(const ScAddress& rPos, size_t nIndex) :
maPos(rPos), mnIndex(nIndex) {}
@@ -270,16 +280,18 @@ formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t
formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_ODFF;
switch(grammar)
{
- case orcus::spreadsheet::ods:
+ case orcus::spreadsheet::formula_grammar_ods:
eGrammar = formula::FormulaGrammar::GRAM_ODFF;
break;
- case orcus::spreadsheet::xlsx_2007:
- case orcus::spreadsheet::xlsx_2010:
+ case orcus::spreadsheet::formula_grammar_xlsx_2007:
+ case orcus::spreadsheet::formula_grammar_xlsx_2010:
eGrammar = formula::FormulaGrammar::GRAM_OOXML;
break;
- case orcus::spreadsheet::gnumeric:
+ case orcus::spreadsheet::formula_grammar_gnumeric:
eGrammar = formula::FormulaGrammar::GRAM_ENGLISH_XL_A1;
break;
+ default:
+ break;
}
return eGrammar;
@@ -309,6 +321,18 @@ void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, const char*
pCell->SetHybridString(mrDoc.getDoc().GetSharedStringPool().intern(aResult));
}
+void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, double value)
+{
+ ScFormulaCell* pCell = mrDoc.getDoc().GetFormulaCell(ScAddress(col, row, mnTab));
+ if (!pCell)
+ {
+ SAL_WARN("sc", "trying to set formula result for non formula \
+ cell! Col: " << col << ";Row: " << row << ";Tab: " << mnTab);
+ return;
+ }
+ pCell->SetHybridDouble(value);
+}
+
void ScOrcusSheet::set_shared_formula(
os::row_t row, os::col_t col, os::formula_grammar_t grammar, size_t sindex,
const char* p_formula, size_t n_formula)