138d50f7bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 338d50f7bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 438d50f7bSAndrew Rist * or more contributor license agreements. See the NOTICE file 538d50f7bSAndrew Rist * distributed with this work for additional information 638d50f7bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 738d50f7bSAndrew Rist * to you under the Apache License, Version 2.0 (the 838d50f7bSAndrew Rist * "License"); you may not use this file except in compliance 938d50f7bSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 1138d50f7bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 1338d50f7bSAndrew Rist * Unless required by applicable law or agreed to in writing, 1438d50f7bSAndrew Rist * software distributed under the License is distributed on an 1538d50f7bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1638d50f7bSAndrew Rist * KIND, either express or implied. See the License for the 1738d50f7bSAndrew Rist * specific language governing permissions and limitations 1838d50f7bSAndrew Rist * under the License. 19cdf0e10cSrcweir * 2038d50f7bSAndrew Rist *************************************************************/ 2138d50f7bSAndrew Rist 2238d50f7bSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SC_FILTER_HXX 25cdf0e10cSrcweir #define SC_FILTER_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <tools/string.hxx> 28cdf0e10cSrcweir #include <rtl/textenc.h> 29cdf0e10cSrcweir 30cdf0e10cSrcweir #define ENABLE_LOTUS123_EXPORT 0 31cdf0e10cSrcweir 32cdf0e10cSrcweir class SfxMedium; 33cdf0e10cSrcweir class SvStream; 34cdf0e10cSrcweir 35cdf0e10cSrcweir class ScAddress; 36cdf0e10cSrcweir class ScDocument; 37cdf0e10cSrcweir class ScRange; 38cdf0e10cSrcweir class SvNumberFormatter; 39cdf0e10cSrcweir 40cdf0e10cSrcweir // Return-Werte Im-/Exportfilter (sal_uLong) 41cdf0e10cSrcweir 42cdf0e10cSrcweir typedef sal_uLong FltError; 43cdf0e10cSrcweir //enum FltError { 44cdf0e10cSrcweir 45cdf0e10cSrcweir #define eERR_OK ERRCODE_NONE // kein Fehler, alles OK 46cdf0e10cSrcweir #define eERR_OPEN SCERR_IMPORT_OPEN // ... 47cdf0e10cSrcweir #define eERR_UNBEK SCERR_IMPORT_UNKNOWN // unbekannter Fehler, auch historische Bedeutung 48cdf0e10cSrcweir #define eERR_NOMEM SCERR_IMPORT_OUTOFMEM // nicht mehr genuegend Speicher zur Verfuegung 49cdf0e10cSrcweir #define eERR_UNKN_WK SCERR_IMPORT_UNKNOWN_WK // unbekanntes WK?-Format (Lotus 1-2-3) 50cdf0e10cSrcweir #define eERR_FORMAT SCERR_IMPORT_FORMAT // Formatfehler beim Lesen (kein Formel-Fehler!) 51cdf0e10cSrcweir #define eERR_NI SCERR_IMPORT_NI // Nicht implementierter Filter 52cdf0e10cSrcweir #define eERR_UNKN_BIFF SCERR_IMPORT_UNKNOWN_BIFF // unbekanntes BIFF-Format (Excel) 53cdf0e10cSrcweir #define eERR_NI_BIFF SCERR_IMPORT_NI_BIFF // nicht implementiertes BIFF-Format 54cdf0e10cSrcweir #define eERR_FILEPASSWD SCERR_IMPORT_FILEPASSWD // File Passwordgeschuetzt 55cdf0e10cSrcweir #define eERR_INTERN SCERR_IMPORT_INTERNAL // interner Fehler 56cdf0e10cSrcweir #define eERR_RNGOVRFLW SCWARN_IMPORT_RANGE_OVERFLOW// ueberlauf der Zellkoordinaten: 57cdf0e10cSrcweir // Tabelle abgschnitten auf erlaubtem Bereich 58cdf0e10cSrcweir // mehr Fehlercodes siehe scerrors.hxx 59cdf0e10cSrcweir 60cdf0e10cSrcweir // }; 61cdf0e10cSrcweir 62cdf0e10cSrcweir 63cdf0e10cSrcweir // fuer Import 64cdf0e10cSrcweir enum EXCIMPFORMAT { EIF_AUTO, EIF_BIFF5, EIF_BIFF8, EIF_BIFF_LE4 }; 65cdf0e10cSrcweir 66cdf0e10cSrcweir // fuer Export 67cdf0e10cSrcweir enum ExportFormatLotus { ExpWK1, ExpWK3, ExpWK4 }; 68cdf0e10cSrcweir enum ExportFormatExcel { ExpBiff2, ExpBiff3, ExpBiff4, ExpBiff4W, ExpBiff5, ExpBiff8, Exp2007Xml }; 69cdf0e10cSrcweir 70cdf0e10cSrcweir 71cdf0e10cSrcweir // Optionen fuer DIF-Im-/Export (Kombination ueber '|') 72cdf0e10cSrcweir #define SC_DIFOPT_PLAIN 0x00000000 73cdf0e10cSrcweir #define SC_DIFOPT_DATE 0x00000001 74cdf0e10cSrcweir #define SC_DIFOPT_TIME 0x00000002 75cdf0e10cSrcweir #define SC_DIFOPT_CURRENCY 0x00000004 76cdf0e10cSrcweir 77cdf0e10cSrcweir #define SC_DIFOPT_EXCEL (SC_DIFOPT_DATE|SC_DIFOPT_TIME|SC_DIFOPT_CURRENCY) 78cdf0e10cSrcweir 79cdf0e10cSrcweir // These are implemented inside the scfilt library and lazy loaded 80cdf0e10cSrcweir 81cdf0e10cSrcweir class ScRTFImport; 82cdf0e10cSrcweir class ScHTMLImport; 83cdf0e10cSrcweir 84cdf0e10cSrcweir class ScEEAbsImport { 85cdf0e10cSrcweir public: ~ScEEAbsImport()86cdf0e10cSrcweir virtual ~ScEEAbsImport() {} 87cdf0e10cSrcweir virtual sal_uLong Read( SvStream& rStream, const String& rBaseURL ) = 0; 88cdf0e10cSrcweir virtual ScRange GetRange() = 0; 89cdf0e10cSrcweir virtual void WriteToDocument( 90cdf0e10cSrcweir sal_Bool bSizeColsRows = sal_False, double nOutputFactor = 1.0, 91cdf0e10cSrcweir SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true ) = 0; 92cdf0e10cSrcweir }; 93cdf0e10cSrcweir 94cdf0e10cSrcweir class ScFormatFilterPlugin { 95cdf0e10cSrcweir public: 96cdf0e10cSrcweir // various import filters 97cdf0e10cSrcweir virtual FltError ScImportLotus123( SfxMedium&, ScDocument*, CharSet eSrc = RTL_TEXTENCODING_DONTKNOW ) = 0; 98cdf0e10cSrcweir virtual FltError ScImportQuattroPro( SfxMedium &rMedium, ScDocument *pDoc ) = 0; 99cdf0e10cSrcweir virtual FltError ScImportExcel( SfxMedium&, ScDocument*, const EXCIMPFORMAT ) = 0; 100cdf0e10cSrcweir // eFormat == EIF_AUTO -> passender Filter wird automatisch verwendet 101cdf0e10cSrcweir // eFormat == EIF_BIFF5 -> nur Biff5-Stream fuehrt zum Erfolg (auch wenn in einem Excel97-Doc) 102cdf0e10cSrcweir // eFormat == EIF_BIFF8 -> nur Biff8-Stream fuehrt zum Erfolg (nur in Excel97-Docs) 103cdf0e10cSrcweir // eFormat == EIF_BIFF_LE4 -> nur Nicht-Storage-Dateien _koennen_ zum Erfolg fuehren 104cdf0e10cSrcweir virtual FltError ScImportStarCalc10( SvStream&, ScDocument* ) = 0; 105cdf0e10cSrcweir virtual FltError ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos, 106cdf0e10cSrcweir const CharSet eSrc = RTL_TEXTENCODING_DONTKNOW, sal_uInt32 nDifOption = SC_DIFOPT_EXCEL ) = 0; 107cdf0e10cSrcweir virtual FltError ScImportRTF( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange ) = 0; 108cdf0e10cSrcweir virtual FltError ScImportHTML( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor = 1.0, 109cdf0e10cSrcweir sal_Bool bCalcWidthHeight = sal_True, SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true ) = 0; 110cdf0e10cSrcweir 111cdf0e10cSrcweir // various import helpers 112cdf0e10cSrcweir virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange ) = 0; 113cdf0e10cSrcweir virtual ScEEAbsImport *CreateHTMLImport( ScDocument* pDocP, const String& rBaseURL, const ScRange& rRange, sal_Bool bCalcWidthHeight ) = 0; 114cdf0e10cSrcweir virtual String GetHTMLRangeNameList( ScDocument* pDoc, const String& rOrigName ) = 0; 115cdf0e10cSrcweir 116cdf0e10cSrcweir // various export filters 117cdf0e10cSrcweir #if ENABLE_LOTUS123_EXPORT 118cdf0e10cSrcweir virtual FltError ScExportLotus123( SvStream&, ScDocument*, ExportFormatLotus, CharSet eDest ) = 0; 119cdf0e10cSrcweir #endif 120cdf0e10cSrcweir virtual FltError ScExportExcel5( SfxMedium&, ScDocument*, ExportFormatExcel eFormat, CharSet eDest ) = 0; 121cdf0e10cSrcweir virtual FltError ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const CharSet eDest, 122cdf0e10cSrcweir sal_uInt32 nDifOption = SC_DIFOPT_EXCEL ) = 0; 123cdf0e10cSrcweir virtual FltError ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest, 124cdf0e10cSrcweir sal_uInt32 nDifOption = SC_DIFOPT_EXCEL ) = 0; 125cdf0e10cSrcweir virtual FltError ScExportHTML( SvStream&, const String& rBaseURL, ScDocument*, const ScRange& rRange, const CharSet eDest, sal_Bool bAll, 126cdf0e10cSrcweir const String& rStreamPath, String& rNonConvertibleChars ) = 0; 127cdf0e10cSrcweir virtual FltError ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest ) = 0; 128cdf0e10cSrcweir }; 129cdf0e10cSrcweir 130cdf0e10cSrcweir // scfilt plugin symbol 131cdf0e10cSrcweir extern "C" { 132*544d4cdbSOliver-Rainer Wittmann SAL_DLLPUBLIC_EXPORT ScFormatFilterPlugin * SAL_CALL ScFilterCreate(void); 133cdf0e10cSrcweir } 134cdf0e10cSrcweir 135cdf0e10cSrcweir class ScFormatFilter { 136cdf0e10cSrcweir public: 137cdf0e10cSrcweir static ScFormatFilterPlugin &Get(); 138cdf0e10cSrcweir }; 139cdf0e10cSrcweir 140cdf0e10cSrcweir #endif 141cdf0e10cSrcweir 142