diff options
Diffstat (limited to 'sc/source/core/data/documentimport.cxx')
-rw-r--r-- | sc/source/core/data/documentimport.cxx | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx new file mode 100644 index 000000000000..3a3218c1759e --- /dev/null +++ b/sc/source/core/data/documentimport.cxx @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "documentimport.hxx" +#include "document.hxx" +#include "table.hxx" +#include "column.hxx" +#include "cell.hxx" +#include "formulacell.hxx" +#include "docoptio.hxx" + +ScDocumentImport::ScDocumentImport(ScDocument& rDoc) : mrDoc(rDoc) {} +ScDocumentImport::ScDocumentImport(const ScDocumentImport& r) : mrDoc(r.mrDoc) {} + +ScDocument& ScDocumentImport::getDoc() +{ + return mrDoc; +} + +const ScDocument& ScDocumentImport::getDoc() const +{ + return mrDoc; +} + +SCTAB ScDocumentImport::getSheetIndex(const OUString& rName) const +{ + SCTAB nTab = -1; + if (!mrDoc.GetTable(rName, nTab)) + return -1; + + return nTab; +} + +SCTAB ScDocumentImport::getSheetCount() const +{ + return mrDoc.maTabs.size(); +} + +bool ScDocumentImport::appendSheet(const OUString& rName) +{ + SCTAB nTabCount = mrDoc.maTabs.size(); + if (!ValidTab(nTabCount)) + return false; + + mrDoc.maTabs.push_back(new ScTable(&mrDoc, nTabCount, rName)); + return true; +} + +void ScDocumentImport::setOriginDate(sal_uInt16 nYear, sal_uInt16 nMonth, sal_uInt16 nDay) +{ + if (!mrDoc.pDocOptions) + mrDoc.pDocOptions = new ScDocOptions; + + mrDoc.pDocOptions->SetDate(nDay, nMonth, nYear); +} + +void ScDocumentImport::setAutoInput(const ScAddress& rPos, const OUString& rStr) +{ + if (!mrDoc.TableExists(rPos.Tab())) + return; + + mrDoc.maTabs[rPos.Tab()]->aCol[rPos.Col()].SetString(rPos.Row(), rPos.Tab(), rStr, mrDoc.GetAddressConvention()); +} + +void ScDocumentImport::setNumericCell(const ScAddress& rPos, double fVal) +{ + insertCell(rPos, new ScValueCell(fVal)); +} + +void ScDocumentImport::setStringCell(const ScAddress& rPos, const OUString& rStr) +{ + insertCell(rPos, new ScStringCell(rStr)); +} + +void ScDocumentImport::setFormulaCell( + const ScAddress& rPos, const OUString& rFormula, formula::FormulaGrammar::Grammar eGrammar) +{ + insertCell(rPos, new ScFormulaCell(&mrDoc, rPos, rFormula, eGrammar)); +} + +void ScDocumentImport::setFormulaCell(const ScAddress& rPos, const ScTokenArray& rArray) +{ + insertCell(rPos, new ScFormulaCell(&mrDoc, rPos, &rArray)); +} + +void ScDocumentImport::insertCell(const ScAddress& rPos, ScBaseCell* pCell) +{ + if (!mrDoc.TableExists(rPos.Tab())) + { + pCell->Delete(); + return; + } + + ScColumn& rCol = mrDoc.maTabs[rPos.Tab()]->aCol[rPos.Col()]; + rCol.SetCell(rPos.Row(), pCell); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |