diff options
author | Muthu Subramanian <sumuthu@suse.com> | 2013-07-09 13:31:16 +0530 |
---|---|---|
committer | Muthu Subramanian <sumuthu@suse.com> | 2013-07-09 13:43:15 +0530 |
commit | 7da06efd74be6500895bab6e5e8ed485914ff45e (patch) | |
tree | fbce788eca9357990907977fdcf4a134b030bbaf /sc/source | |
parent | 00d8a4071628a88465f13d2e860ccd87c3a85b9e (diff) |
n#819822: XLSX Chart import with internal data table.
When the import with xlsx ranges fail - try with
internal data table.
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/filter/inc/excelfilter.hxx | 1 | ||||
-rw-r--r-- | sc/source/filter/inc/workbookhelper.hxx | 4 | ||||
-rw-r--r-- | sc/source/filter/oox/excelfilter.cxx | 5 | ||||
-rw-r--r-- | sc/source/filter/oox/workbookhelper.cxx | 21 |
4 files changed, 27 insertions, 4 deletions
diff --git a/sc/source/filter/inc/excelfilter.hxx b/sc/source/filter/inc/excelfilter.hxx index 5aa33104b6e0..c368792fbb19 100644 --- a/sc/source/filter/inc/excelfilter.hxx +++ b/sc/source/filter/inc/excelfilter.hxx @@ -48,6 +48,7 @@ public: virtual ::oox::vml::Drawing* getVmlDrawing(); virtual const ::oox::drawingml::table::TableStyleListPtr getTableStyles(); virtual ::oox::drawingml::chart::ChartConverter* getChartConverter(); + virtual void useInternalChartDataTable( bool bInternal ); virtual sal_Bool SAL_CALL filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rDescriptor ) throw( ::com::sun::star::uno::RuntimeException ); diff --git a/sc/source/filter/inc/workbookhelper.hxx b/sc/source/filter/inc/workbookhelper.hxx index fa1ce19529b6..f4ce1cc1e37c 100644 --- a/sc/source/filter/inc/workbookhelper.hxx +++ b/sc/source/filter/inc/workbookhelper.hxx @@ -23,6 +23,7 @@ #include <boost/shared_ptr.hpp> #include <rtl/ref.hxx> #include "oox/helper/storagebase.hxx" +#include "oox/drawingml/chart/chartconverter.hxx" #include "biffhelper.hxx" #include "rangenam.hxx" @@ -144,6 +145,7 @@ public: void setCurrentSheetIndex( sal_Int16 nSheet ); /** Final conversion after importing the workbook. */ void finalizeWorkbookImport(); + void useInternalChartDataTable( bool bInternal ); // document model --------------------------------------------------------- ScDocument& getScDocument() const; @@ -248,7 +250,7 @@ public: /** Returns the converter for string to cell address/range conversion. */ AddressConverter& getAddressConverter() const; /** Returns the chart object converter. */ - ExcelChartConverter* getChartConverter() const; + oox::drawingml::chart::ChartConverter* getChartConverter() const; /** Returns the page and print settings converter. */ PageSettingsConverter& getPageSettingsConverter() const; diff --git a/sc/source/filter/oox/excelfilter.cxx b/sc/source/filter/oox/excelfilter.cxx index 1c74d360fb34..dc6fadb849ff 100644 --- a/sc/source/filter/oox/excelfilter.cxx +++ b/sc/source/filter/oox/excelfilter.cxx @@ -149,6 +149,11 @@ const TableStyleListPtr ExcelFilter::getTableStyles() return WorkbookHelper( getWorkbookGlobals() ).getChartConverter(); } +void ExcelFilter::useInternalChartDataTable( bool bInternal ) +{ + return WorkbookHelper( getWorkbookGlobals() ).useInternalChartDataTable( bInternal ); +} + GraphicHelper* ExcelFilter::implCreateGraphicHelper() const { return new ExcelGraphicHelper( getWorkbookGlobals() ); diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index 5e9b39f16d1c..37d5191e3a93 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -178,6 +178,8 @@ public: Reference< XDatabaseRange > createUnnamedDatabaseRangeObject( const CellRangeAddress& rRangeAddr ) const; /** Creates and returns a com.sun.star.style.Style object for cells or pages. */ Reference< XStyle > createStyleObject( OUString& orStyleName, bool bPageStyle ) const; + /** Helper to switch chart data table - specifically for xlsx imports */ + void useInternalChartDataTable( bool bInternal ); // buffers ---------------------------------------------------------------- @@ -218,7 +220,7 @@ public: /** Returns the converter for string to cell address/range conversion. */ inline AddressConverter& getAddressConverter() const { return *mxAddrConverter; } /** Returns the chart object converter. */ - inline ExcelChartConverter* getChartConverter() const { return mxChartConverter.get(); } + inline oox::drawingml::chart::ChartConverter* getChartConverter() const { return mxChartConverter.get(); } /** Returns the page/print settings converter. */ inline PageSettingsConverter& getPageSettingsConverter() const { return *mxPageSettConverter; } @@ -262,7 +264,7 @@ private: typedef ::std::auto_ptr< FormulaParser > FormulaParserPtr; typedef ::std::auto_ptr< UnitConverter > UnitConvPtr; typedef ::std::auto_ptr< AddressConverter > AddressConvPtr; - typedef ::std::auto_ptr< ExcelChartConverter > ExcelChartConvPtr; + typedef ::std::auto_ptr< oox::drawingml::chart::ChartConverter > ExcelChartConvPtr; typedef ::std::auto_ptr< PageSettingsConverter > PageSettConvPtr; typedef ::std::auto_ptr< BiffCodecHelper > BiffCodecHelperPtr; @@ -506,6 +508,14 @@ Reference< XStyle > WorkbookGlobals::createStyleObject( OUString& orStyleName, b return xStyle; } +void WorkbookGlobals::useInternalChartDataTable( bool bInternal ) +{ + if( bInternal ) + mxChartConverter.reset( new oox::drawingml::chart::ChartConverter() ); + else + mxChartConverter.reset( new ExcelChartConverter( *this ) ); +} + // BIFF specific -------------------------------------------------------------- // private -------------------------------------------------------------------- @@ -896,11 +906,16 @@ AddressConverter& WorkbookHelper::getAddressConverter() const return mrBookGlob.getAddressConverter(); } -ExcelChartConverter* WorkbookHelper::getChartConverter() const +oox::drawingml::chart::ChartConverter* WorkbookHelper::getChartConverter() const { return mrBookGlob.getChartConverter(); } +void WorkbookHelper::useInternalChartDataTable( bool bInternal ) +{ + mrBookGlob.useInternalChartDataTable( bInternal ); +} + PageSettingsConverter& WorkbookHelper::getPageSettingsConverter() const { return mrBookGlob.getPageSettingsConverter(); |