summaryrefslogtreecommitdiff
path: root/sc/source/core/data/documentimport.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core/data/documentimport.cxx')
-rw-r--r--sc/source/core/data/documentimport.cxx104
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: */