add Workbook.Save method
has limited support for paramaters ( only FileName and Format are processed ) Change-Id: I669f264679101ab3697dfaa3a3fb3b2d75f5a14b
This commit is contained in:
@@ -52,6 +52,12 @@ interface XWorkbook
|
|||||||
any Colors( [in] any Index ) raises (com::sun::star::script::BasicErrorException);
|
any Colors( [in] any Index ) raises (com::sun::star::script::BasicErrorException);
|
||||||
void SaveCopyAs( [in] string Filename );
|
void SaveCopyAs( [in] string Filename );
|
||||||
void Protect( [in] any Password );
|
void Protect( [in] any Password );
|
||||||
|
void SaveAs( [in] any FileName, [in] any FileFormat, [in] any Password,
|
||||||
|
[in] any WriteResPassword, [in] any ReadOnlyRecommended,
|
||||||
|
[in] any CreateBackup, [in] any AccessMode,
|
||||||
|
[in] any ConflictResolution, [in] any AddToMru,
|
||||||
|
[in] any TextCodepage, [in] any TextVisualLayout,
|
||||||
|
[in] any Local );
|
||||||
};
|
};
|
||||||
|
|
||||||
}; }; };
|
}; }; };
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include <com/sun/star/frame/XFrame.hpp>
|
#include <com/sun/star/frame/XFrame.hpp>
|
||||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||||
#include <ooo/vba/excel/XlFileFormat.hpp>
|
#include <ooo/vba/excel/XlFileFormat.hpp>
|
||||||
|
#include <ooo/vba/excel/XApplication.hpp>
|
||||||
|
|
||||||
#include "scextopt.hxx"
|
#include "scextopt.hxx"
|
||||||
#include "vbaworksheet.hxx"
|
#include "vbaworksheet.hxx"
|
||||||
@@ -93,6 +94,48 @@ ScVbaWorkbook::Colors( const ::uno::Any& Index ) throw (::script::BasicErrorExce
|
|||||||
return aRet;
|
return aRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ScVbaWorkbook::setFilterPropsFromFormat( sal_Int32 nFormat, uno::Sequence< beans::PropertyValue >& rProps )
|
||||||
|
{
|
||||||
|
bool bRes = false;
|
||||||
|
for ( sal_Int32 index = 0; index < rProps.getLength(); ++index )
|
||||||
|
{
|
||||||
|
if ( rProps[ index ].Name == "FilterName" )
|
||||||
|
{
|
||||||
|
switch( nFormat )
|
||||||
|
{
|
||||||
|
case excel::XlFileFormat::xlCSV:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("Text - txt - csv (StarCalc)") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlDBF4:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("DBF") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlDIF:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("DIF") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlWK3:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("Lotus") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlExcel4Workbook:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("MS Excel 4.0") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlExcel5:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("MS Excel 5.0/95") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlHtml:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("HTML (StarCalc)") );
|
||||||
|
break;
|
||||||
|
case excel::XlFileFormat::xlExcel9795:
|
||||||
|
default:
|
||||||
|
rProps[ index ].Value = uno::Any( OUString("MS Excel 97") );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bRes = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bRes;
|
||||||
|
}
|
||||||
|
|
||||||
::sal_Int32 SAL_CALL
|
::sal_Int32 SAL_CALL
|
||||||
ScVbaWorkbook::getFileFormat( ) throw (::uno::RuntimeException)
|
ScVbaWorkbook::getFileFormat( ) throw (::uno::RuntimeException)
|
||||||
{
|
{
|
||||||
@@ -262,6 +305,55 @@ ScVbaWorkbook::SaveCopyAs( const OUString& sFileName ) throw ( uno::RuntimeExcep
|
|||||||
xStor->storeToURL( aURL, storeProps );
|
xStor->storeToURL( aURL, storeProps );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SAL_CALL
|
||||||
|
ScVbaWorkbook::SaveAs( const uno::Any& FileName, const uno::Any& FileFormat, const uno::Any& /*Password*/, const uno::Any& /*WriteResPassword*/, const uno::Any& /*ReadOnlyRecommended*/, const uno::Any& /*CreateBackup*/, const uno::Any& /*AccessMode*/, const uno::Any& /*ConflictResolution*/, const uno::Any& /*AddToMru*/, const uno::Any& /*TextCodepage*/, const uno::Any& /*TextVisualLayout*/, const uno::Any& /*Local*/ )
|
||||||
|
{
|
||||||
|
OUString sFileName;
|
||||||
|
FileName >>= sFileName;
|
||||||
|
OUString sURL;
|
||||||
|
osl::FileBase::getFileURLFromSystemPath( sFileName, sURL );
|
||||||
|
// detect if there is no path if there is no path then we need
|
||||||
|
// to use the current current folder
|
||||||
|
INetURLObject aURL( sURL );
|
||||||
|
sURL = aURL.GetMainURL( INetURLObject::DECODE_TO_IURI );
|
||||||
|
if( sURL.isEmpty() )
|
||||||
|
{
|
||||||
|
// need to add cur dir ( of this workbook ) or else the 'Work' dir
|
||||||
|
sURL = getModel()->getURL();
|
||||||
|
|
||||||
|
if ( sURL.isEmpty() )
|
||||||
|
{
|
||||||
|
// not path available from 'this' document
|
||||||
|
// need to add the 'document'/work directory then
|
||||||
|
uno::Reference< excel::XApplication > xApplication ( Application(),uno::UNO_QUERY_THROW );
|
||||||
|
OUString sWorkPath = xApplication->getDefaultFilePath();
|
||||||
|
OUString sWorkURL;
|
||||||
|
osl::FileBase::getFileURLFromSystemPath( sWorkPath, sWorkURL );
|
||||||
|
aURL.SetURL( sWorkURL );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aURL.SetURL( sURL );
|
||||||
|
aURL.Append( sFileName );
|
||||||
|
}
|
||||||
|
sURL = aURL.GetMainURL( INetURLObject::DECODE_TO_IURI );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sal_Int32 nFileFormat = excel::XlFileFormat::xlExcel9795;
|
||||||
|
FileFormat >>= nFileFormat;
|
||||||
|
|
||||||
|
uno::Sequence< beans::PropertyValue > storeProps(1);
|
||||||
|
storeProps[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
|
||||||
|
|
||||||
|
setFilterPropsFromFormat( nFileFormat, storeProps );
|
||||||
|
|
||||||
|
uno::Reference< frame::XStorable > xStor( getModel(), uno::UNO_QUERY_THROW );
|
||||||
|
OUString sFilterName;
|
||||||
|
storeProps[0].Value >>= sFilterName;
|
||||||
|
xStor->storeAsURL( sURL, storeProps );
|
||||||
|
}
|
||||||
|
|
||||||
css::uno::Any SAL_CALL
|
css::uno::Any SAL_CALL
|
||||||
ScVbaWorkbook::Styles( const uno::Any& Item ) throw (uno::RuntimeException)
|
ScVbaWorkbook::Styles( const uno::Any& Item ) throw (uno::RuntimeException)
|
||||||
{
|
{
|
||||||
|
@@ -29,6 +29,7 @@ typedef cppu::ImplInheritanceHelper1< VbaDocumentBase, ov::excel::XWorkbook > Sc
|
|||||||
class ScVbaWorkbook : public ScVbaWorkbook_BASE
|
class ScVbaWorkbook : public ScVbaWorkbook_BASE
|
||||||
{
|
{
|
||||||
static css::uno::Sequence< sal_Int32 > ColorData;
|
static css::uno::Sequence< sal_Int32 > ColorData;
|
||||||
|
bool setFilterPropsFromFormat( sal_Int32 nFormat, css::uno::Sequence< css::beans::PropertyValue >& rProps );
|
||||||
void initColorData( const css::uno::Sequence< sal_Int32 >& sColors );
|
void initColorData( const css::uno::Sequence< sal_Int32 >& sColors );
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
@@ -50,6 +51,7 @@ public:
|
|||||||
virtual css::uno::Any SAL_CALL Windows( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
|
virtual css::uno::Any SAL_CALL Windows( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
|
||||||
virtual void SAL_CALL Activate() throw (css::uno::RuntimeException);
|
virtual void SAL_CALL Activate() throw (css::uno::RuntimeException);
|
||||||
virtual void SAL_CALL Protect( const css::uno::Any & aPassword ) throw (css::uno::RuntimeException);
|
virtual void SAL_CALL Protect( const css::uno::Any & aPassword ) throw (css::uno::RuntimeException);
|
||||||
|
virtual void SAL_CALL SaveAs( const css::uno::Any& FileName, const css::uno::Any& FileFormat, const css::uno::Any& Password, const css::uno::Any& WriteResPassword, const css::uno::Any& ReadOnlyRecommended, const css::uno::Any& CreateBackup, const css::uno::Any& AccessMode, const css::uno::Any& ConflictResolution, const css::uno::Any& AddToMru, const css::uno::Any& TextCodepage, const css::uno::Any& TextVisualLayout, const css::uno::Any& Local );
|
||||||
virtual css::uno::Any SAL_CALL Names( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
|
virtual css::uno::Any SAL_CALL Names( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
|
||||||
|
|
||||||
virtual css::uno::Any SAL_CALL Styles( const css::uno::Any& Item ) throw (css::uno::RuntimeException);
|
virtual css::uno::Any SAL_CALL Styles( const css::uno::Any& Item ) throw (css::uno::RuntimeException);
|
||||||
|
Reference in New Issue
Block a user