COM programming: Interfaces and methods

import "oaidl.idl";
import "ocidl.idl";
	[
		helpstring("IXBaseParams Interface"),
		pointer_default(unique)
	]
	interface IXBaseParams : IDispatch
	{
		[propget, id(1), helpstring("property format")] HRESULT format([out, retval] BSTR *pFormat);
		[propput, id(1), helpstring("property format")] HRESULT format([in] BSTR format);

		[propget, id(2), helpstring("property encoding")] HRESULT encoding([out, retval] BSTR *pEncoding);
		[propput, id(2), helpstring("property encoding")] HRESULT encoding([in] BSTR encoding);

		[id(3), helpstring("method GetFieldCount")] HRESULT GetFieldCount([out, retval] int *pCounter);

		[id(4), helpstring("method SetField")] HRESULT SetField([in] int index, [in] BSTR name, [in] BSTR type, [in] int length, [in] int decimals);
		[id(5), helpstring("method AddField")] HRESULT AddField([in] BSTR name, [in] BSTR type, [in] int length, [in] int decimals);
		[id(6), helpstring("method InsertField")] HRESULT InsertField([in] int index, [in] BSTR name, [in] BSTR type, [in] int length, [in] int decimals);

		[id(7), helpstring("method GetFieldName")] HRESULT GetFieldName([in] int index, [out, retval] BSTR *pName);
		[id(8), helpstring("method GetFieldType")] HRESULT GetFieldType([in] int index, [out, retval] BSTR *pType);
		[id(9), helpstring("method GetFieldLength")] HRESULT GetFieldLength([in] int index, [out, retval] int *pLength);
		[id(10), helpstring("method GetFieldDecimals")] HRESULT GetFieldDecimals([in] int index, [out, retval] int *pDecimals);

		[id(11), helpstring("method DeleteField")] HRESULT DeleteField([in] int index);
	};

	[
		dual,
		helpstring("ITextParams Interface"),
		pointer_default(unique)
	]
	interface ITextParams : IDispatch
	{
		[propget, id(1), helpstring("property separator")] HRESULT separator([out, retval] BSTR *pSeparator);
		[propput, id(1), helpstring("property separator")] HRESULT separator([in] BSTR separator);

		[propget, id(2), helpstring("property encoding")] HRESULT encoding([out, retval] BSTR *pEncoding);
		[propput, id(2), helpstring("property encoding")] HRESULT encoding([in] BSTR encoding);

		[propget, id(3), helpstring("property quotingSymbol")] HRESULT quotingSymbol([out, retval] BSTR *pSymbol);
		[propput, id(3), helpstring("property quotingSymbol")] HRESULT quotingSymbol([in] BSTR symbol);

		[propget, id(4), helpstring("property loadNumbers")] HRESULT loadNumbers([out, retval] BOOL *pValue);
		[propput, id(4), helpstring("property loadNumbers")] HRESULT loadNumbers([in] BOOL value);

		[propget, id(5), helpstring("property loadFmtNumbers")] HRESULT loadFmtNumbers([out, retval] BOOL *pValue);
		[propput, id(5), helpstring("property loadFmtNumbers")] HRESULT loadFmtNumbers([in] BOOL value);

		[propget, id(6), helpstring("property loadDates")] HRESULT loadDates([out, retval] BOOL *pValue);
		[propput, id(6), helpstring("property loadDates")] HRESULT loadDates([in] BOOL value);

		[propget, id(7), helpstring("property loadDateStyles")] HRESULT loadDateStyles([out, retval] BOOL *pValue);
		[propput, id(7), helpstring("property loadDateStyles")] HRESULT loadDateStyles([in] BOOL value);

		[propget, id(8), helpstring("property parsingMode")] HRESULT parsingMode([out, retval] int *pParsing);
		[propput, id(8), helpstring("property parsingMode")] HRESULT parsingMode([in] int parsing);

		[propget, id(9), helpstring("property columnWidths")] HRESULT columnWidths([out, retval] BSTR *pColumnWidths);
		[propput, id(9), helpstring("property columnWidths")] HRESULT columnWidths([in] BSTR columnWidths);

		[propget, id(10), helpstring("property saveFmtNumbers")] HRESULT saveFmtNumbers([out, retval] BOOL *pValue);
		[propput, id(10), helpstring("property saveFmtNumbers")] HRESULT saveFmtNumbers([in] BOOL value);

		[propget, id(11), helpstring("property saveFmtDates")] HRESULT saveFmtDates([out, retval] BOOL *pValue);
		[propput, id(11), helpstring("property saveFmtDates")] HRESULT saveFmtDates([in] BOOL value);

		[propget, id(12), helpstring("property saveFormulaValues")] HRESULT saveFormulaValues([out, retval] BOOL *pValue);
		[propput, id(12), helpstring("property saveFormulaValues")] HRESULT saveFormulaValues([in] BOOL value);

		[propget, id(15), helpstring("property autoFitColumns")] HRESULT autoFitColumns([out, retval] BOOL* pValue);
		[propput, id(15), helpstring("property autoFitColumns")] HRESULT autoFitColumns([in] BOOL value);
	};

	[
		dual,
		helpstring("IMergeParams Interface"),
		pointer_default(unique)
	]
	interface IMergeParams : IDispatch
	{
		[propput, id(1), helpstring("property path pattern")] HRESULT path([in] BSTR val);
		[propget, id(1), helpstring("property path pattern")] HRESULT path([out, retval] BSTR* val);

		[propput, id(2), helpstring("property table name")] HRESULT table([in] BSTR val);
		[propget, id(2), helpstring("property table name")] HRESULT table([out, retval] BSTR* val);

		[propput, id(3), helpstring("property master field index")] HRESULT masterField([in] int field);
		[propget, id(3), helpstring("property master field index")] HRESULT masterField([out, retval] int* field);

		[propput, id(4), helpstring("property slave field index")] HRESULT slaveField([in] int field);
		[propget, id(4), helpstring("property slave field index")] HRESULT slaveField([out, retval] int* field);

		[propput, id(5), helpstring("property merge type")] HRESULT mergeType([in] int val);
		[propget, id(5), helpstring("property merge type")] HRESULT mergeType([out, retval] int* val);

		[propput, id(11), helpstring("property namesInTopRow")] HRESULT fieldNames([in] BOOL val);
		[propget, id(11), helpstring("property namesInTopRow")] HRESULT fieldNames([out, retval] BOOL* val);

		[propput, id(6), helpstring("property matchFieldNames")] HRESULT matchFieldNames([in] int val);
		[propget, id(6), helpstring("property matchFieldNames")] HRESULT matchFieldNames([out, retval] int* val);

		[propput, id(7), helpstring("property ignore empty fields")] HRESULT ignoreEmpty([in] BOOL val);
		[propget, id(7), helpstring("property ignore empty fields")] HRESULT ignoreEmpty([out, retval] BOOL* val);

		[propput, id(8), helpstring("property allow undo")] HRESULT enableUndo([in] BOOL val);
		[propget, id(8), helpstring("property allow undo")] HRESULT enableUndo([out, retval] BOOL* val);
	};

	[
		dual,
		helpstring("IFormatParams Interface"),
		pointer_default(unique)
	]
	interface IFormatParams : IDispatch
	{
		[propget, id(1), helpstring("property dataStyleName")] HRESULT dataStyleName([out, retval] BSTR *pName);
		[propput, id(1), helpstring("property dataStyleName")] HRESULT dataStyleName([in] BSTR name);

		[id(2), helpstring("method SetGeneralNumberFormat")] HRESULT SetGeneralNumberFormat([in] BSTR decimals, [in] BYTE zeroes, [in] BOOL brackets, [in] BOOL inRed, [in] BOOL separators, [in] int scaling);
		[id(3), helpstring("method SetCurrencyFormat")] HRESULT SetCurrencyFormat([in] BSTR decimals, [in] BSTR position, [in] BSTR symbol, [in] BOOL brackets, [in] BOOL inRed, [in] int scaling);
		[id(4), helpstring("method SetAccountingFormat")] HRESULT SetAccountingFormat([in] BSTR decimals, [in] BSTR symbol, [in] int scaling);
		[id(5), helpstring("method SetDateFormat")] HRESULT SetDateFormat([in] BSTR pattern, [in] BOOL systemOrder);
		[id(6), helpstring("method SetTimeFormat")] HRESULT SetTimeFormat([in] BSTR pattern);
		[id(7), helpstring("method SetDateTimeFormat")] HRESULT SetDateTimeFormat([in] BSTR datePattern, [in] BSTR timePattern, [in] BOOL systemOrder, [in] BOOL timeFirst);
		[id(8), helpstring("method SetPercentFormat")] HRESULT SetPercentFormat([in] BSTR decimals, [in] int scaling);
		[id(9), helpstring("method SetFractionFormat")] HRESULT SetFractionFormat([in] long denominator, [in] BOOL digits);
		[id(10), helpstring("method SetScientificFormat")] HRESULT SetScientificFormat([in] BSTR decimals, [in] BSTR exponent);

		[propget, id(11), helpstring("property fontName")] HRESULT fontName([out, retval] BSTR *pVal);
		[propput, id(11), helpstring("property fontName")] HRESULT fontName([in] BSTR newVal);
		[propget, id(12), helpstring("property fontSize")] HRESULT fontSize([out, retval] int *pVal);
		[propput, id(12), helpstring("property fontSize")] HRESULT fontSize([in] int newVal);

		[propget, id(13), helpstring("property language")] HRESULT language([out, retval] BSTR *pLanguage);
		[propput, id(13), helpstring("property language")] HRESULT language([in] BSTR language);

		[propget, id(14), helpstring("property boldFont")] HRESULT boldFont([out, retval] BOOL *pVal);
		[propput, id(14), helpstring("property boldFont")] HRESULT boldFont([in] BOOL newVal);
		[propget, id(15), helpstring("property italicFont")] HRESULT italicFont([out, retval] BOOL *pVal);
		[propput, id(15), helpstring("property italicFont")] HRESULT italicFont([in] BOOL newVal);
		[propget, id(16), helpstring("property underlineFont")] HRESULT underlineFont([out, retval] BOOL *pVal);
		[propput, id(16), helpstring("property underlineFont")] HRESULT underlineFont([in] BOOL newVal);
		[propget, id(17), helpstring("property strikeoutFont")] HRESULT strikeoutFont([out, retval] BOOL *pVal);
		[propput, id(17), helpstring("property strikeoutFont")] HRESULT strikeoutFont([in] BOOL newVal);
		[propget, id(18), helpstring("property fontColor")] HRESULT fontColor([out, retval] BSTR *pColor);
		[propput, id(18), helpstring("property fontColor")] HRESULT fontColor([in] BSTR color);

		[propget, id(19), helpstring("property horzAlignment")] HRESULT horzAlignment([out, retval] BSTR *pHorzAlign);
		[propput, id(19), helpstring("property horzAlignment")] HRESULT horzAlignment([in] BSTR horzAlign);
		[propget, id(20), helpstring("property vertAlignment")] HRESULT vertAlignment([out, retval] BSTR *pVertAlign);
		[propput, id(20), helpstring("property vertAlignment")] HRESULT vertAlignment([in] BSTR vertAlign);

		[propget, id(21), helpstring("property horzIndent")] HRESULT horzIndent([out, retval] int *pIndent);
		[propput, id(21), helpstring("property horzIndent")] HRESULT horzIndent([in] int indent);
		[propget, id(22), helpstring("property vertIndent")] HRESULT vertIndent([out, retval] int *pIndent);
		[propput, id(22), helpstring("property vertIndent")] HRESULT vertIndent([in] int indent);

		[propget, id(23), helpstring("property wrapText")] HRESULT wrapText([out, retval] BOOL *pValue);
		[propput, id(23), helpstring("property wrapText")] HRESULT wrapText([in] BOOL value);

		[propget, id(24), helpstring("property shrinkText")] HRESULT shrinkText([out, retval] BOOL *pValue);
		[propput, id(24), helpstring("property shrinkText")] HRESULT shrinkText([in] BOOL value);

		[propget, id(25), helpstring("property textRotation")] HRESULT textRotation([out, retval] int *pRotation);
		[propput, id(25), helpstring("property textRotation")] HRESULT textRotation([in] int rotation);

		[propget, id(26), helpstring("property hideFormula")] HRESULT hideFormula([out, retval] BOOL *pValue);
		[propput, id(26), helpstring("property hideFormula")] HRESULT hideFormula([in] BOOL value);

		[propget, id(27), helpstring("property protectedCell")] HRESULT protectedCell([out, retval] BOOL *pValue);
		[propput, id(27), helpstring("property protectedCell")] HRESULT protectedCell([in] BOOL value);

		[propget, id(28), helpstring("property printedCell")] HRESULT printedCell([out, retval] BOOL *pValue);
		[propput, id(28), helpstring("property printedCell")] HRESULT printedCell([in] BOOL value);

		[propget, id(29), helpstring("property borderStyle")] HRESULT borderStyle([out, retval] BSTR *pStyle);
		[propput, id(29), helpstring("property borderStyle")] HRESULT borderStyle([in] BSTR style);
		[propget, id(30), helpstring("property borderWidth")] HRESULT borderWidth([out, retval] int *width);
		[propput, id(30), helpstring("property borderWidth")] HRESULT borderWidth([in] int width);
		[propget, id(31), helpstring("property borderDoubleLine")] HRESULT borderDoubleLine([out, retval] BOOL *doubleLine);
		[propput, id(31), helpstring("property borderDoubleLine")] HRESULT borderDoubleLine([in] int doubleLine);
		[propget, id(32), helpstring("property borderColor")] HRESULT borderColor([out, retval] BSTR *pColor);
		[propput, id(32), helpstring("property borderColor")] HRESULT borderColor([in] BSTR color);

		[propget, id(33), helpstring("property borderPosition")] HRESULT borderPosition([out, retval] int *pPos);
		[propput, id(33), helpstring("property borderPosition")] HRESULT borderPosition([in] int pos);

		[propget, id(34), helpstring("property bkgColor")] HRESULT bkgColor([out, retval] BSTR *pColor);
		[propput, id(34), helpstring("property bkgColor")] HRESULT bkgColor([in] BSTR color);

		[propget, id(35), helpstring("property bkgImageName")] HRESULT bkgImageName([out, retval] BSTR *pName);
		[propput, id(35), helpstring("property bkgImageName")] HRESULT bkgImageName([in] BSTR name);

		[propget, id(36), helpstring("property bkgImageRepeat")] HRESULT bkgImageRepeat([out, retval] BSTR *pRepeat);
		[propput, id(36), helpstring("property bkgImageRepeat")] HRESULT bkgImageRepeat([in] BSTR repeat);

		[propget, id(37), helpstring("property bkgImageHorzPos")] HRESULT bkgImageHorzPos([out, retval] BSTR *pHorzPos);
		[propput, id(37), helpstring("property bkgImageHorzPos")] HRESULT bkgImageHorzPos([in] BSTR horzPos);

		[propget, id(38), helpstring("property bkgImageVertPos")] HRESULT bkgImageVertPos([out, retval] BSTR *pVertPos);
		[propput, id(38), helpstring("property bkgImageVertPos")] HRESULT bkgImageVertPos([in] BSTR vertPos);

		[propget, id(39), helpstring("property bkgImageOpacity")] HRESULT bkgImageOpacity([out, retval] int *pValue);
		[propput, id(39), helpstring("property bkgImageOpacity")] HRESULT bkgImageOpacity([in] int value);

		//[id(31), helpstring("method GetState")] HRESULT GetState([in] BSTR propName, [out, retval] BYTE *pState);
		[id(40), helpstring("method Reset")] HRESULT Reset();
	};

	[
		dual,
		helpstring("IPrintSettings Interface"),
		pointer_default(unique)
	]
	interface IPrintSettings : IDispatch
	{
		[propget, id(1), helpstring("property printedData")] HRESULT printedData([out, retval] BSTR *data);
		[propput, id(1), helpstring("property printedData")] HRESULT printedData([in] BSTR data);

		[propget, id(2), helpstring("property printedPages")] HRESULT printedPages([out, retval] BSTR *pPages);
		[propput, id(2), helpstring("property printedPages")] HRESULT printedPages([in] BSTR pages);

		[propget, id(3), helpstring("property orientation")] HRESULT orientation([out, retval] BSTR *pOrientation);
		[propput, id(3), helpstring("property orientation")] HRESULT orientation([in] BSTR orientation);

		[propget, id(4), helpstring("property horzPageAlign")] HRESULT horzPageAlign([out, retval] BSTR *pAlignment);
		[propput, id(4), helpstring("property horzPageAlign")] HRESULT horzPageAlign([in] BSTR pAlignment);
		[propget, id(5), helpstring("property vertPageAlign")] HRESULT vertPageAlign([out, retval] BSTR *pAlignment);
		[propput, id(5), helpstring("property vertPageAlign")] HRESULT vertPageAlign([in] BSTR pAlignment);

		[propget, id(6), helpstring("property marginLeft")] HRESULT marginLeft([out, retval] double *pMargin);
		[propput, id(6), helpstring("property marginLeft")] HRESULT marginLeft([in] double margin);
		[propget, id(7), helpstring("property marginTop")] HRESULT marginTop([out, retval] double *pMargin);
		[propput, id(7), helpstring("property marginTop")] HRESULT marginTop([in] double margin);
		[propget, id(8), helpstring("property marginRight")] HRESULT marginRight([out, retval] double *pMargin);
		[propput, id(8), helpstring("property marginRight")] HRESULT marginRight([in] double margin);
		[propget, id(9), helpstring("property marginBottom")] HRESULT marginBottom([out, retval] double *pMargin);
		[propput, id(9), helpstring("property marginBottom")] HRESULT marginBottom([in] double margin);

		[propget, id(10), helpstring("property headerMargin")] HRESULT headerMargin([out, retval] double *pMargin);
		[propput, id(10), helpstring("property headerMargin")] HRESULT headerMargin([in] double margin);
		[propget, id(11), helpstring("property footerMargin")] HRESULT footerMargin([out, retval] double *pMargin);
		[propput, id(11), helpstring("property footerMargin")] HRESULT footerMargin([in] double margin);
		[propget, id(12), helpstring("property header")] HRESULT header([out, retval] BSTR *pText);
		[propput, id(12), helpstring("property header")] HRESULT header([in] BSTR text);
		[propget, id(13), helpstring("property footer")] HRESULT footer([out, retval] BSTR *pText);
		[propput, id(13), helpstring("property footer")] HRESULT footer([in] BSTR text);

		[propget, id(14), helpstring("property scale")] HRESULT scale([out, retval] int *pScale);
		[propput, id(14), helpstring("property scale")] HRESULT scale([in] int scale);

		[propget, id(15), helpstring("property autoFit")] HRESULT autoFit([out, retval] BOOL *pValue);
		[propput, id(15), helpstring("property autoFit")] HRESULT autoFit([in] BOOL value);

		[propget, id(16), helpstring("property printHeadings")] HRESULT printHeadings([out, retval] BOOL *pValue);
		[propput, id(16), helpstring("property printHeadings")] HRESULT printHeadings([in] BOOL value);

		[propget, id(17), helpstring("property printObjects")] HRESULT printObjects([out, retval] BOOL *pValue);
		[propput, id(17), helpstring("property printObjects")] HRESULT printObjects([in] BOOL value);

		[propget, id(18), helpstring("property printGrid")] HRESULT printGrid([out, retval] BOOL *pValue);
		[propput, id(18), helpstring("property printGrid")] HRESULT printGrid([in] BOOL value);

		[propget, id(19), helpstring("property printFormulas")] HRESULT printFormulas([out, retval] BOOL *pValue);
		[propput, id(19), helpstring("property printFormulas")] HRESULT printFormulas([in] BOOL value);

		[propget, id(20), helpstring("property printZeroes")] HRESULT printZeroes([out, retval] BOOL *pValue);
		[propput, id(20), helpstring("property printZeroes")] HRESULT printZeroes([in] BOOL value);

		[propget, id(21), helpstring("property bkgColor")] HRESULT bkgColor([out, retval] BSTR *pValue);
		[propput, id(21), helpstring("property bkgColor")] HRESULT bkgColor([in] BSTR value);

		[propget, id(22), helpstring("property bkgImageName")] HRESULT bkgImageName([out, retval] BSTR *pName);
		[propput, id(22), helpstring("property bkgImageName")] HRESULT bkgImageName([in] BSTR name);

		[propget, id(23), helpstring("property bkgImageRept")] HRESULT bkgImageRept([out, retval] BSTR *pRepeat);
		[propput, id(23), helpstring("property bkgImageRept")] HRESULT bkgImageRept([in] BSTR repeat);

		[propget, id(24), helpstring("property bkgImageHorzPos")] HRESULT bkgImageHorzPos([out, retval] BSTR *pHorzPos);
		[propput, id(24), helpstring("property bkgImageHorzPos")] HRESULT bkgImageHorzPos([in] BSTR horzPos);

		[propget, id(25), helpstring("property bkgImageVertPos")] HRESULT bkgImageVertPos([out, retval] BSTR *pVertPos);
		[propput, id(25), helpstring("property bkgImageVertPos")] HRESULT bkgImageVertPos([in] BSTR vertPos);

		[propget, id(26), helpstring("property bkgImageOpacity")] HRESULT bkgImageOpacity([out, retval] int *pValue);
		[propput, id(26), helpstring("property bkgImageOpacity")] HRESULT bkgImageOpacity([in] int value);
	};

	[
		dual,
		helpstring("IWorksheet Interface"),
		pointer_default(unique)
	]
	interface IWorksheet : IDispatch
	{
		[propget, id(1), helpstring("property selectedRange")] HRESULT selectedRange([out, retval] BSTR *pRange);
		[propput, id(1), helpstring("property selectedRange")] HRESULT selectedRange([in] BSTR range);

		[propget, id(2), helpstring("property topLeftCell")] HRESULT topLeftCell([out, retval] BSTR *pRange);
		[propput, id(2), helpstring("property topLeftCell")] HRESULT topLeftCell([in] BSTR range);

		[id(3), helpstring("method Scroll")] HRESULT Scroll([in] BSTR type, [in] BOOL scrollSelection);

		[id(4), helpstring("method Address")] HRESULT Address([in] int column, [in] int row, [out, retval] BSTR *pCell);

		[id(60), helpstring("method AddressRC")] HRESULT AddressRC([in] __int64 row, [in] unsigned short int column, [out, retval] BSTR* pCell);
		[id(61), helpstring("method AddressExRC")] HRESULT AddressExRC([in] __int64 row, [in] BOOL relativeRow, [in] unsigned short int column, [in] BOOL relativeColumn, [out, retval] BSTR* pCell);

		[id(5), helpstring("method AddressEx")] HRESULT AddressEx([in] int column, [in] BOOL relativeColumn, [in] int row, [in] BOOL relativeRow, [out, retval] BSTR *pCell);
		[id(6), helpstring("method Column")] HRESULT Column([in] BSTR cell, [out, retval] int *pColumn);
		[id(7), helpstring("method Row")] HRESULT Row([in] BSTR cell, [out, retval] int *pRow);

		[id(8), helpstring("method GetFirstColumn")] HRESULT GetFirstColumn([out, retval] unsigned short *pColumn);
		[id(9), helpstring("method GetFirstRow")] HRESULT GetFirstRow([out, retval] unsigned long *pRow);
		[id(10), helpstring("method GetLastColumn")] HRESULT GetLastColumn([out, retval] unsigned short *pColumn);
		[id(11), helpstring("method GetLastRow")] HRESULT GetLastRow([out, retval] unsigned long *pRow);
		[id(12), helpstring("method GetMaxColumn")] HRESULT GetMaxColumn([out, retval] unsigned short *pColumn);
		[id(13), helpstring("method GetMaxRow")] HRESULT GetMaxRow([out, retval] unsigned long *pRow);

		[id(14), helpstring("method CreateFormatParams")] HRESULT CreateFormatParams([out, retval] IFormatParams** ppFormatParams);
		[id(15), helpstring("method GetCellFormat")] HRESULT GetCellFormat([in] IFormatParams* pFormatParams);
		[id(16), helpstring("method GetColumnFormat")] HRESULT GetColumnFormat([in] IFormatParams* pFormatParams);
		[id(17), helpstring("method GetRowFormat")] HRESULT GetRowFormat([in] IFormatParams* pFormatParams);

		[id(18), helpstring("method SetCellFormat")] HRESULT SetCellFormat([in] IFormatParams* pFormatParams);
		[id(19), helpstring("method SetCellCustomStyle")] HRESULT SetCellCustomStyle([in] BSTR name);

		[id(20), helpstring("method DeleteCells")] HRESULT DeleteCells([in] BOOL showDialogBox, [in] BSTR contentType);
		[id(21), helpstring("method CopyCells")] HRESULT CopyCells([in] int copyType);
		[id(22), helpstring("method PasteCells")] HRESULT PasteCells([in] BOOL textAndFormatting);

		[id(23), helpstring("method GetColumnWidth")] HRESULT GetColumnWidth([out, retval] BSTR *pWidth);
		[id(24), helpstring("method SetColumnWidth")] HRESULT SetColumnWidth([in] BSTR width);
		[id(25), helpstring("method GetRowHeight")] HRESULT GetRowHeight([out, retval] BSTR *pHeight);
		[id(26), helpstring("method GetRowHeight")] HRESULT SetRowHeight([in] BSTR height);

		[id(27), helpstring("method InsertColumns")] HRESULT InsertColumns([in] int type);
		[id(28), helpstring("method DeleteColumns")] HRESULT DeleteColumns();
		[id(29), helpstring("method InsertRows")] HRESULT InsertRows([in] int type);
		[id(30), helpstring("method DeleteRows")] HRESULT DeleteRows();

		[id(31), helpstring("method InsertSeries")] HRESULT InsertSeries();

		[id(32), helpstring("method IsText")] HRESULT IsText([in] BSTR cell, [out, retval] BOOL *pValue);
		[id(33), helpstring("method IsNumber")] HRESULT IsNumber([in] BSTR cell, [out, retval] BOOL *pValue);
		[id(34), helpstring("method IsFormula")] HRESULT IsFormula([in] BSTR cell, [out, retval] BOOL *pValue);
		[id(35), helpstring("method IsError")] HRESULT IsError([in] BSTR cell, [out, retval] BYTE *pCode);
		[id(36), helpstring("method InsertData")] HRESULT InsertData([in] BSTR cell, [in] BSTR data, [in] BOOL parse);
		[id(37), helpstring("method InsertComments")] HRESULT InsertComments([in] BSTR cell, [in] BSTR comments);
		[id(38), helpstring("method GetData")] HRESULT GetData([in] BSTR cell, [out, retval] VARIANT *pValue);
		[id(39), helpstring("method GetFormula")] HRESULT GetFormula([in] BSTR cell, [out, retval] BSTR *pFormula);
		[id(40), helpstring("method GetComments")] HRESULT GetComments([in] BSTR cell, [out, retval] BSTR *pComments);

		[id(48), helpstring("method IsTextRC")] HRESULT IsTextRC([in] __int64 row, [in] unsigned short int column, [out, retval] BOOL* pValue);
		[id(49), helpstring("method IsNumberRC")] HRESULT IsNumberRC([in] __int64 row, [in] unsigned short int column, [out, retval] BOOL* pValue);
		[id(50), helpstring("method IsFormulaRC")] HRESULT IsFormulaRC([in] __int64 row, [in] unsigned short int column, [out, retval] BOOL* pValue);

		[id(62), helpstring("method IsFormulaNumericRC")] HRESULT IsFormulaNumericRC([in] __int64 row, [in] unsigned short int column, [out, retval] BOOL* pValue);
		[id(63), helpstring("method IsFormulaTextualRC")] HRESULT IsFormulaTextualRC([in] __int64 row, [in] unsigned short int column, [out, retval] BOOL* pValue);

		[id(51), helpstring("method IsErrorRC")] HRESULT IsErrorRC([in] __int64 row, [in] unsigned short int column, [out, retval] BYTE* pCode);

		[id(52), helpstring("method InsertNumberRC")] HRESULT InsertNumberRC([in] __int64 row, [in] unsigned short int column, [in] double value);
		[id(53), helpstring("method GetNumberRC")] HRESULT GetNumberRC([in] __int64 row, [in] unsigned short int column, [out, retval] double* pValue);

		[id(54), helpstring("method InsertTextRC")] HRESULT InsertTextRC([in] __int64 row, [in] unsigned short int column, [in] BSTR text);
		[id(55), helpstring("method GetTextRC")] HRESULT GetTextRC([in] __int64 row, [in] unsigned short int column, [out, retval] BSTR* pText);

		[id(56), helpstring("method InsertFormulaRC")] HRESULT InsertFormulaRC([in] __int64 row, [in] unsigned short int column, [in] BSTR text);
		[id(57), helpstring("method GetFormulaRC")] HRESULT GetFormulaRC([in] __int64 row, [in] unsigned short int column, [out, retval] BSTR* pText);

		[id(58), helpstring("method InsertCommentsRC")] HRESULT InsertCommentsRC([in] __int64 row, [in] unsigned short int column, [in] BSTR comments);
		[id(59), helpstring("method GetCommentsRC")] HRESULT GetCommentsRC([in] __int64 row, [in] unsigned short int column, [out, retval] BSTR* pComments);
		[id(41), helpstring("method UpdateWindow")] HRESULT UpdateWindow();

		[id(42), helpstring("method SaveSelectionAsImage")] HRESULT SaveSelectionAsImage([in] BSTR file);

		[id(43), helpstring("method CreatePrintSettings")] HRESULT CreatePrintSettings([out, retval] IPrintSettings **ppPrintSettings);
		[id(44), helpstring("method GetPrintSettings")] HRESULT GetPrintSettings([in] IPrintSettings *pPrintSettings);
		[id(45), helpstring("method SetPrintSettings")] HRESULT SetPrintSettings([in] IPrintSettings *pPrintSettings);
		[id(46), helpstring("method Print")] HRESULT Print([in] BOOL showPrintDialog);
	};

	[
		dual,
		helpstring("IWorkbook Interface"),
		pointer_default(unique)
	]
	interface IWorkbook : IDispatch
	{
		[id(1), helpstring("method GetActiveWorksheet")] HRESULT GetActiveWorksheet([out, retval] IWorksheet **ppWorksheet);

		[id(49), helpstring("method SetActiveWorksheet")] HRESULT SetActiveWorksheet([in] BSTR path);
		[id(50), helpstring("method SetActiveFolder")] HRESULT SetActiveFolder([in] BSTR path);

		[id(51), helpstring("method GetActiveFolderPath")] HRESULT GetActiveFolderPath([out, retval] BSTR* pPath);
		[id(52), helpstring("method GetActiveWorksheetPath")] HRESULT GetActiveWorksheetPath([out, retval] BSTR* pPath);

		[id(2), helpstring("method GetWorksheetCount")] HRESULT GetWorksheetCount([out, retval] unsigned long* pCounter);
		[id(3), helpstring("method GetFolderCount")] HRESULT GetFolderCount([out, retval] unsigned long* pCounter);

		[id(4), helpstring("method IsFolderEmpty")] HRESULT IsFolderEmpty([in] BSTR folder, [out, retval] BOOL *pHasChildItems);
		[id(5), helpstring("method GetFirstTreeItem")] HRESULT GetFirstTreeItem([in] BSTR folder, [out, retval] BSTR *pChild);
		[id(6), helpstring("method GetNextTreeItem")] HRESULT GetNextTreeItem([in] BSTR treeItem, [out, retval] BSTR *pSibling);
		[id(7), helpstring("method GetPrevTreeItem")] HRESULT GetPrevTreeItem([in] BSTR treeItem, [out, retval] BSTR *pSibling);
		[id(8), helpstring("method GetParentFolder")] HRESULT GetParentFolder([in] BSTR treeItem, [out, retval] BSTR *pParent);
		[id(9), helpstring("method IsWorksheet")] HRESULT IsWorksheet([in] BSTR treeItem, [out, retval] BOOL *pBool);
		[id(10), helpstring("method IsFolder")] HRESULT IsFolder([in] BSTR treeItem, [out, retval] BOOL *pBool);

		[id(11), helpstring("method ExpandFolder")] HRESULT ExpandFolder([in] BSTR folder);
		[id(12), helpstring("method CollapseFolder")] HRESULT CollapseFolder([in] BSTR folder);

		[id(13), helpstring("method SelectTreeItem")] HRESULT SelectTreeItem([in] BSTR path);

		[id(14), helpstring("method InsertFolder")] HRESULT InsertFolder([in] BSTR name);
		[id(15), helpstring("method InsertWorksheet")] HRESULT InsertWorksheet([in] BSTR name);

		[id(16), helpstring("method DeleteTreeItem")] HRESULT DeleteTreeItem();
		[id(17), helpstring("method MoveTreeItem")] HRESULT MoveTreeItem([in] BSTR sourcePath, [in] BSTR targetPath);
		[id(53), helpstring("method CopyTreeItem")] HRESULT CopyTreeItem([in] BSTR sourcePath, [in] BSTR targetPath);
		[id(18), helpstring("method RenameTreeItem")] HRESULT RenameTreeItem([in] BSTR name);

		[id(19), helpstring("method GetNamedRangeCount")] HRESULT GetNamedRangeCount([out, retval] unsigned long *pCounter);
		[id(20), helpstring("method GetNamedRange")] HRESULT GetNamedRange([in] unsigned long index, [in] BSTR propertyName, [out, retval] BSTR *pProperty);
		[id(21), helpstring("method SetNamedRange")] HRESULT SetNamedRange([in] unsigned long index, [in] BSTR rangeName, [in] BSTR range);
		[id(22), helpstring("method AddNamedRange")] HRESULT AddNamedRange([in] BSTR rangeName, [in] BSTR range);
		[id(23), helpstring("method RemoveNamedRange")] HRESULT RemoveNamedRange([in] unsigned long index);
		[id(24), helpstring("method RemoveAllNamedRanges")] HRESULT RemoveAllNamedRanges();

		[id(25), helpstring("method Save")] HRESULT Save();
		[id(26), helpstring("method SaveAs")] HRESULT SaveAs([in] BSTR path);
		[id(27), helpstring("method SaveAsPDFFile")] HRESULT SaveAsPDFFile([in] BSTR path, [in] BOOL saveAllWorksheets);
		[id(28), helpstring("method SaveAsExcelFile")] HRESULT SaveAsExcelFile([in] BSTR path);
		[id(29), helpstring("method SaveAsTextFile")] HRESULT SaveAsTextFile([in] BSTR path, [in] BOOL showDialogBox, [in] ITextParams *pTextParams);
		[id(30), helpstring("method SaveAsXBaseFile")] HRESULT SaveAsXBaseFile([in] BSTR path, [in] BOOL showDialogBox, [in] IXBaseParams *pXBaseParams);
		[id(31), helpstring("method Reload")] HRESULT Reload();
		[id(32), helpstring("method Close")] HRESULT Close();

		[id(33), helpstring("method SetFilePassword")] HRESULT SetFilePassword([in] BOOL enable, [in] BSTR cryptMethod, [in] BSTR oldPassword, [in] BSTR newPassword);
		[id(34), helpstring("method SetCellPassword")] HRESULT SetCellPassword([in] BOOL enable, [in] BSTR oldPassword, [in] BSTR newPassword);
		[id(35), helpstring("method SetTreePassword")] HRESULT SetTreePassword([in] BOOL enable, [in] BSTR oldPassword, [in] BSTR newPassword);

		[id(36), helpstring("method UpdateAllWorksheets")] HRESULT UpdateAllWorksheets();
		[id(37), helpstring("method UpdateActiveWorksheet")] HRESULT UpdateActiveWorksheet();
		[id(38), helpstring("method UpdateActiveWorksheetRegion")] HRESULT UpdateActiveWorksheetRegion([in] BSTR range);
		[id(39), helpstring("method WaitForUpdate")] HRESULT WaitForUpdate();

		[id(40), helpstring("method MaximizeWindow")] HRESULT MaximizeWindow();
		[id(41), helpstring("method RestoreWindow")] HRESULT RestoreWindow();

		[propget, id(42), helpstring("property modified")] HRESULT modified([out, retval] BOOL *pValue);
		[propput, id(42), helpstring("property modified")] HRESULT modified([in] BOOL value);

		[propget, id(43), helpstring("property updateMode")] HRESULT updateMode([out, retval] BSTR *pMode);
		[propput, id(43), helpstring("property updateMode")] HRESULT updateMode([in] BSTR mode);

		[propget, id(44), helpstring("property updateThreads")] HRESULT updateThreads([out, retval] BSTR *pThreads);
		[propput, id(44), helpstring("property updateThreads")] HRESULT updateThreads([in] BSTR threads);

		[propget, id(45), helpstring("property updatePriority")] HRESULT updatePriority([out, retval] BSTR *pPriority);
		[propput, id(45), helpstring("property updatePriority")] HRESULT updatePriority([in] BSTR priority);

		[propget, id(46), helpstring("property updateOptimization")] HRESULT updateOptimization([out, retval] BSTR *pOptimization);
		[propput, id(46), helpstring("property updateOptimization")] HRESULT updateOptimization([in] BSTR optimization);

		[propget, id(47), helpstring("property lastError")] HRESULT lastError([out, retval] BYTE *pCode);
		[propput, id(47), helpstring("property lastError")] HRESULT lastError([in] BYTE code);

		[id(54), helpstring("method GetFileInfo")] HRESULT GetFileInfo([in] BSTR path, [in] BYTE type, [out, retval] BSTR* value); // 1 - size, 2 - mod. date
		[id(55), helpstring("method ReleaseFile")] HRESULT ReleaseFile([out, retval] BSTR* value);
		[id(56), helpstring("method AttachFile")] HRESULT AttachFile([in] BSTR path, [out, retval] int* modified);

		[id(57), helpstring("method MergeRows")] HRESULT MergeRows([in] IMergeParams* mergeParams);
		[id(58), helpstring("method MergeRowsFromODSFile")] HRESULT MergeRowsFromODSFile([in] IMergeParams* mergeParams);
		[id(59), helpstring("method MergeRowsFromTextFile")] HRESULT MergeRowsFromTextFile([in] IMergeParams* mergeParams, [in] ITextParams* params);
		[id(60), helpstring("method MergeRowsFromExcelFile")] HRESULT MergeRowsFromExcelFile([in] IMergeParams* mergeParams);
		[id(61), helpstring("method MergeRowsFromXBaseFile")] HRESULT MergeRowsFromXBaseFile([in] IMergeParams* mergeParams, [in] IXBaseParams* params);

		[id(62), helpstring("method MergeTable")] HRESULT MergeTable([in] BSTR path, [in] BSTR table);
		[id(63), helpstring("method MergeTableFromODSFile")] HRESULT MergeTableFromODSFile([in] BSTR path, [in] BSTR table);
		[id(64), helpstring("method MergeTableFromTextFile")] HRESULT MergeTableFromTextFile([in] BSTR path, [in] BSTR table, [in] ITextParams* params);
		[id(65), helpstring("method MergeTableFromExcelFile")] HRESULT MergeTableFromExcelFile([in] BSTR path, [in] BSTR table);
		[id(66), helpstring("method MergeTableFromXBaseFile")] HRESULT MergeTableFromXBaseFile([in] BSTR path, [in] BSTR table, [in] IXBaseParams* params);
	};


	[
		dual,
		helpstring("IDocuments Interface"),
		pointer_default(unique)
	]
	interface IApplication : IDispatch
	{
		[id(1), helpstring("method CreateXBaseParams")] HRESULT CreateXBaseParams([out, retval] IXBaseParams **ppXBaseParams);
		[id(2), helpstring("method CreateTextParams")] HRESULT CreateTextParams([out, retval] ITextParams **ppTextParams);
		[id(30), helpstring("method CreateMergeParams")] HRESULT CreateMergeParams([out, retval] IMergeParams** ppMergeParams);

		[id(3), helpstring("method ThisWorkbook")] HRESULT ThisWorkbook([out, retval] IWorkbook** ppWorkbook);
		[id(4), helpstring("method NewWorkbook")] HRESULT NewWorkbook([out, retval] IWorkbook** ppWorkbook);
		[id(5), helpstring("method OpenWorkbook")] HRESULT OpenWorkbook([in] BSTR path, [in] BSTR password, [out, retval] IWorkbook** ppWorkbook);
		[id(6), helpstring("method OpenTextFile")] HRESULT OpenTextFile([in] BSTR path, [in] BOOL showDialogBox, [in] ITextParams *pTextParams, [out, retval] IWorkbook **ppWorkbook);
		[id(7), helpstring("method OpenExcelFile")] HRESULT OpenExcelFile([in] BSTR path, [out, retval] IWorkbook** ppWorkbook);
		[id(8), helpstring("method OpenXBaseFile")] HRESULT OpenXBaseFile([in] BSTR path, [in] BOOL showDialogBox, [in] IXBaseParams* pXBaseParams, [out, retval] IWorkbook **ppWorkbook);
		[id(9), helpstring("method GetBookmarkCount")] HRESULT GetBookmarkCount([out, retval] int *pCounter);
		[id(10), helpstring("method GetBookmark")] HRESULT GetBookmark([in] int index, [out, retval] BSTR *bookMark);
		[id(11), helpstring("method SetBookmark")] HRESULT SetBookmark([in] int index, [in] BSTR bookMark);
		[id(12), helpstring("method AddBookmark")] HRESULT AddBookmark([in] BSTR bookMark);
		[id(13), helpstring("method RemoveBookmark")] HRESULT RemoveBookmark([in] int index);
		[id(14), helpstring("method RemoveAllBookmarks")] HRESULT RemoveAllBookmarks();

		[id(15), helpstring("method LoadProfile")] HRESULT LoadProfile([in] BSTR path);
		[id(16), helpstring("method SaveProfile")] HRESULT SaveProfile([in] BSTR path);

		[id(17), helpstring("method GetWorkbookCount")] HRESULT GetWorkbookCount([out, retval] int *pCounter);
		[id(18), helpstring("method CloseAllWorkbooks")] HRESULT CloseAllWorkbooks();
		[id(19), helpstring("method TileWorkbooks")] HRESULT TileWorkbooks([in] BOOL tileVertically);
		[id(20), helpstring("method MaximizeAppWindow")] HRESULT MaximizeAppWindow();
		[id(21), helpstring("method MinimizeAppWindow")] HRESULT MinimizeAppWindow();
		[id(22), helpstring("method RestoreAppWindow")] HRESULT RestoreAppWindow();

		[id(23), helpstring("method MessageBox")] HRESULT MessageBox([in] BSTR message, [in] BSTR buttons, [in] int button, [in] BSTR icon, [out, retval] BSTR *retValue);
		[id(24), helpstring("method InputBox")] HRESULT InputBox([in] BSTR title, [in] BOOL password, [in] BSTR initValue, [out, retval] BSTR *retValue);
		[id(25), helpstring("method Sleep")] HRESULT Sleep([in] unsigned long time);

		[id(28), helpstring("method GetFilePath")] HRESULT GetFilePath([in] BOOL saveAs, [in] BSTR title, [in] BSTR folder, [in] BSTR name, [in] BSTR ext, [out, retval] BSTR* filePath);
		[id(29), helpstring("method GetFolder")] HRESULT GetFolder([in] BSTR title, [in] BSTR folder, [out, retval] BSTR* filePath);

		[propget, id(26), helpstring("property statusBar")] HRESULT statusBar([out, retval] BSTR *pText);
		[propput, id(26), helpstring("property statusBar")] HRESULT statusBar([in] BSTR text);

		[propget, id(27), helpstring("property startFolder")] HRESULT startFolder([out, retval] BSTR *pFolder);
		[propput, id(27), helpstring("property startFolder")] HRESULT startFolder([in] BSTR folder);
	};

Related Topics

Samples