| What's new ? Recent bug fixes | xlsgen update history details |
What's new in version 5.0 ?
GROUPBY, PIVOTBY and PERCENTOF
TEXTBEFORE, TEXTAFTER, TEXTSPLIT, XOR, IFNA, DAYS, EDATE, EOMONTH, ISOWEEKNUM, WEEKNUM, NETWORKDAYS
enumSortCondition, new enumeration
sortcondition_onvalue = 0;
sortcondition_oncellbkgndcolor = 1;
sortcondition_onfontcolor = 2;
sortcondition_onicon = 3;
enumLanguage, one enumeration more
gencode_powershell = 7
interface IXlsWorkbook, one new property
StrictISO29500([out, retval] BOOL* bEnableStrictISO);
StrictISO29500([in]BOOL bEnableStrictISO);
interface IXlsWorksheetRows, one new property
Outline([out, retval] enumOutlineLevel* level);
interface IXlsWorksheetColumns, one new property
Outline([out, retval] enumOutlineLevel* level);
interface IXlsChartDataLabels, two new properties
LeaderLinesOptions([out, retval]IXlsChartOptions** options);
VectorShape([in]enumVectorShape shapeType);
interface IXlsChartDataLabelElement, one new property
VectorShape([in]enumVectorShape shapeType);
interface IXlsChartBorderStyle, two properties
ArrowStyleBeginCap([out, retval] IXlsVectorShapeArrow** beginCap);
ArrowStyleEndCap([out, retval] IXlsVectorShapeArrow** endCap);
interface IXlsAutoFilter, one new property
Sort([out,retval]IXlsSort** sort);
interface IXlsSort, two properties, one method
CaseSensitive([in]BOOL casesensitive);
CaseSensitive([out, retval]BOOL* casesensitive);
ByColumn([in]BOOL bycolumn);
ByColumn([out, retval]BOOL* bycolumn);
NewCondition([out, retval]IXlsSortCondition** cond);
interface IXlsSortCondition, new interface
ColumnIndex([in]int columnindex);
ColumnIndex([out, retval]int* columnindex);
SortOnWhat([in]enumSortCondition sortOn);
SortOnWhat([out, retval]enumSortCondition* sortOn);
CustomList([in]IXlsList* list);
SortColor([in]int rgb);
SortIconset([in]enumIconSet ics);
SortIconsetIndex([in]int nCustomIconIndex);
Ascending([in]BOOL bAscending);
Ascending([out, retval]BOOL* bAscending);
interface IXlsCell, one new property
InPlacePicture([in]BSTR filename);
interface IXlsCSVImportOptions, one new property
DataInRows([in]int rowsOfData);
interface IXlsHTMLImportOptions, one new property, two new methods
SeparationCharacters([in]BSTR characters);
ColumnSplitByIndex([in]int columnIndex, [out, retval]IXlsImportColumnSplitter** columnSplit);
ColumnJoinByIndex([in]int columnIndex, [out, retval]IXlsImportColumnJoiner** columnJoin);
interface IXlsImportColumnSplitter, one new property
SplitBySeparatorString([in]BSTR sSeparatorString);
What's new in version 4.9 ?
ARRAYTOTEXT(array;[format]), VALUETOTEXT(value;[format])
FIELDVALUE(value;field_name) and #FIELD! error type, TEXTBEFORE, TEXTAFTER, TEXTSPLIT, VSTACK, HSTACK, TOROW, TOCOL, WRAPROWS, WRAPCOLS, TAKE, DROP, CHOOSEROWS, CHOOSECOLS, EXPAND
enumeration enumChartEngine, one new value
chartengine_svg = 3;
interface IXlsChart, two new methods
ExtractAsPNG([in]BSTR filename);
ExtractAsSVG([in]BSTR filename);
interface IXlsRichLabel, one new property
HtmlLabel([in]BSTR label);
HtmlLabel([out, retval]BSTR* label);
interface IXlsCalculationOptions, one new property
MultithreadCores([out, retval]int* nbCores);
MultithreadCores([in]int nbCores);
interface IXlsWorkbook, one new property
DynamicArray([out, retval] BOOL* bEnable);
DynamicArray([in]BOOL bEnable);
interface IXlsWorksheetLockProperties, two new properties
AutoFilters([out, retval] BOOL* lock);
AutoFilters([in]BOOL lock);
PivotTables([out, retval] BOOL* lock);
PivotTables([in]BOOL lock);
interface IXlsRange, one new method
FillTo([in]IXlsWorksheet* destWorksheet, [in]IXlsRange* destRange, [in]enumPasteOption option);
interface IXlsDynamicRange, two new properties
UserDefinedFunction([in]BOOL bUserDefinedFunction);
Description([out, retval] BSTR* descr);
Description([in] BSTR descr);
interface IXlsCSVImportOptions, 3 new properties
AutoFormatMapping([in]BOOL bEnableAutoFormatMapping);
FirstRow([in]int row);
FirstColumn([in]int column);
AutoFit([in]BOOL autofit);
interface IXlsJSONImportOptions, 3 new properties
AutoFormatMapping([in]BOOL bEnableAutoFormatMapping);
FirstRow([in]int row);
FirstColumn([in]int column);
AutoFit([in]BOOL autofit);
interface IXlsHTMLImportOptions, 3 new properties
AutoFormatMapping([in]BOOL bEnableAutoFormatMapping);
FirstRow([in]int row);
FirstColumn([in]int column);
AutoFit([in]BOOL autofit);
interface IXlsXMLImportOptions, 3 new properties
AutoFormatMapping([in]BOOL bEnableAutoFormatMapping);
FirstRow([in]int row);
FirstColumn([in]int column);
AutoFit([in]BOOL autofit);
interface IXlsPivotTableDatasource, two new properties
DataConnection([out, retval]IXlsTableDataSource** dataconnection);
Refresh();
interface IXlsPivotTableFieldGroupBy, three new properties
MinimumValue([in]double minimumValue);
MaximumValue([in]double maximumValue);
DateInterval([out, retval]enumPivotShowFieldDateGroupBy* DateInterval);
DateInterval([in]enumPivotShowFieldDateGroupBy DateInterval);
interface IXlsTableDataSource, one new method
Run();
interface IXlsWorksheetImport, one new property
ElectroCardiogram([out, retval]IXlsElectroCardiogramImport** ecgImporter);
interface IXlsElectroCardiogramImport, new interface
Options([out, retval]IXlsElectroCardiogramImportOptions** ecgOptions);
ImportFile([in]BSTR ecgFilename);
interface IXlsElectroCardiogramImportOptions, new interface
Charts([in]BOOL bCreateCharts);
What's new in version 4.5 ? (released on October 2017)
ColumnDataMappingFormatByName, ColumnDataMappingFormatByIndex)
enumeration enumChartEngine, one new value
chartengine_scalable = 2;
enumeration enumChartType, two new values
charttype_forecast = 52;
charttype_overlayline = 53;
enumeration enumSpecialCellsType
specialcells_type_allformatconditions = 0;
specialcells_type_allvalidation = 1;
specialcells_type_blanks = 2;
specialcells_type_comments = 3;
specialcells_type_constants = 4;
specialcells_type_formulas = 5;
specialcells_type_lastcell = 6;
specialcells_type_sameformatconditions = 7;
specialcells_type_samevalidation = 8;
specialcells_type_visible = 9;
enumeration enumSpecialCellsValue
specialcells_value_na = 0;
specialcells_value_error = 1;
specialcells_value_logical = 2;
specialcells_value_number = 4;
specialcells_value_text = 16;
enumeration enumPivotShowFieldValueAs
pivotfieldshowas_normal = 0,
pivotfieldshowas_differencefrom = 1,
pivotfieldshowas_percentageof = 2,
pivotfieldshowas_percentageofdifferencefrom = 3,
pivotfieldshowas_runningtotal = 4,
pivotfieldshowas_percentageofrow = 5,
pivotfieldshowas_percentageofcolumn = 6,
pivotfieldshowas_percentageoftotal = 7,
pivotfieldshowas_index = 8
enumeration enumWorksheetPane
worksheetpane_topleft = 0;
worksheetpane_topright = 1;
worksheetpane_bottomleft = 2;
worksheetpane_bottomright = 3;
enumeration enumParseFormulaError
parseformula_noerror = 0,
parseformula_syntaxerror = 1,
parseformula_outofmemory = 2,
parseformula_notenoughparams = 3,
parseformula_toomanyparams = 4,
parseformula_impairedparenthesis = 5,
parseformula_impairedbrace = 6,
parseformula_divisionbyzero = 7,
parseformula_functionnotexist = 8,
parseformula_wrongargumentseparator = 9
enumeration enumLanguage, one new value
gencode_python = 6;
interface IXlsXMLImport, new interface
Options([out, retval]IXlsXMLImportOptions** xmlOptions);
ImportFromURL([in]BSTR url);
ImportFile([in]BSTR xmlFilename);
ImportBuffer([in]IUnknown* inputLockbytes);
interface IXlsXMLImportOptions, new interface
HeaderRows([in]int rowsInHeaders);
HeaderStyle([in]IXlsStyle* style);
ColumnStyleByIndex([in]int columnIndex, [in]IXlsStyle* style);
XPath([in]BSTR selectionPath);
ColumnDataMappingFormatByIndex([in]int columnIndex, [in]BSTR format);
Charset([in]BSTR charset);
Language([in]BSTR Language);
ColumnDataTypeByIndex([in]int columnIndex, [in]enumDataType datatype);
ColumnDataTypeByName([in]BSTR columnName, [in]enumDataType datatype);
ColumnStyleByName([in]BSTR columnName, [in]IXlsStyle* style);
ColumnDataMappingFormatByName([in]BSTR columnName, [in]BSTR format);
ColumnSplitByName([in]BSTR columnName, [out, retval]IXlsImportColumnSplitter** columnSplit);
ColumnJoinByName([in]BSTR columnName, [out, retval]IXlsImportColumnJoiner** columnJoin);
interface IXlsCSVImport, one new method
ImportBuffer([in]IUnknown* inputLockbytes);
interface IXlsCSVImportOptions, 10 new properties
ColumnDataMappingFormatByIndex([in]int columnIndex, [in]BSTR format);
Charset([in]BSTR charset);
Language([in]BSTR Language);
ColumnPlacementByName([in]BSTR columnName, [in]int startRow, [in]int startColumn);
ColumnDataTypeByName([in]BSTR columnName, [in]enumDataType datatype);
ColumnStyleByName([in]BSTR columnName, [in]IXlsStyle* style);
ColumnFailIfEmptyByName([in]BSTR columnName, [in]BOOL failIfEmpty);
ColumnFormulaByName([in]BSTR columnName, [in]BSTR formula);
ColumnDataMappingFormatByName([in]BSTR columnName, [in]BSTR format);
ColumnConditionalImportFormulaByName([in]BSTR columnName, [in]BSTR formula);
ColumnSplitByName([in]BSTR columnName, [out, retval]IXlsImportColumnSplitter** columnSplit);
ColumnJoinByName([in]BSTR columnName, [out, retval]IXlsImportColumnJoiner** columnJoin);
interface IXlsHTMLImportOptions, 7 new properties
ColumnDataMappingFormatByIndex([in]int columnIndex, [in]BSTR format);
Charset([in]BSTR charset);
Language([in]BSTR Language);
ColumnDataTypeByIndex([in]int columnIndex, [in]enumDataType datatype);
ColumnDataTypeByName([in]BSTR columnName, [in]enumDataType datatype);
ColumnStyleByName([in]BSTR columnName, [in]IXlsStyle* style);
ColumnDataMappingFormatByName([in]BSTR columnName, [in]BSTR format);
ColumnSplitByName([in]BSTR columnName, [out, retval]IXlsImportColumnSplitter** columnSplit);
ColumnJoinByName([in]BSTR columnName, [out, retval]IXlsImportColumnJoiner** columnJoin);
interface IXlsJSONImportOptions, 6 new properties
ColumnDataMappingFormatByIndex([in]int columnIndex, [in]BSTR format);
Charset([in]BSTR charset);
Language([in]BSTR Language);
ColumnDataTypeByIndex([in]int columnIndex, [in]enumDataType datatype);
ColumnDataTypeByName([in]BSTR columnName, [in]enumDataType datatype);
ColumnDataMappingFormatByName([in]BSTR columnName, [in]BSTR format);
ColumnSplitByName([in]BSTR columnName, [out, retval]IXlsImportColumnSplitter** columnSplit);
ColumnJoinByName([in]BSTR columnName, [out, retval]IXlsImportColumnJoiner** columnJoin);
interface IXlsWorksheetImport, one new property
XML([out, retval]IXlsXMLImport** xmlImporter);
interface IXlsImportColumnSplitter, new interface
SplitBySeparator([in]WCHAR cSepCharacter);
SplitByLength([in]int nSplitLen);
AddColumn([in]BSTR name, [out, retval]IXlsImportColumnSplit** splitColumn);
interface IXlsImportColumnSplit, new interface
Style([in]IXlsStyle* style);
NumberFormat([in]BSTR format);
interface IXlsImportColumnJoiner, new interface
Separator([in]BSTR sSepCharacter);
AddColumn([in]BSTR name, [out, retval]IXlsImportColumnJoin** joinColumn);
interface IXlsImportColumnJoin, new interface
Style([in]IXlsStyle* style);
NumberFormat([in]BSTR format);
Prefix([in]BSTR columnPrefix);
Suffix([in]BSTR columnSuffix);
interface IXlsWorksheetExportOptions, one new property
UnicodeEncoding([in]BOOL bUnicodeEncoding);
interface IXlsWorkbooks, one new property
StyleOptimisation([out, retval] BOOL* bStyleOptimisation);
StyleOptimisation([in]BOOL bStyleOptimisation);
interface IXlsWorkbook, two new properties, one new method
R_Programming([out, retval]IXlsRProgramming** rprogramming);
ActiveWorksheet([out, retval] IXlsWorksheet** worksheet);
TryParseFormula([in]BSTR formula, [out, retval]enumParseFormulaError* error);
FormulaDefinitionUpdate([out, retval] BOOL* bUpdate);
FormulaDefinitionUpdate([in]BOOL bUpdate);
interface IXlsWorksheet, two new properties
ActivePane([in]enumWorksheetPane pane);
ActivePane([out, retval]enumWorksheetPane* pane);
PivotTables([out, retval]IXlsPivotTables** pivottables);
interface IXlsRProgramming, new interface
Options([out, retval]IXlsRProgrammingOptions** options);
Eval([in]BSTR statement);
CreateRDataFrameFromExcelRange([in]BSTR dfName, [in]IXlsRange* r);
CreateExcelRangeFromRDataFrame([in]IXlsRange* r, [in]BSTR dfName);
interface IXlsRProgrammingOptions, new interface
R_Home([in]BSTR path);
interface IXlsChartBorderStyle, one new property
Width([out, retval]double* width);
Width([in]double width);
interface IXlsChartAxisScale, two new properties
MajorDateUnit([out, retval]enumChartAxisDataType* dateUnit);
MajorDateUnit([in]enumChartAxisDataType dateUnit);
MinorDateUnit([out, retval]enumChartAxisDataType* dateUnit);
MinorDateUnit([in]enumChartAxisDataType dateUnit);
interface IXlsPivotTableDatasource, one new property
RefreshEnabled([in]BOOL bRefreshEnabled);
RefreshEnabled([out, retval]BOOL* bRefreshEnabled);
interface IXlsPivotTableOptions, ten new properties
ShowExpandControls([out, retval]BOOL* bShowExpandControls);
ShowExpandControls([in]BOOL bShowExpandControls);
ResizeOnUpdate([out, retval]BOOL* bResizeOnUpdate);
ResizeOnUpdate([in]BOOL bResizeOnUpdate);
MergeItems([out, retval]BOOL* bMergeItems);
MergeItems([in]BOOL bMergeItems);
ShowGrandTotalsForRows([out, retval]BOOL* bShowGrandTotalRows);
ShowGrandTotalsForRows([in]BOOL bShowGrandTotalRows);
ShowGrandTotalsForColumns([out, retval]BOOL* bShowGrandTotalColumns);
ShowGrandTotalsForColumns([in]BOOL bShowGrandTotalColumns);
EnablePivotTableUI([out, retval]BOOL* bEnable);
EnablePivotTableUI([in]BOOL bEnable);
ShowDetails([out, retval]BOOL* bShow);
ShowDetails([in]BOOL bShow);
EnableFieldListUI([out, retval]BOOL* bEnable);
EnableFieldListUI([in]BOOL bEnable);
EnableFieldPropertiesUI([out, retval]BOOL* bEnable);
EnableFieldPropertiesUI([in]BOOL bEnable);
ShowFieldHeaders([out, retval]BOOL* bShow);
ShowFieldHeaders([in]BOOL bShow);
interface IXlsPivotTableField, one new property
NumberFormat([in]BSTR format);
ShowValuesAs([in]enumPivotShowFieldValueAs nShowAs, [out, retval]IXlsPivotTableFieldShowAs** pivotFieldShowAs);
GroupBy([out, retval]IXlsPivotTableFieldGroupBy** groupBy);
interface IXlsPivotTableFieldShowAs, new interface
BasePivotField([in]IXlsPivotTableField* pivotField);
BasePivotItem([in]BSTR item);
BasePivotPreviousItem();
BasePivotNextItem();
interface IXlsPivotTableFieldGroupBy, new interface
Interval([out, retval]double* Interval);
Interval([in]double Interval);
interface IXlsRange, three new properties
SpecialCells([in]enumSpecialCellsType t, [in]enumSpecialCellsValue v, [out, retval] IXlsRange** r);
ShiftCellsLeft();
ShiftCellsUp();
interface IXlsDynamicRange, one new property
Range([out, retval]IXlsRange** range);
interface IXlsHyperlink, one new property
UrlEncode([in]BOOL bUrlEncode);
interface IXlsPageSetup, one new property
PageNumberLeftToRight([in]BOOL pageOrder);
PageNumberLeftToRight([out, retval]BOOL* pageOrder);
interface IXlsShapes, one new property
ItemByName([in]BSTR name, [out, retval]IXlsShape** shape);
interface IXlsPictures, three new properties
Count([out, retval]int* nbpictures);
Item([in]int i, [out, retval]IXlsPicture** picture);
ItemByName([in]BSTR name, [out, retval]IXlsPicture** picture);
interface IXlsPicture, two new properties
Name([out, retval] BSTR* name);
Name([in] BSTR name);
ChromaKeyColor([out, retval]int* nRGB);
ChromaKeyColor([in]int nRGB);
interface IXlsChartShapes, one new property
TextBoxes([out, retval] IXlsTextBoxes** tbs);
interface IXlsTextBoxes, one new property
ItemByName([in]BSTR name, [out, retval]IXlsTextBox** tb);
interface IXlsTextBox, one new property
Name([out, retval] BSTR* name);
Name([in] BSTR name);
interface IXlsVectorShapes, one new property
ItemByName([in]BSTR name, [out, retval]IXlsTextBox** tb);
interface IXlsVectorShape, one new property
Name([out, retval] BSTR* name);
Name([in] BSTR name);
interface IXlsCharts, one new property
ItemByName([in]BSTR name, [out, retval]IXlsChart** chart);
interface IXlsChart, one new property
Name([out, retval] BSTR* name);
Name([in] BSTR name);
interface IXlsPivotTables, new interface
Count([out, retval]int* nbpivottables);
Item([in]int i, [out, retval]IXlsPivotTable** pt);
ItemByName([in]BSTR name, [out, retval]IXlsPivotTable** pt);
Add([out, retval]IXlsPivotTable** pt);
interface IXlsPivotTable, one new property
Name([out, retval] BSTR* name);
Name([in] BSTR name);
interface IXlsTable, one new property
ItemByName([in]BSTR name, [out, retval]IXlsTable** table);
interface IXlsTableDataSource, two new properties, one new method
Range([out, retval] BSTR* cellrange);
Range([in] BSTR cellrange);
AddRow();
DataRange([out, retval] BSTR* datarange);
DataRange([in] BSTR datarange);
What's new in version 4.0 ? (released on October 2015)
(sample JSON) { "count":2, "cache":false, "environment":"live", "remainingAccesses":231, "data":[ {"date":"2013-12-09", "service":"Be On", "campaign_id":17088, "campaign_name":"DE Peek & Cloppenburg Review Urban Karaoke", "project_id":119, "websites":3, "impressions":48, "views":1, "views_paid":0, "redirects":0, "playtoends":0}, {"date":"2013-12-09", "service":"Be On", "campaign_id":17280, "campaign_name":"DE Telekom Technischer Support", "project_id":137, "websites":4, "impressions":189, "views":47, "views_paid":0, "redirects":2, "playtoends":9} ] }C/C++ code xlsgen::IXlsJSONImportPtr json = worksheet->Import->JSON; xlsgen::IXlsStylePtr style = worksheet->NewStyle(); style->Pattern->BackgroundColor = 0xFFFF00; style->Font->Italic = TRUE; json->Options->ColumnStyleByName[L"City"] = style; json->ImportFile(L"input\\jsonfile3.json");
Lorenz curve (more info)
Moving average (more info)
Macd (more info)
|
|
new enumeration enumAntiAliasing
antialiasing_none = 0,
antialiasing_level_1 = 1,
antialiasing_level_2 = 2,
antialiasing_level_3 = 3
new enumeration enumPivotAggregateFunction
aggrpivotfunction_none = 0,
aggrpivotfunction_average = 1,
aggrpivotfunction_count = 2,
aggrpivotfunction_countNums = 3,
aggrpivotfunction_max = 4,
aggrpivotfunction_min = 5,
aggrpivotfunction_product = 6,
aggrpivotfunction_standarddeviation = 7,
aggrpivotfunction_standarddeviationNums = 8,
aggrpivotfunction_sum = 9,
aggrpivotfunction_variance = 10,
aggrpivotfunction_varianceNums = 11
new enumeration enumPivotTableStyle
pivottablestyle_none = 0,
pivottablestyle_light01 = 1,
pivottablestyle_light02 = 2,
pivottablestyle_light03 = 3,
...
pivottablestyle_light27 = 27,
pivottablestyle_light28 = 28,
pivottablestyle_medium01 = 29,
pivottablestyle_medium02 = 30,
pivottablestyle_medium03 = 31,
...
pivottablestyle_medium27 = 55,
pivottablestyle_medium28 = 56,
pivottablestyle_dark01 = 57,
pivottablestyle_dark02 = 58,
pivottablestyle_dark03 = 59,
...
pivottablestyle_dark27 = 83,
pivottablestyle_dark28 = 84
new enumeration enumPivotTableAutoFormat
pivottableautoformat_simple = 1,
pivottableautoformat_classic_1 = 2,
pivottableautoformat_classic_2 = 3,
pivottableautoformat_classic_3 = 4,
pivottableautoformat_accounting_1 = 5,
pivottableautoformat_accounting_2 = 6,
pivottableautoformat_accounting_3 = 7,
pivottableautoformat_accounting_4 = 8,
pivottableautoformat_colorful_1 = 9,
pivottableautoformat_colorful_2 = 10,
pivottableautoformat_colorful_3 = 11,
pivottableautoformat_list_1 = 12,
pivottableautoformat_list_2 = 13,
pivottableautoformat_list_3 = 14,
pivottableautoformat_3d_effects_1 = 15,
pivottableautoformat_3d_effects_2 = 16,
pivottableautoformat_none = 17,
pivottableautoformat_japan_2 = 18,
pivottableautoformat_japan_3 = 19,
pivottableautoformat_japan_4 = 20,
pivottableautoformat_none_japan = 21,
pivottableautoformat_report_01 = 22,
pivottableautoformat_report_02 = 23,
pivottableautoformat_report_03 = 24,
pivottableautoformat_report_04 = 25,
pivottableautoformat_report_05 = 26,
pivottableautoformat_report_06 = 27,
pivottableautoformat_report_07 = 28,
pivottableautoformat_report_08 = 29,
pivottableautoformat_report_09 = 30,
pivottableautoformat_report_10 = 31,
pivottableautoformat_table_01 = 32,
pivottableautoformat_table_02 = 33,
pivottableautoformat_table_03 = 34,
pivottableautoformat_table_04 = 35,
pivottableautoformat_table_05 = 36,
pivottableautoformat_table_06 = 37,
pivottableautoformat_table_07 = 38,
pivottableautoformat_table_08 = 39,
pivottableautoformat_table_09 = 40,
pivottableautoformat_table_10 = 41,
pivottableautoformat_pt_classic = 42,
pivottableautoformat_pt_none = 43
new enumeration enumPivotTableLayout
pivottablelayout_compact = 0,
pivottablelayout_outline = 1,
pivottablelayout_tabular = 2
new enumeration enumThemeColor
themecolor_dark1 = 1,
themecolor_light1 = 2,
themecolor_dark2 = 3,
themecolor_light2 = 4,
themecolor_accent1 = 5,
themecolor_accent2 = 6,
themecolor_accent3 = 7,
themecolor_accent4 = 8,
themecolor_accent5 = 9,
themecolor_accent6 = 10,
themecolor_hyperlink = 11,
themecolor_folhyperlink = 12
new enumeration enumPredefinedEffect
predefinedeffect_1 = 1,
predefinedeffect_2 = 2,
predefinedeffect_3 = 3,
predefinedeffect_4 = 4,
predefinedeffect_5 = 5,
predefinedeffect_6 = 6,
predefinedeffect_7 = 7,
predefinedeffect_8 = 8,
predefinedeffect_9 = 9,
predefinedeffect_10 = 10,
predefinedeffect_11 = 11,
predefinedeffect_12 = 12
new enumeration enumPredefinedShadow
shadoweffect_custom = 0,
shadoweffect_outer_bottomright = 1,
shadoweffect_outer_bottom = 2,
shadoweffect_outer_bottomleft = 3,
shadoweffect_outer_right = 4,
shadoweffect_outer_center = 5,
shadoweffect_outer_left = 6,
shadoweffect_outer_topright = 7,
shadoweffect_outer_top = 8,
shadoweffect_outer_topleft = 9,
shadoweffect_inner_topright = 10,
shadoweffect_inner_top = 11,
shadoweffect_inner_topleft = 12,
shadoweffect_inner_left = 13,
shadoweffect_inner_center = 14,
shadoweffect_inner_right = 15,
shadoweffect_inner_bottomleft = 16,
shadoweffect_inner_bottom = 17,
shadoweffect_inner_bottomright = 18,
shadoweffect_perspective_upperleft = 19,
shadoweffect_perspective_upperright = 20,
shadoweffect_perspective_below = 21,
shadoweffect_perspective_lowerleft = 22,
shadoweffect_perspective_lowerright = 23
new enumeration enumPredefinedReflection
reflectioneffect_custom = 0,
reflectioneffect_tight_touching = 1,
reflectioneffect_half_touching = 2,
reflectioneffect_full_touching = 3,
reflectioneffect_tight_4ptdistance = 4,
reflectioneffect_half_4ptdistance = 5,
reflectioneffect_full_4ptdistance = 6,
reflectioneffect_tight_8ptdistance = 7,
reflectioneffect_half_8ptdistance = 8,
reflectioneffect_full_8ptdistance = 9
new enumeration enumPredefinedSoftEdges
softedgeseffect_custom = 0,
softedgeseffect_1pt = 1,
softedgeseffect_2pt = 2,
softedgeseffect_5pt = 3,
softedgeseffect_10pt = 4,
softedgeseffect_25pt = 5,
softedgeseffect_50pt = 6
new enumeration enumPredefinedCamera
cameraeffect_custom = 0,
cameraeffect_legacyObliqueTopLeft = 1,
cameraeffect_legacyObliqueTop = 2,
cameraeffect_legacyObliqueTopRight = 3,
cameraeffect_legacyObliqueLeft = 4,
cameraeffect_legacyObliqueFront = 5,
cameraeffect_legacyObliqueRight = 6,
cameraeffect_legacyObliqueBottomLeft = 7,
cameraeffect_legacyObliqueBottom = 8,
cameraeffect_legacyObliqueBottomRight = 9,
cameraeffect_legacyPerspectiveTopLeft = 10,
cameraeffect_legacyPerspectiveTop = 11,
cameraeffect_legacyPerspectiveTopRight = 12,
cameraeffect_legacyPerspectiveLeft = 13,
cameraeffect_legacyPerspectiveFront = 14,
cameraeffect_legacyPerspectiveRight = 15,
cameraeffect_legacyPerspectiveBottomLeft = 16,
cameraeffect_legacyPerspectiveBottom = 17,
cameraeffect_legacyPerspectiveBottomRight = 18,
cameraeffect_orthographicFront = 19,
cameraeffect_isometricTopUp = 20,
cameraeffect_isometricTopDown = 21,
cameraeffect_isometricBottomUp = 22,
cameraeffect_isometricBottomDown = 23,
cameraeffect_isometricLeftUp = 24,
cameraeffect_isometricLeftDown = 25,
cameraeffect_isometricRightUp = 26,
cameraeffect_isometricRightDown = 27,
cameraeffect_isometricOffAxis1Left = 28,
cameraeffect_isometricOffAxis1Right = 29,
cameraeffect_isometricOffAxis1Top = 30,
cameraeffect_isometricOffAxis2Left = 31,
cameraeffect_isometricOffAxis2Right = 32,
cameraeffect_isometricOffAxis2Top = 33,
cameraeffect_isometricOffAxis3Left = 34,
cameraeffect_isometricOffAxis3Right = 35,
cameraeffect_isometricOffAxis3Bottom = 36,
cameraeffect_isometricOffAxis4Left = 37,
cameraeffect_isometricOffAxis4Right = 38,
cameraeffect_isometricOffAxis4Bottom = 39,
cameraeffect_obliqueTopLeft = 40,
cameraeffect_obliqueTop = 41,
cameraeffect_obliqueTopRight = 42,
cameraeffect_obliqueLeft = 43,
cameraeffect_obliqueRight = 44,
cameraeffect_obliqueBottomLeft = 45,
cameraeffect_obliqueBottom = 46,
cameraeffect_obliqueBottomRight = 47,
cameraeffect_perspectiveFront = 48,
cameraeffect_perspectiveLeft = 49,
cameraeffect_perspectiveRight = 50,
cameraeffect_perspectiveAbove = 51,
cameraeffect_perspectiveBelow = 52,
cameraeffect_perspectiveAboveLeftFacing = 53,
cameraeffect_perspectiveAboveRightFacing = 54,
cameraeffect_perspectiveContrastingLeftFacing = 55,
cameraeffect_perspectiveContrastingRightFacing = 56,
cameraeffect_perspectiveHeroicLeftFacing = 57,
cameraeffect_perspectiveHeroicRightFacing = 58,
cameraeffect_perspectiveHeroicExtremeLeftFacing = 59,
cameraeffect_perspectiveHeroicExtremeRightFacing = 60,
cameraeffect_perspectiveRelaxed = 61,
cameraeffect_perspectiveRelaxedModerately = 62
new enumeration enumPredefinedCameraLight
cameralighteffect_legacyFlat1 = 1,
cameralighteffect_legacyFlat2 = 2,
cameralighteffect_legacyFlat3 = 3,
cameralighteffect_legacyFlat4 = 4,
cameralighteffect_legacyNormal1 = 5,
cameralighteffect_legacyNormal2 = 6,
cameralighteffect_legacyNormal3 = 7,
cameralighteffect_legacyNormal4 = 8,
cameralighteffect_legacyHarsh1 = 9,
cameralighteffect_legacyHarsh2 = 10,
cameralighteffect_legacyHarsh3 = 11,
cameralighteffect_legacyHarsh4 = 12,
cameralighteffect_threePt = 13,
cameralighteffect_balanced = 14,
cameralighteffect_soft = 15,
cameralighteffect_harsh = 16,
cameralighteffect_flood = 17,
cameralighteffect_contrasting = 18,
cameralighteffect_morning = 19,
cameralighteffect_sunrise = 20,
cameralighteffect_sunset = 21,
cameralighteffect_chilly = 22,
cameralighteffect_freezing = 23,
cameralighteffect_flat = 24,
cameralighteffect_twoPt = 25,
cameralighteffect_glow = 26,
cameralighteffect_brightRoom = 27
new enumeration enumPredefinedMaterialBevel
materialbevel_relaxedInset = 1,
materialbevel_circle = 2,
materialbevel_slope = 3,
materialbevel_cross = 4,
materialbevel_angle = 5,
materialbevel_softRound = 6,
materialbevel_convex = 7,
materialbevel_coolSlant = 8,
materialbevel_divot = 9,
materialbevel_riblet = 10,
materialbevel_hardEdge = 11,
materialbevel_artDeco = 12
new enumeration enumPredefinedMaterial
material_legacyMatte = 1,
material_legacyPlastic = 2,
material_legacyMetal = 3,
material_legacyWireframe = 4,
material_matte = 5,
material_plastic = 6,
material_metal = 7,
material_warmMatte = 8,
material_translucentPowder = 9,
material_powder = 10,
material_dkEdge = 11,
material_softEdge = 12,
material_clear = 13,
material_flat = 14,
material_softmetal = 15
enumeration enumChartType, 9 additional members
charttype_waterfall = 42;
charttype_histogram2016 = 43;
charttype_pareto = 44;
charttype_boxwhisker = 45;
charttype_treemap = 46;
charttype_sunburst = 47;
charttype_funnel = 48;
charttype_lorenzcurve = 49;
charttype_movingaverage = 50;
charttype_macd = 51;
enumeration enumChartTrendLine, 2 additional members
charttrendline_movingmedian = 7;
charttrendline_exponentialmovingaverage = 8;
charttrendline_support = 9;
charttrendline_resistance = 10;
new enumeration, enumStringMatch
stringmatch_strict = 0;
stringmatch_punctuations = 1;
stringmatch_letters = 2;
new enumeration enumListBoxSelectionType
listboxtype_singleselection = 0;
listboxtype_multipleselection = 1;
listboxtype_extendedselection = 2;
new enumeration enumValidationTypeEditBox
validationtype_editbox_text = 0;
validationtype_editbox_number = 1;
validationtype_editbox_float = 2;
validationtype_editbox_reference = 3;
validationtype_editbox_formula = 4;
interface IXlsWorkbooks, one new property
CSVImportOptions([out, retval]IXlsCSVImportOptions** csvOptions);
interface IXlsWorkbook, three new properties
AntiAliasing([out, retval] enumAntiAliasing* setting);
AntiAliasing([in]enumAntiAliasing setting);
MaxRows([out, retval] int* maxrows);
MaxColumns([out, retval] int* maxcolumns);
FuzzyStringMatch([out, retval] enumStringMatch* nFuzzyStringMatch);
FuzzyStringMatch([in]enumStringMatch nFuzzyStringMatch);
interface IXlsWorksheet, two new methods, two new properties
NewPivotTable([out, retval] IXlsPivotTable** pivotTable);
DeleteHyperlinks();
FormControls([out, retval] IXlsFormControls** controls);
ProtectedRanges([out, retval] IXlsProtectedRanges** pr);
interface IXlsPageSetup, four new properties
PageEvenHeader([in]BSTR docheader);
PageEvenHeader([out, retval]BSTR* docheader);
PageEvenFooter([in]BSTR docfooter);
PageEvenFooter([out, retval]BSTR* docfooter);
PageFirstHeader([in]BSTR docheader);
PageFirstHeader([out, retval]BSTR* docheader);
PageFirstFooter([in]BSTR docfooter);
PageFirstFooter([out, retval]BSTR* docfooter);
PaperSizeForPrinter([in]BSTR printerName, [in]BSTR papersize);
interface IXlsRange, two new methods, two new properties
DeleteComments();
DeleteHyperlinks();
Local([out, retval]BOOL* bLocal);
Local([in]BOOL bLocal);
ProtectedRange([out, retval] IXlsProtectedRange** pr);
interface IXlsDynamicRange, one new property
Local([out, retval]BOOL* bLocal);
Local([in]BOOL bLocal);
interface IXlsHTMLImport, new interface
Options([out, retval]IXlsHTMLImportOptions** htmlOptions);
ImportFromURL([in]BSTR url);
ImportFile([in]BSTR htmlFilename);
ImportBuffer([in]IUnknown* inputLockbytes);
interface IXlsHTMLImportOptions, new interface
HeaderRows([in]int rowsInHeaders);
HeaderStyle([in]IXlsStyle* style);
ColumnStyleByIndex([in]int columnIndex, [in]IXlsStyle* style);
interface IXlsJSONImport, new interface
Options([out, retval]IXlsJSONImportOptions** jsonOptions);
ImportFromURL([in]BSTR url);
ImportFile([in]BSTR jsonFilename);
ImportBuffer([in]IUnknown* inputLockbytes);
interface IXlsJSONImportOptions, new interface
HeaderStyle([in]IXlsStyle* style);
ColumnStyleByIndex([in]int columnIndex, [in]IXlsStyle* style);
ColumnStyleByName([in]BSTR columnName, [in]IXlsStyle* style);
interface IXlsCSVImportOptions, one new property
ForceDataType([in]enumDataType datatype);
interface IXlsPattern, one new property
Gradient([out, retval]IXlsGradientPattern** gradient);
interface IXlsGradientPattern, new interface
Enabled([out, retval]BOOL* bEnabled);
Enabled([in]BOOL bEnabled);
FirstColor([out, retval]int* nRGB);
FirstColor([in]int nRGB);
SecondColor([out, retval]int* nRGB);
SecondColor([in]int nRGB);
GradientStyle([out, retval]enumChartGradientStyle* gradientstyle);
GradientStyle([in]enumChartGradientStyle gradientstyle);
interface IXlsChart, one new property
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
PivotTableDataSource([in]IXlsPivotTable* pivot);
interface IXlsChartPatterns, one new property
Effect([out, retval]IXlsDrawingEffect** effect);
interface IXlsChartDataElement, one new property
WaterfallRebase([out, retval]BOOL* b);
WaterfallRebase([in]BOOL b);
interface IXlsChartSeries, one new property
DataWindowSelection([out, retval]int* length);
DataWindowSelection([in]int length);
TrendLines([in]int i, [out, retval]IXlsChartTrendLine** trendline);
interface IXlsChartCustomProperties, one new property
WaterfallConnectorLines([out, retval]BOOL* b);
WaterfallConnectorLines([in]BOOL b);
HistogramBinWidth([out, retval]double* binWidth);
HistogramBinWidth([in]double binWidth);
HistogramBinCount([out, retval]int* binCount);
HistogramBinCount([in]int binCount);
HistogramOverflowValue([out, retval]double* nOverflowValue);
HistogramOverflowValue([in]double nOverflowValue);
HistogramUnderflowValue([out, retval]double* nUnderflowValue);
HistogramUnderflowValue([in]double nUnderflowValue);
HistogramByCategory([out, retval]BOOL* b);
HistogramByCategory([in]BOOL b);
interface IXlsChartTextBox, one new property
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
interface IXlsTextBox, one new property
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
interface IXlsVectorShape, one new property
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
interface IXlsPicture, two new properties
Effect([out, retval]IXlsDrawingEffect** effect);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
interface IXlsCustomFilter, one new property
Delete();
interface IXlsConditionalFormatting, one new property
StopIfTrue([out, retval]BOOL* bStopIfTrue);
StopIfTrue([in]BOOL bStopIfTrue);
interface IXlsColor, new interface
RGBColor([out, retval]int* rgb);
RGBColor([in]int rgb);
ThemeColor([out, retval]enumThemeColor* themeColor);
ThemeColor([in]enumThemeColor themeColor);
Tint([out, retval]int* percent);
Tint([in]int percent);
Alpha([out, retval]int* percent);
Alpha([in]int percent);
interface IXlsTable, one new property
Name([out, retval] BSTR* name);
Name([in] BSTR name);
interface IXlsTableResults, one new property
AutoFilter([out, retval]IXlsAutoFilter** autofilter);
interface IXlsPivotTable, new interface
DataSource([out, retval] IXlsPivotTableDatasource** datasource);
Rows([out, retval] IXlsPivotTableFields** rows);
Columns([out, retval] IXlsPivotTableFields** columns);
Data([out, retval] IXlsPivotTableFields** data);
ReportFilters([out, retval] IXlsPivotTableFields** reportfilters);
Options([out, retval] IXlsPivotTableOptions** options);
InsertAt([in]int row, [in]int column);
interface IXlsPivotTableDatasource, new interface
Range([in]BSTR dataRange);
Range([out, retval]BSTR* dataRange);
ExternalWorksheet([in]IXlsWorksheet* worksheet);
ExternalWorksheet([out, retval]IXlsWorksheet** worksheet);
RefreshOnLoad([in]BOOL bRefreshOnLoad);
RefreshOnLoad([out, retval]BOOL* bRefreshOnLoad);
interface IXlsPivotTableFields, new interface
Count([out, retval]int* count);
Item([in]int i, [out, retval]IXlsPivotTableField** pivotField);
AddByIndex([in]int i, [out, retval]IXlsPivotTableField** pivotField);
AddByName([in]BSTR name, [out, retval]IXlsPivotTableField** pivotField);
AddDataFields();
interface IXlsPivotTableField, new interface
Name([out, retval]BSTR* name);
Name([in]BSTR name);
Delete();
AggregateFunction([out, retval]enumPivotAggregateFunction* func);
AggregateFunction([in]enumPivotAggregateFunction func);
SortAscending([out, retval]BOOL* bAscending);
SortAscending([in]BOOL bAscending);
SelectAllItems();
UnselectAllItems();
SelectItemByName([in]BSTR item);
SelectItemByIndex([in]int item);
UnselectItemByName([in]BSTR item);
UnselectItemByIndex([in]int item);
ItemsSize([out, retval]int* items);
interface IXlsPivotTableOptions, new interface
BuiltInPivotTableStyle([in]enumPivotTableStyle pivotTableStyle);
CustomPivotTableStyle([in]BSTR customPivotTableStyleName);
ShowRowHeaders([out, retval]BOOL* bShowRowHeaders);
ShowRowHeaders([in]BOOL bShowRowHeaders);
ShowColumnHeaders([out, retval]BOOL* bShowColumnHeaders);
ShowColumnHeaders([in]BOOL bShowColumnHeaders);
ShowRowStripes([out, retval]BOOL* bShowRowStripes);
ShowRowStripes([in]BOOL bShowRowStripes);
ShowColumnStripes([out, retval]BOOL* bShowColumnStripes);
ShowColumnStripes([in]BOOL bShowColumnStripes);
BuiltInPivotTableAutoFormat([in]enumPivotTableAutoFormat pivotTableAutoFormat);
Layout([out, retval]enumPivotTableLayout* layout);
Layout([in]enumPivotTableLayout layout);
interface IXlsDrawingEffect, new interface
Predefined([in]enumPredefinedEffect predeffect);
Blur([out, retval]IXlsDrawingBlur** blur);
Shadow([out, retval]IXlsDrawingShadow** shadow);
Reflection([out, retval]IXlsDrawingReflection** reflection);
Glow([out, retval]IXlsDrawingGlow** glow);
SoftEdges([out, retval]IXlsDrawingSoftEdges** softedges);
Camera([out, retval]IXlsDrawingCamera** Camera);
MaterialAndBevel([out, retval]IXlsDrawingMaterial** Material);
interface IXlsDrawingBlur, new interface
InsideOnly([out, retval]BOOL* bInsideOnly);
InsideOnly([in]BOOL bInsideOnly);
Strength([out, retval]int* strength);
Strength([in]int strength);
interface IXlsDrawingCamera, new interface
PredefinedCamera([out, retval]enumPredefinedCamera* pred);
PredefinedCamera([in]enumPredefinedCamera pred);
RotationX([out, retval]int* angle);
RotationX([in]int angle);
RotationY([out, retval]int* angle);
RotationY([in]int angle);
RotationZ([out, retval]int* angle);
RotationZ([in]int angle);
Perspective([out, retval]int* perspective);
Perspective([in]int perspective);
ZPosition([out, retval]int* points);
ZPosition([in]int points);
PredefinedCameraLight([out, retval]enumPredefinedCameraLight* predlight);
PredefinedCameraLight([in]enumPredefinedCameraLight predlight);
LightAngle([out, retval]int* angle);
LightAngle([in]int angle);
interface IXlsDrawingGlow, new interface
Color([out, retval]IXlsColor** color);
Strength([out, retval]int* strength);
Strength([in]int strength);
interface IXlsDrawingMaterial, new interface
PredefinedMaterial([out, retval]enumPredefinedMaterial* material);
PredefinedMaterial([in]enumPredefinedMaterial material);
TopBevel([out, retval]IXlsDrawingMaterialBevel** topBevel);
BottomBevel([out, retval]IXlsDrawingMaterialBevel** bottomBevel);
DepthColor([out, retval]IXlsColor** color);
ContourColor([out, retval]IXlsColor** color);
DepthSize([out, retval]int* points);
DepthSize([in]int points);
ContourSize([out, retval]int* points);
ContourSize([in]int points);
interface IXlsDrawingMaterialBevel, new interface
PredefinedBevel([out, retval]enumPredefinedMaterialBevel* bevelType);
PredefinedBevel([in]enumPredefinedMaterialBevel bevelType);
BevelWidth([out, retval]int* points);
BevelWidth([in]int points);
BevelHeight([out, retval]int* points);
BevelHeight([in]int points);
interface IXlsDrawingReflection, new interface
PredefinedReflection([out, retval]enumPredefinedReflection* predeffect);
PredefinedReflection([in]enumPredefinedReflection predeffect);
Alpha([out, retval]int* percent);
Alpha([in]int percent);
Strength([out, retval]int* strength);
Strength([in]int strength);
ReflectionSize([out, retval]int* percent);
ReflectionSize([in]int percent);
Distance([out, retval]int* points);
Distance([in]int points);
interface IXlsDrawingShadow, new interface
PredefinedShadow([out, retval]enumPredefinedShadow* predeffect);
PredefinedShadow([in]enumPredefinedShadow predeffect);
Color([out, retval]IXlsColor** color);
ShadowSize([out, retval]int* percent);
ShadowSize([in]int percent);
Strength([out, retval]int* strength);
Strength([in]int strength);
Angle([out, retval]int* angle);
Angle([in]int angle);
Distance([out, retval]int* points);
Distance([in]int points);
interface IXlsDrawingSoftEdges, new interface
PredefinedSoftEdges([out, retval]enumPredefinedSoftEdges* predsoftedges);
PredefinedSoftEdges([in]enumPredefinedSoftEdges predsoftedges);
Strength([out, retval]int* strength);
Strength([in]int strength);
interface IXlsFormControls, new interface
Buttons([out, retval]IXlsFormButtons** collection);
CheckBoxes([out, retval]IXlsFormCheckBoxes** collection);
RadioBoxes([out, retval]IXlsFormRadioBoxes** collection);
ComboBoxes([out, retval]IXlsFormComboBoxes** collection);
SpinControls([out, retval]IXlsFormSpinControls** collection);
ListBoxes([out, retval]IXlsFormListBoxes** collection);
GroupBoxes([out, retval]IXlsFormGroupBoxes** collection);
StaticLabels([out, retval]IXlsFormLabels** collection);
Scrollbars([out, retval]IXlsFormScrollbars** collection);
EditBoxes([out, retval]IXlsFormEditBoxes** collection);
DialogBoxes([out, retval]IXlsFormDialogBoxes** collection);
interface IXlsFormButtons, new interface
Add([in]BSTR buttonText, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormButton** button);
AddInPixels([in]BSTR buttonText, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormButton** button);
interface IXlsFormButton, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
Style([in]IXlsStyle* style);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Name([out, retval]BSTR* name);
interface IXlsFormCheckBoxes, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormCheckBox** checkbox);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormCheckBox** checkbox);
interface IXlsFormCheckBox, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Checked([in]BOOL b);
Checked([out, retval]BOOL* b);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
Name([out, retval]BSTR* name);
Patterns([out, retval]IXlsChartPatterns** patterns);
interface IXlsFormComboBoxes, new interface
Add([in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormComboBox** combobox);
AddInPixels([in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormComboBox** combobox);
interface IXlsFormComboBox, new interface
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
InputRange([in]BSTR formula);
InputRange([out, retval]BSTR* formula);
DropLines([in]int droplines);
DropLines([out, retval]int* droplines);
SelectItem([in]int index);
Name([out, retval]BSTR* name);
interface IXlsFormDialogBoxes, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormDialogBox** dialogBox);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormDialogBox** dialogBox);
interface IXlsFormDialogBox, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Name([out, retval]BSTR* name);
interface IXlsFormEditBoxes, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormEditBox** editControl);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormEditBox** editControl);
interface IXlsFormEditBox, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
ValidationType([in]enumValidationTypeEditBox validationType);
ValidationType([out, retval]enumValidationTypeEditBox* validationType);
Multiline([in]BOOL b);
Multiline([out, retval]BOOL* b);
ShowScrollbar([in]BOOL b);
ShowScrollbar([out, retval]BOOL* b);
PasswordMode([in]BOOL b);
PasswordMode([out, retval]BOOL* b);
Name([out, retval]BSTR* name);
interface IXlsFormGroupBoxes, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormGroupBox** groupBox);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormGroupBox** groupBox);
interface IXlsFormGroupBox, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Name([out, retval]BSTR* name);
interface IXlsFormLabels, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormLabel** labelControl);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormLabel** labelControl);
interface IXlsFormLabel, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Name([out, retval]BSTR* name);
interface IXlsFormListBoxes, new interface
Add([in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormListBox** listbox);
AddInPixels([in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormListBox** listbox);
interface IXlsFormListBox, new interface
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
InputRange([in]BSTR formula);
InputRange([out, retval]BSTR* formula);
SelectionType([in]enumListBoxSelectionType selectionType);
SelectionType([out, retval]enumListBoxSelectionType* selectionType);
SelectItem([in]int index);
Name([out, retval]BSTR* name);
interface IXlsFormRadioBoxes, new interface
Add([in]BSTR text, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormRadioBox** radiobox);
AddInPixels([in]BSTR text, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormRadioBox** radiobox);
interface IXlsFormRadioBox, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
Checked([in]BOOL b);
Checked([out, retval]BOOL* b);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
Name([out, retval]BSTR* name);
Patterns([out, retval]IXlsChartPatterns** patterns);
interface IXlsFormScrollbars, new interface
Add([in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormScrollbar** scrollbar);
AddInPixels([in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormScrollbar** scrollbar);
interface IXlsFormScrollbar, new interface
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
CurrentValue([in]int v);
CurrentValue([out, retval]int* v);
MinimumValue([in]int v);
MinimumValue([out, retval]int* v);
MaximumValue([in]int v);
MaximumValue([out, retval]int* v);
IncrementValue([in]int increment);
IncrementValue([out, retval]int* increment);
PageIncrementValue([in]int increment);
PageIncrementValue([out, retval]int* increment);
Vertical([in]BOOL b);
Vertical([out, retval]BOOL* b);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
Name([out, retval]BSTR* name);
interface IXlsFormSpinControls, new interface
Add([in]int row1, [in]int col1, [in]int row2, [in]int col2, [in]int TopOffset, [in]int LeftOffset, [in]int BottomOffset, [in]int RightOffset, [out, retval]IXlsFormSpinControl** spinControl);
AddInPixels([in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsFormSpinControl** spinControl);
interface IXlsFormSpinControl, new interface
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
VBAMacro([in]BSTR macro);
VBAMacro([out, retval]BSTR* macro);
CurrentValue([in]int v);
CurrentValue([out, retval]int* v);
MinimumValue([in]int v);
MinimumValue([out, retval]int* v);
MaximumValue([in]int v);
MaximumValue([out, retval]int* v);
IncrementValue([in]int increment);
IncrementValue([out, retval]int* increment);
LinkedCell([in]BSTR formula);
LinkedCell([out, retval]BSTR* formula);
Name([out, retval]BSTR* name);
interface IXlsProtectedRanges, new interface
Count([out, retval]int* ranges);
Item([in]int i, [out, retval]IXlsProtectedRange** pr);
interface IXlsProtectedRange, new interface
Password([in]BSTR password);
Range([out, retval] BSTR* cellrange);
Range([in] BSTR cellrange);
Delete();
AddUserOrGroup([in]BSTR name);
What's new in version 3.5 ? (released on November 2013)
new enumeration enumChartEngine
chartengine_owc = 0, // Microsoft OWC charting component
chartengine_builtin = 1 // built-in chart rendering component
new enumeration enumPDFEngine
pdfengine_bitmap = 0, // legacy PDF engine
pdfengine_text = 1 // new PDF engine (selectable text, file size reduction)
new enumeration enumSparklineType
sparklinetype_line = 0,
sparklinetype_columns = 1,
sparklinetype_winloss = 2
new enumeration enumSparklineElement
sparklineelement_values = 0,
sparklineelement_negativevalues = 1,
sparklineelement_axis = 2,
sparklineelement_markers = 3,
sparklineelement_firstvalue = 4,
sparklineelement_lastvalue = 5,
sparklineelement_maxvalue = 6,
sparklineelement_minvalue = 7
updated enumeration enumWorkbookTheme, fourty two new values
workbooktheme_olive = 2,
workbooktheme_marine = 3
workbooktheme_office = 4,
workbooktheme_adjacency = 5,
workbooktheme_angles = 6,
workbooktheme_apex = 7,
workbooktheme_apothecary = 8,
workbooktheme_aspect = 9,
workbooktheme_austin = 10,
workbooktheme_blacktie = 11,
workbooktheme_civic = 12,
workbooktheme_clarity = 13,
workbooktheme_composite = 14,
workbooktheme_concourse = 15,
workbooktheme_coutoure = 16,
workbooktheme_elemental = 17,
workbooktheme_equity = 18,
workbooktheme_essential = 19,
workbooktheme_executive = 20,
workbooktheme_flow = 21,
workbooktheme_foundry = 22,
workbooktheme_grid = 23,
workbooktheme_hardcover = 24,
workbooktheme_horizon = 25,
workbooktheme_median = 26,
workbooktheme_metro = 27,
workbooktheme_module = 28,
workbooktheme_newsprint = 29,
workbooktheme_opulent = 30,
workbooktheme_oriel = 31,
workbooktheme_origin = 32,
workbooktheme_paper = 33,
workbooktheme_perspective = 34,
workbooktheme_pushpin = 35,
workbooktheme_slipstream = 36,
workbooktheme_solstice = 37,
workbooktheme_technic = 38,
workbooktheme_thatch = 39,
workbooktheme_trek = 40,
workbooktheme_urban = 41,
workbooktheme_verve = 42,
workbooktheme_waveform = 43
updated enumeration enumExcelTargetVersion
excelversion_ODF = 7 // Open Office Calc
new enumeration enumTableStyle
tablestyle_light01 = 1,
tablestyle_light02 = 2,
tablestyle_light03 = 3,
tablestyle_light04 = 4,
tablestyle_light05 = 5,
tablestyle_light06 = 6,
tablestyle_light07 = 7,
tablestyle_light08 = 8,
tablestyle_light09 = 9,
tablestyle_light10 = 10,
tablestyle_light11 = 11,
tablestyle_light12 = 12,
tablestyle_light13 = 13,
tablestyle_light14 = 14,
tablestyle_light15 = 15,
tablestyle_light16 = 16,
tablestyle_light17 = 17,
tablestyle_light18 = 18,
tablestyle_light19 = 19,
tablestyle_light20 = 20,
tablestyle_light21 = 21,
tablestyle_medium01 = 22,
tablestyle_medium02 = 23,
tablestyle_medium03 = 24,
tablestyle_medium04 = 25,
tablestyle_medium05 = 26,
tablestyle_medium06 = 27,
tablestyle_medium07 = 28,
tablestyle_medium08 = 29,
tablestyle_medium09 = 30,
tablestyle_medium10 = 31,
tablestyle_medium11 = 32,
tablestyle_medium12 = 33,
tablestyle_medium13 = 34,
tablestyle_medium14 = 35,
tablestyle_medium15 = 36,
tablestyle_medium16 = 37,
tablestyle_medium17 = 38,
tablestyle_medium18 = 39,
tablestyle_medium19 = 40,
tablestyle_medium20 = 41,
tablestyle_medium21 = 42,
tablestyle_medium22 = 43,
tablestyle_medium23 = 44,
tablestyle_medium24 = 45,
tablestyle_medium25 = 46,
tablestyle_medium26 = 47,
tablestyle_medium27 = 48,
tablestyle_medium28 = 49,
tablestyle_dark1 = 50,
tablestyle_dark2 = 51,
tablestyle_dark3 = 52,
tablestyle_dark4 = 53,
tablestyle_dark5 = 54,
tablestyle_dark6 = 55,
tablestyle_dark7 = 56,
tablestyle_dark8 = 57,
tablestyle_dark9 = 58,
tablestyle_dark10 = 59,
tablestyle_dark11 = 60
new enumeration enumDataSourceRecordCursor
datasourcecursor_none = 1,
datasourcecursor_server = 2,
datasourcecursor_client = 3
new enumeration enumChartThemeEffectSpan
chartthemeeffectspan_none = 1,
chartthemeeffectspan_subtle = 2,
chartthemeeffectspan_moderate = 3,
chartthemeeffectspan_intense = 4,
chartthemeeffectspan_none2 = 5,
chartthemeeffectspan_intensedark = 6
new enumeration enumChartThemeColorSpan
chartthemecolorspan_grayscale = 1,
chartthemecolorspan_auto = 2,
chartthemecolorspan_primary1 = 3,
chartthemecolorspan_primary2 = 4,
chartthemecolorspan_primary3 = 5,
chartthemecolorspan_primary4 = 6,
chartthemecolorspan_primary5 = 7,
chartthemecolorspan_primary6 = 8
new enumeration enumDatabarAxisPosition
databaraxisposition_automatic = 0,
databaraxisposition_center = 1,
databaraxisposition_none = 2
interface IXlsEngine, one new method
OpenFromMemoryEx([in]IUnknown* inputLockbytes, [in]enumExcelTargetVersion inputVersion, [in]IUnknown* outputLockbytes, [in]enumExcelTargetVersion outputVersion, [out, retval] IXlsWorkbook** workbook);
interface IXlsWorkbooks, one new method
AddFilenameAssociation([in]BSTR filenameExtension, [in]enumExcelTargetVersion target);
interface IXlsWorkbook, five new properties
ChartEngine([out, retval] enumChartEngine* engine);
ChartEngine([in]enumChartEngine engine);
PDFEngine([out, retval] enumPDFEngine* engine);
PDFEngine([in]enumPDFEngine engine);
ThemeManager([out, retval] IXlsTheme** themeManager);
ExternalReferences([out, retval]IXlsExternalReferences** extreferences);
InsertFillOption([in]BOOL bFill);
interface IXlsWorksheet, seven new properties, 5 new methods
OLEObjects([out, retval]IXlsOLEObjects** oleobjects);
NewVectorShapeInPixels([in]enumVectorShape shapeType, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsVectorShape** shape);
NewPictureInPixels([in]BSTR filename, [in]int top, [in]int left, [in]int bottom, [in]int right);
NewPictureInMemoryInPixels([in]VARIANT inputBytearray, [in]enumPictureType picType, [in]int top, [in]int left, [in]int bottom, [in]int right);
NewChartInPixels([in]enumChartType type, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval] IXlsChart** chart);
NewVisualComponentInPixels([in]BSTR progId, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsVisualComponent** component);
NewTextBoxInPixels([in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsTextBox** textbox);
Sparklines([out, retval]IXlsSparklines** sparklines);
NamedStyle([in]BSTR name, [out, retval] IXlsStyle** style);
UsedRange([out, retval]IXlsRange** range);
Boolean([in]int row, [in]int col, [in]BOOL b);
Boolean([in]int row, [in]int col, [out, retval]BOOL* b);
FormulaError([in]int row, [in]int col, [in]enumFormulaError n);
FormulaError([in]int row, [in]int col, [out, retval]enumFormulaError* n);
SelectionRange([out, retval]IXlsRange** range);
interface IXlsWorksheetColumns, three new properties
Position([out, retval]int* positionInPixels);
Range([out, retval]IXlsRange** range);
WidthInPixels([out, retval]int* width_pixels);
WidthInPixels([in]int width_pixels);
interface IXlsWorksheetRows, two new properties
Position([out, retval]int* positionInPixels);
Range([out, retval]IXlsRange** range);
interface IXlsWorksheetDimensions, one new property
Range([out, retval]IXlsRange** range);
interface IXlsPageSetup, one new method
CopyTo([in]IXlsPageSetup* destPageSetup);
interface IXlsOLEObjects, new interface
Count([out, retval]int* nbobjects);
Item([in]int i, [out, retval]IXlsOleObject** oleObject);
NewOLEObject([in]BSTR filename, [in]int row1, [in]int col1, [in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset, [in]int bottomoffset, [in]int rightoffset,
[out, retval]IXlsOLEObject** oleobject);
NewOLEObjectInPixels([in]BSTR filename, [in]int top, [in]int left, [in]int bottom, [in]int right, [out, retval]IXlsOLEObject** oleobject);
interface IXlsOLEObject, new interface
LeftColumn([out, retval]int* col1);
RightColumn([out, retval]int* col2);
TopCell([out, retval]int* row1);
BottomCell([out, retval]int* row2);
LeftOffset([out, retval]int* offset);
RightOffset([out, retval]int* offset);
TopOffset([out, retval]int* offset);
BottomOffset([out, retval]int* offset);
Filetype([out, retval]BSTR* filetype);
ExtractToFile([in]BSTR filename);
ExtractToMemory([in]IUnknown* lockbytes);
SnapshotFiletype([out, retval]BSTR* snapshotfiletype);
ExtractSnapshotToFile([in]BSTR snapshotfilename);
FileContentType([out, retval]BSTR* filecontenttype);
ServerGUID([out, retval]BSTR* serverguid);
interface IXlsSparklines, new interface
Count([out, retval]int* nbobjects);
Item([in]int i, [out, retval]IXlsSparkline** sparkline);
Add([in]enumSparklineType sparklineType, [out, retval]IXlsSparkline** sparkline);
Delete([in]int i);
interface IXlsSparkline, new interface
Count([out, retval]int* nbobjects);
Item([in]int i, [out, retval]IXlsSparklineElement** sparklineElement);
Add([out, retval]IXlsSparklineElement** sparklineElement);
Delete([in]int i);
SparklineType([in]enumSparklineType sparklineType);
SparklineType([out, retval]enumSparklineType* sparklineType);
SparklineColor([in]enumSparklineElement element, [in]int rgb);
SparklineColor([in]enumSparklineElement element, [out, retval]int* rgb);
ShowMarkers([in]BOOL show);
ShowMarkers([out, retval]BOOL* show);
ShowMaximumValue([in]BOOL show);
ShowMaximumValue([out, retval]BOOL* show);
ShowMinimumValue([in]BOOL show);
ShowMinimumValue([out, retval]BOOL* show);
ShowFirstValue([in]BOOL show);
ShowFirstValue([out, retval]BOOL* show);
ShowLastValue([in]BOOL show);
ShowLastValue([out, retval]BOOL* show);
ShowNegativeValues([in]BOOL show);
ShowNegativeValues([out, retval]BOOL* show);
CustomMinimum([in]double v);
CustomMinimum([out, retval]double* v);
CustomMaximum([in]double v);
CustomMaximum([out, retval]double* v);
LineWeight([in]double lineweight);
LineWeight([out, retval]double* lineweight);
ShowEmptyCellsAs([in]enumChartInterpolate emptycase);
ShowEmptyCellsAs([out, retval]enumChartInterpolate* emptycase);
ShowHiddenValues([in]BOOL show);
ShowHiddenValues([out, retval]BOOL* show);
ShowAxis([in]BOOL show);
ShowAxis([out, retval]BOOL* show);
ShowRightToLeft([in]BOOL show);
ShowRightToLeft([out, retval]BOOL* show);
CustomDateAxis([in]BSTR rangeAsFormula);
CustomDateAxis([out, retval]BSTR* rangeAsFormula);
interface IXlsSparklineElement, new interface
LocationRow([in]int sparklineLocationRow);
LocationRow([out, retval]int* sparklineLocationRow);
LocationColumn([in]int sparklineLocationColumn);
LocationColumn([out, retval]int* sparklineLocationColumn);
DataAsFormula([in]BSTR dataRangeFormula);
DataAsFormula([out, retval]BSTR* dataRangeFormula);
DataAsRange([in]int row1, [in]int col1, [in]int row2, [in]int col2);
interface IXlsTextBox, 4 new properties
MarginLeft([in]int pixels);
MarginRight([in]int pixels);
MarginTop([in]int pixels);
MarginBottom([in]int pixels);
interface IXlsVectorShape, 4 new properties
MarginLeft([in]int pixels);
MarginRight([in]int pixels);
MarginTop([in]int pixels);
MarginBottom([in]int pixels);
interface IXlsChartTextBox, 7 new properties
FlipHorizontal([out, retval] BOOL* flipHorz);
FlipHorizontal([in]BOOL flipHorz);
FlipVertical([out, retval] BOOL* flipVert);
FlipVertical([in]BOOL flipVert);
Rotation([out, retval] int* angle);
Rotation([in]int angle);
MarginLeft([in]int pixels);
MarginRight([in]int pixels);
MarginTop([in]int pixels);
MarginBottom([in]int pixels);
interface IXlsComment, 4 new properties
MarginLeft([in]int pixels);
MarginRight([in]int pixels);
MarginTop([in]int pixels);
MarginBottom([in]int pixels);
interface IXlsDatabarCondition, 8 new properties
ShowBorders([out, retval]BOOL* showborders);
ShowBorders([in]BOOL showborders);
BordersColor([out, retval] int* nRGB);
BordersColor([in]int nRGB);
BordersNegativeColor([out, retval] int* nRGB);
BordersNegativeColor([in]int nRGB);
NegativeColor([out, retval] int* nRGB);
NegativeColor([in]int nRGB);
AxisColor([out, retval] int* nRGB);
AxisColor([in]int nRGB);
NegativeColorSameAsPositive([out, retval]BOOL* negativeColorSame);
NegativeColorSameAsPositive([in]BOOL negativeColorSame);
NegativeBordersColorSameAsPositive([out, retval]BOOL* negativeBordersColorSame);
NegativeBordersColorSameAsPositive([in]BOOL negativeBordersColorSame);
GradientFill([out, retval]BOOL* borderGradientFill);
GradientFill([in]BOOL borderGradientFill);
Direction([out, retval] enumTextReadingOrder* readingOrder);
Direction([in]enumTextReadingOrder readingOrder);
AxisPosition([out, retval] enumDatabarAxisPosition* axisposition);
AxisPosition([in]enumDatabarAxisPosition axisposition);
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
interface IXlsDatabarSubCondition, one new property
Length([in]int lengthPercent);
Length([out, retval]int* lengthPercent);
interface IXlsColorScaleCondition, 1 new property
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
interface IXlsIconSetCondition, 1 new property
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
interface IXlsRange, two new methods
NewTable([out, retval]IXlsTable** table);
CreateNames([in]BOOL bTopHeaders, [in]BOOL bLeftColumn, [in]BOOL bBottomHeaders, [in]BOOL bRightColumn);
interface IXlsTable, one new method
Delete();
interface IXlsTableDataSource, one new property
RecordCursor([out, retval]enumDataSourceRecordCursor* cursorType);
RecordCursor([in]enumDataSourceRecordCursor cursorType);
interface IXlsTableResults, one new property
Style([out, retval]IXlsTableStyle** style);
interface IXlsTableStyle, new interface
BuiltinStyle([out, retval]enumTableStyle* tableStyle);
BuiltinStyle([in]enumTableStyle tableStyle);
interface IXlsChartCustomProperties, two new properties
ReplaceSeries([out, retval]BOOL* bReplaceSeries);
ReplaceSeries([in]BOOL bReplaceSeries);
ChartStyle([out, retval]int* nChartStyle);
ChartStyle([in]int nChartStyle);
interface IXlsChart, one new property
Theme([out, retval]IXlsChartTheme** theme);
interface IXlsChartTheme, new interface
EffectSpan([out, retval] enumChartThemeEffectSpan* effect);
EffectSpan([in]enumChartThemeEffectSpan effect);
ColorSpan([out, retval] enumChartThemeColorSpan* color);
ColorSpan([in]enumChartThemeColorSpan color);
interface IXlsTheme, new interface
Theme([out, retval] enumWorkbookTheme* theme);
Theme([in]enumWorkbookTheme theme);
CustomColors([out, retval] enumWorkbookTheme* theme);
CustomColors([in]enumWorkbookTheme theme);
CustomFonts([out, retval] enumWorkbookTheme* theme);
CustomFonts([in]enumWorkbookTheme theme);
CustomEffects([out, retval] enumWorkbookTheme* theme);
CustomEffects([in]enumWorkbookTheme theme);
interface IXlsExternalReferences, new interface
Count([out, retval]int* count);
Item([in]int i, [out, retval]IXlsExternalReference** extreference);
interface IXlsExternalReference, new interface
ExcelFilepath([out, retval]BSTR* filename);
DDE([out, retval] BOOL* bIsDDE);
OLE([out, retval] BOOL* bIsOLE);
What's new in version 3.0 ? (released on September 2011)
new enumeration enumVectorShape
see enumVectorShape for more information
new enumeration enumVectorShapeArrowStyle
vectorshapearrowstyle_none = 0,
vectorshapearrowstyle_triangle = 1,
vectorshapearrowstyle_stealth = 2,
vectorshapearrowstyle_diamond = 3,
vectorshapearrowstyle_oval = 4,
vectorshapearrowstyle_open = 5
new enumeration enumVectorShapeArrowWidth
vectorshapearrowwidth_narrow = 0,
vectorshapearrowwidth_medium = 1,
vectorshapearrowwidth_wide = 2
new enumeration enumVectorShapeArrowLength
vectorshapearrowlength_short = 0,
vectorshapearrowlength_medium = 1,
vectorshapearrowlength_long = 2
new enumeration enumIconSet
iconset_3arrows_colored = 0,
iconset_3arrows_gray = 1,
iconset_3flags = 2,
iconset_3trafficlights_unrimmed = 3,
iconset_3trafficlights_rimmed = 4,
iconset_3signs = 5,
iconset_3symbols_circled = 6,
iconset_3symbols_uncircled = 7,
iconset_4arrows_colored = 8,
iconset_4arrows_gray = 9,
iconset_4redtoblack = 10,
iconset_4rating = 11,
iconset_4trafficlights = 12,
iconset_5arrows_colored = 13,
iconset_5arrows_gray = 14,
iconset_5rating = 15,
iconset_5quarters = 16
enumeration enumChartType, two additions
charttype_histogram = 32,
charttype_outliers = 33,
charttype_normalize = 34,
charttype_smooth = 35,
charttype_bollingerbands = 36,
charttype_relativestrengthindex = 37
enumeration enumExcelTargetVersion, one addition
excelversion_XPS = 6
new enumeration enumGroupBy
groupby_showall = 0,
groupby_showduplicates = 1,
groupby_showsingle = 2,
groupby_showmergedcells = 3
new enumeration enumMapTimeSeries
timeseries_years = 0,
timeseries_semesters = 1,
timeseries_quarters = 2,
timeseries_months = 3,
timeseries_weeks = 4,
timeseries_days = 5,
timeseries_hours = 6
new enumeration enumConditionalTimePeriod
conditionaltimeperiod_today = 0,
conditionaltimeperiod_yesterday = 1,
conditionaltimeperiod_tomorrow = 2,
conditionaltimeperiod_last7days = 3,
conditionaltimeperiod_thismonth = 4,
conditionaltimeperiod_lastmonth = 5,
conditionaltimeperiod_nextmonth = 6,
conditionaltimeperiod_thisweek = 7,
conditionaltimeperiod_lastweek = 8,
conditionaltimeperiod_nextweek = 9
new enumeration enumPromptType
prompttype_singlechoice = 0,
prompttype_multiplechoice = 1,
prompttype_freechoice = 2
new enumeration enumChartAxisSorting
chartaxissorting_none = 0,
chartaxissorting_ascending = 1,
chartaxissorting_descending = 2,
chartaxissorting_gaussian = 3
new enumeration enumSubtotalFunction
subtotalfunc_none = 0,
subtotalfunc_sum = 1,
subtotalfunc_min = 2,
subtotalfunc_max = 3,
subtotalfunc_average = 4,
subtotalfunc_count = 5
subtotalfunc_diff = 6,
subtotalfunc_diffp = 7
new enumeration enumRankAverageType
rankaveragetype_above = 0,
rankaveragetype_below = 1,
rankaveragetype_equal_above = 2,
rankaveragetype_equal_below = 3,
rankaveragetype_1stddev_above = 4,
rankaveragetype_1stddev_below = 5,
rankaveragetype_2stddev_above = 6,
rankaveragetype_2stddev_below = 7,
rankaveragetype_3stddev_above = 8,
rankaveragetype_3stddev_below = 9
new enumeration enumTextReadingOrder
textreadingorder_context = 0,
textreadingorder_left_to_right = 1,
textreadingorder_right_to_left = 2
new enumeration enumWorkbookTheme
workbooktheme_classic = 0,
workbooktheme_modern = 1
interface IXlsVectorShapes, new interface
Count([out, retval]int* nbvectorshapes);
Item([in]int i, [out, retval]IXlsVectorShape** vs);
interface IXlsVectorShape, new interface
Type([out, retval]enumVectorShape* vectorShapeType);
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Hyperlink([in]IXlsHyperlink* hlink);
AutoSize([out, retval] BOOL* autosize);
AutoSize([in]BOOL autosize);
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
Style([in]IXlsStyle* style);
LeftColumn([out, retval]int* col1);
LeftColumn([in]int col1);
RightColumn([out, retval]int* col2);
RightColumn([in]int col2);
TopCell([out, retval]int* row1);
TopCell([in]int row1);
BottomCell([out, retval]int* row2);
BottomCell([in]int row2);
LeftOffset([out, retval]int* offset);
LeftOffset([in]int offset);
RightOffset([out, retval]int* offset);
RightOffset([in]int offset);
TopOffset([out, retval]int* offset);
TopOffset([in]int offset);
BottomOffset([out, retval]int* offset);
BottomOffset([in]int offset);
Delete();
FlipHorizontal([out, retval] BOOL* flipHorz);
FlipHorizontal([in]BOOL flipHorz);
FlipVertical([out, retval] BOOL* flipVert);
FlipVertical([in]BOOL flipVert);
Rotation([out, retval] int* angle);
Rotation([in]int angle);
ArrowStyleBeginCap([out, retval] IXlsVectorShapeArrow** beginCap);
ArrowStyleEndCap([out, retval] IXlsVectorShapeArrow** endCap);
Patterns([out, retval] IXlsChartPatterns** patterns);
ExtractToFile([out, retval]BSTR* filename);
ExtractToMemory([in]IUnknown* lockbytes);
AdjustValue([out, retval]int* value);
AdjustValue([in]int value);
interface IXlsVectorShapeArrow, new interface
Style([out, retval]enumVectorShapeArrowStyle* arrowStyle);
Style([in]enumVectorShapeArrowStyle arrowStyle);
Width([out, retval]enumVectorShapeArrowWidth* arrowWidth);
Width([in]enumVectorShapeArrowWidth arrowWidth);
Length([out, retval]enumVectorShapeArrowLength* arrowLength);
Length([in]enumVectorShapeArrowLength arrowLength);
interface IXlsTextBox, one new property
Patterns([out, retval] IXlsChartPatterns** patterns);
interface IXlsWorkbooks, one new property
OpenPassword([in]BSTR openpassword);
interface IXlsWorkbook, six new properties, one new method
VBAMacros([out, retval]BSTR* macros);
VBAModules([out, retval]IXlsVBAModules** modules);
EncryptionPassword([in]BSTR encryptionpassword);
Filepath([out, retval]BSTR* filepath);
VBAWorkbookName([out, retval]BSTR* workbookName);
Theme([in]enumWorkbookTheme theme);
PrintWith([in]BSTR printerName, [in]BSTR optionalVirtualPrinterFilename);
interface IXlsWorksheet, four new methods, five new properties
NewList([out, retval] IXlsList** list);
NewVectorShape([in]enumVectorShape shapeType, [in]int row1, [in]int col1, [in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset, [in]int bottomoffset, [in]int rightoffset,
[out, retval]IXlsVectorShape** shape);
VBAMacros([out, retval]BSTR* macros);
VectorShapes([out, retval] IXlsVectorShapes** vss);
VBASheetName([out, retval]BSTR* sheetName);
IsFormulaCalculated([in]int row, [in]int col, [out, retval]BOOL* bCalculated);
CellColumnFromAx([in]BSTR cell, [out, retval]int* column);
NewWhatIfTable([in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval]IXlsWhatIfTable** wit);
NewScenario([out, retval] IXlsScenario** scenario);
interface IXlsWorksheetExport, one new method
ExportAsXPS([in]BSTR xpsfilename);
interface IXlsWorksheetExportOptions, two new properties
CSVSeparator([in]short separator);
NumberFormatting([in]BOOL bFormatting);
interface IXlsChart, two new methods
AddVectorShape([in]enumVectorShape shapeType, [out, retval]IXlsVectorShape** shape);
SwitchRowsAndColumns();
interface IXlsChartDynamicDataSource, one new method
SwitchRowsAndColumns();
interface IXlsChartDataLabels, one new property
FieldSeparator([in]BSTR fieldSeparator);
interface IXlsRange, three new methods, two new properties
PasteAsList([in]int row, [in]int col, [in]enumPasteOption option);
FullRange([out, retval] BSTR* cellrange);
RemoveDuplicatesUsingList([in]IXlsList* list);
SearchAndReplace([in]BSTR searchWord, [in]BSTR replacementWord, [out, retval]int* nbChanges);
PasteTo([in]IUnknown* worksheet, [in]int row, [in]int col, [in]enumPasteOption option);
IsFormulaCalculated([out, retval]BOOL* bCalculated);
interface IXlsConditionalFormatting, three new properties
DatabarCondition([out, retval]IXlsDatabarCondition** dbc);
ColorScaleCondition([out, retval]IXlsColorScaleCondition** csc);
IconSetCondition([out, retval]IXlsIconSetCondition** isc);
interface IXlsDatabarCondition, new interface
ShortestBar([out, retval]IXlsDatabarSubCondition** sbc);
LongestBar([out, retval]IXlsDatabarSubCondition** lbc);
ShowBarsOnly([in]BOOL showbarsonly);
ShowBarsOnly([out, retval]BOOL* showbarsonly);
Color([out, retval] int* nRGB);
Color([in]int nRGB);
interface IXlsDatabarSubCondition, new interface
ImplicitValue([in]BOOL implicit);
ExplicitValueAsFormula([in]BSTR formula);
ExplicitPercentAsFormula([in]BSTR formula);
ExplicitFormulaAsFormula([in]BSTR formula);
ExplicitPercentileAsFormula([in]BSTR formula);
interface IXlsColorScaleCondition, new interface
Add([out, retval]IXlsColorScaleSubCondition** cssc);
interface IXlsColorScaleSubCondition, new interface
ImplicitValue([in]BOOL implicit);
ExplicitValueAsFormula([in]BSTR formula);
ExplicitPercentAsFormula([in]BSTR formula);
ExplicitFormulaAsFormula([in]BSTR formula);
ExplicitPercentileAsFormula([in]BSTR formula);
Color([out, retval] int* nRGB);
Color([in]int nRGB);
interface IXlsIconSetCondition, new interface
Add([out, retval]IXlsIconSetSubCondition** cssc);
IconSet([out, retval] enumIconSet* ics);
IconSet([in]enumIconSet ics);
ShowIconsOnly([out, retval]BOOL* showiconsonly);
ShowIconsOnly([in]BOOL showiconsonly);
ReverseIcons([out, retval]BOOL* reverse);
ReverseIcons([in]BOOL reverse);
interface IXlsIconSetSubCondition, new interface
ExplicitValueAsFormula([in]BSTR formula);
ExplicitPercentAsFormula([in]BSTR formula);
ExplicitFormulaAsFormula([in]BSTR formula);
ExplicitPercentileAsFormula([in]BSTR formula);
StrictOperator([out, retval]BOOL* strictoperator);
StrictOperator([in]BOOL strictoperator);
interface IXlsPredefinedCondition, 7 new methods
TopRatio([in]int values);
BottomRatio([in]int values);
TopRatioAsPercent([in]double f);
BottomRatioAsPercent([in]double f);
VersusAverage([in]enumRankAverageType averageType);
DuplicateValues();
UniqueValues();
ContainsText([in]BSTR text);
NotContainsText([in]BSTR text);
BeginsWith([in]BSTR text);
EndsWith([in]BSTR text);
ContainsBlanks();
NotContainsBlanks();
ContainsErrors();
NotContainsErrors();
DatesMatchingPeriod([in]enumConditionalTimePeriod tp);
interface IXlsList, new interface
Add([in]BSTR s);
AddAlternate([in]BSTR s);
Name([in]BSTR name);
Name([out, retval]BSTR* name);
Count([out, retval]int* nbitems);
Item([in]int i, [out, retval]BSTR* s);
SelectItem([in]int i);
UnselectItem([in]int i);
SelectAll();
UnselectAll();
IsSelected([in]int i, [out, retval]BOOL* bItemIsSelected);
interface IXlsDynamicRange, one new property
ValueIterator([out, retval]IXlsDynamicRangeValueIterator** valueIterator);
interface IXlsDynamicRangeValueIterator, new interface
ValueWorksheet([out, retval]int* curValueWorksheet);
ValueRow([out, retval]int* curValueRow);
ValueColumn([out, retval]int* curValuecolumn);
Next();
IsLast([out, retval]BOOL* isLast);
interface IXlsSort, 3 new methods
PrimaryCustomKey([in]int columnindex, [in]IXlsList* list, [in]BOOL bAscending);
SecondaryCustomKey([in]int columnindex, [in]IXlsList* list, [in]BOOL bAscending);
TertiaryCustomKey([in]int columnindex, [in]IXlsList* list, [in]BOOL bAscending);
interface IXlsTables, one new method
InferFromWorksheet();
interface IXlsTable, one new property
DataHistory([out, retval]IXlsTableHistory** history);
interface IXlsTableResults, 6 new methods, one new property
Transpose();
RemoveDuplicates([in]IXlsList* list);
ApplyTemplate([in]IXlsWorksheet* sheet);
TurnToChart([in]enumChartType type);
TurnToTable();
Prompts([out, retval]IXlsTablePrompts** prompts);
TurnToVisualComponent([in]BSTR progId, [out, retval]IXlsTableVisualComponent** vc);
interface IXlsTableHistory, new interface
Count([out, retval]int* nbactions);
Item([in]int i, [out, retval]IXlsTableHistoryAction** action);
interface IXlsTableHistoryAction, new interface
Delete();
interface IXlsTableColumns, one new method, one new property
AddCalculated([in]BSTR formula, [out, retval]IXlsTableColumn** column);
ItemByID([in]BSTR id, [out, retval]IXlsTableColumn** column);
interface IXlsTableColumn, 3 new methods, 5 new properties
Name([in]BSTR columnname);
DisplayOrder([in]int newindex);
DisplayOrder([out, retval]int* newindex);
Filter([out,retval]IXlsCustomFilter** customFilter);
Sorting([out,retval]IXlsTableSort** sort);
GroupBy([in]enumGroupBy type);
Map([out,retval]IXlsTableMap** mapProperties);
ID([out,retval]BSTR* id);
AddPrompt([out,retval]IXlsTablePrompt** prompt);
AddNestedPrompt([in]IXlsTablePrompt* inputPrompt, [out,retval]IXlsTablePrompt** prompt);
Breaks([out,retval]IXlsTableBreaks** breaks);
interface IXlsTableMap, new interface
TextSeries([in]IXlsList* list);
TimeSeries([in]enumFormulaLanguage language, [in]enumMapTimeSeries tseries, [in]BOOL includeYears);
interface IXlsTableSort, new interface
Order([in]BOOL bAscending);
CustomList([in]IXlsList* list);
AdditionalKey([in]IXlsTableColumn* column,[out,retval]IXlsTableSort** sort);
Apply();
interface IXlsTablePrompts, new interface
Count([out, retval]int* nbprompts);
Item([in]int i, [out, retval]IXlsTablePrompt** prompt);
interface IXlsTablePrompt, new interface
Type([in]enumPromptType prompttype);
Type([out, retval]enumPromptType* prompttype);
Column([out, retval]IXlsTableColumn** column);
Description([in]enumFormulaLanguage language, [in]BSTR promptdescription);
Description([in]enumFormulaLanguage language, [out, retval]BSTR* promptdescription);
AddNestedPrompt([in]IXlsTableColumn* column, [out, retval]IXlsTablePrompt** nestedprompt);
NestedPrompt([out, retval]IXlsTablePrompt** nestedprompt);
UniqueValues([out, retval] IXlsList** listPromptValues);
Apply();
Refresh();
interface IXlsTableBreaks, new interface
DistinctValues();
Apply();
Formula([out, retval] BSTR* breakFormula);
Formula([in] BSTR breakFormula);
Subtotals([out, retval]IXlsTableSubtotals** subtotals);
interface IXlsTableSubtotals, new interface
Count([out, retval]int* nbsubtotals);
Item([in]int i, [out, retval]IXlsTableSubtotal** subtotal);
Add([in]IXlsTableColumn* column, [out, retval]IXlsTableSubtotal** subtotal);
interface IXlsTableSubtotal, new interface
BuiltinFunction([in]enumSubtotalFunction func);
BuiltinFunction([out, retval]enumSubtotalFunction* func);
Label([in]BSTR label);
Label([out, retval]BSTR* label);
interface IXlsTableVisualComponent, new interface
Column([in] BSTR Name, [in] IXlsTableColumn* column);
Formula([in] BSTR Name, [in] BSTR pvValue);
Apply();
interface IXlsVBAModules, new interface
Count([out, retval]int* nbmodules);
Item([in]int i, [out, retval]IXlsVBAModule** vbamodule);
interface IXlsVBAModule, new interface
Name([out, retval]BSTR* name);
VBAMacros([out, retval]BSTR* macros);
interface IXlsChartAxis, one new property
Sorting([out, retval]enumChartAxisSorting* sorting);
Sorting([in]enumChartAxisSorting sorting);
interface IXlsCSVImportOptions, one new property
ColumnDataMappingFormatByIndex([in]int columnIndex, [in]BSTR format);
ColumnConditionalImportFormulaByIndex([in]int columnIndex, [in]BSTR formula);
interface IXlsWorksheetColumns, one new method
Move([in]int amountColumns);
interface IXlsWorksheetRows, one new method
Move([in]int amountRows);
interface IXlsStyle, one new method
Merge([in] IXlsStyle* style);
interface IXlsHyperlink, two new properties
Top([out, retval]int* row);
Left([out, retval]int* col);
interface IXlsAlignement, one new property
ReadingOrder([out, retval] enumTextReadingOrder* readingOrder);
ReadingOrder([in]enumTextReadingOrder readingOrder);
interface IXlsChartAlignment, one new property
ReadingOrder([out, retval] enumTextReadingOrder* readingOrder);
ReadingOrder([in]enumTextReadingOrder readingOrder);
interface IXlsChartAreaStyle, 1 new property
FillTransparency([in]int which, [out, retval]int* transparency);
FillTransparency([in]int which, [in]int transparency);
interface IXlsChartCustomProperties, 3 new properties
OutlierPercent([out, retval]int* outlier_percent);
OutlierPercent([in]int outlier_percent);
OutlierAbsoluteMaximum([out, retval]double* outlier_absolute_max);
OutlierAbsoluteMaximum([in]double outlier_absolute_max);
OutlierAbsoluteMinimum([out, retval]double* outlier_absolute_min);
OutlierAbsoluteMinimum([in]double outlier_absolute_min);
LowPassFilterAlpha([out, retval]double* alpha);
LowPassFilterAlpha([in]double alpha);
interface IXlsComment, 2 new properties
Style([in]IXlsStyle* style);
FillTransparency1([out,retval]int* transparency1);
FillTransparency1([in]int transparency1);
interface IXlsVisualComponentParameter, 3 new properties
ValueAsNumber([in] int pvValue);
ValueAsFloat([in] double pvValue);
ValueAsLabel([in] BSTR pvValue);
interface IXlsPageSetup, one new property
GridColor([out, retval] int* nRGB);
GridColor([in]int nRGB);
interface IXlsWhatIfTable, new interface
Formula([in]BSTR formula);
HeaderTitle([in]BSTR headerTitle);
AddInputValues([out, retval]IXlsWhatIfTableValues** values);
interface IXlsWhatIfTableValues, new interface
SetInputCell([in]int row, [in]int col);
AddValueString([in]BSTR value);
AddValueFloat([in]double value);
interface IXlsScenarios, new interface
interface IXlsScenario, new interface
ScenarioName([in]BSTR scenarioname);
ScenarioName([out, retval]BSTR* scenarioname);
ScenarioCreatedBy([in]BSTR scenariocreatedby);
ScenarioCreatedBy([out, retval]BSTR* scenariocreatedby);
ScenarioComment([in]BSTR scenariocomment);
ScenarioComment([out, retval]BSTR* scenariocomment);
ScenarioResultCellsRange([in]BSTR scenarioresultcells);
ScenarioResultCellsRange([out, retval]BSTR* scenarioresultcells);
ScenarioPreventCellChanges([in]BOOL protection);
ScenarioPreventCellChanges([out, retval] BOOL* protection);
ScenarioCellHidden([in]BOOL protection);
ScenarioCellHidden([out, retval] BOOL* protection);
ScenarioAddValue([out, retval]IXlsScenarioValue** scenariovalue);
ScenarioValueItem([in]int i, [out, retval]IXlsScenarioValue** scenariovalue);
ScenarioValueCount([out, retval]int* scenariovaluecount);
ScenarioResultValue([out, retval]IXlsScenarioValue** result);
ScenarioSelect();
interface IXlsScenarioValue, new interface
ScenarioValueRow([in]int row);
ScenarioValueRow([out, retval]int* row);
ScenarioValueColumn([in]int col);
ScenarioValueColumn([out, retval]int* col);
ScenarioValueAsString([in]BSTR value);
ScenarioValueAsString([out, retval]BSTR* value);
ScenarioValueAsFloat([in]double value);
ScenarioValueAsFloat([out, retval]double* value);
interface IXlsPicture, one new property
Borders([out, retval]IXlsChartBorderStyle** border);
What's new in version 2.9 ? (released on Avril 2009)
new enumeration enumChartAxisDataType
chartaxistype_automatic = 0,
chartaxistype_date_auto = 1,
chartaxistype_date_days = 2,
chartaxistype_date_months = 3,
chartaxistype_date_years = 4
new enumeration enumWorksheetType
worksheettype_worksheet = 0,
worksheettype_chart = 1,
worksheettype_vbmodule = 2,
worksheettype_macrosheet = 3,
worksheettype_workspace = 4
IXlsFont interface, one change
Size([out, retval] double* size); // previously integers
Size([in]double size); // previously integers
IXlsChartFont interface, one change
Size([out, retval] double* size); // previously integers
Size([in]double size); // previously integers
IXlsWorksheetExport interface, 2 new methods, 1 new property
ExportAsHTML([in]BSTR htmlffilename);
ExportAsOpenOfficeFormat([in]BSTR odsfilename);
Options([out, retval] IXlsWorksheetExportOptions** options);
IXlsWorksheetExportOptions interface, new interface
UrlPrefix([in]BSTR urlPrefix);
IXlsWorkbook interface, 7 new properties, 2 new methods
Commit([in]BOOL bCommit);
EvalAsString([in]BSTR formula, [out, retval]BSTR* result);
EvalAsFloat([in]BSTR formula, [out, retval]double* result);
DisplaySheetTabs([out, retval] BOOL* bSheetTabs);
DisplaySheetTabs([in]BOOL bSheetTabs);
DisplayRowHeadings([out, retval] BOOL* bRowHeadings);
DisplayRowHeadings([in]BOOL bRowHeadings);
AutoAdjustDefinedNames([out, retval] BOOL* bAutoAdjustDefinedNames);
AutoAdjustDefinedNames([in]BOOL bAutoAdjustDefinedNames);
ShowZeros([out, retval] BOOL* bShowZeros);
ShowZeros([in]BOOL bShowZeros);
IsUsing1904Dates([out, retval] BOOL* b1904Dates);
GridA1Mode([out, retval] BOOL* bMode);
GridA1Mode([in]BOOL bMode);
TreatFloatsAsStrings([out, retval] BOOL* bStrings);
TreatFloatsAsStrings([in]BOOL bStrings);
IXlsWorksheet interface, 5 new properties, 4 new methods
AutoFilters([out, retval] IXlsAutoFilter** autofilter);
AddWorksheetAfter([in]BSTR name, [out, retval] IXlsWorksheet** worksheet);
AddWorksheetBefore([in]BSTR name, [out, retval] IXlsWorksheet** worksheet);
Type([out, retval]enumWorksheetType* sheetType);
TextBoxes([out, retval] IXlsTextBoxes** tbs);
Tables([out, retval] IXlsTables** tables);
InsertTableAt([in]IXlsTable* table, [in]int row, [in]int col);
StyleFromLocation([in]int row, [in]int col, [in] IXlsStyle* style);
DeleteContents();
IXlsComment interface, 1 new property, 1 new method
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
Delete();
IXlsChart interface, 8 new methods, 3 new properties
Shapes([out, retval]IXlsChartShapes** shapes);
ExtractToFile([out, retval]BSTR* filename);
ExtractToMemory([in]IUnknown* lockbytes);
CommitChanges();
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
TurnToStandalone([in]BSTR chartname, [out, retval]IXlsChart** chart);
TurnToEmbedded([in]IXlsWorksheet* wksht, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval] IXlsChart** chart);
CopyTo([in]IXlsWorksheet* wksht, [out, retval] IXlsChart** chart);
CopyToLocation([in]IXlsWorksheet* wksht, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval] IXlsChart** chart);
WorksheetHost([out, retval]IXlsWorksheet** wksht);
Delete();
IXlsChartTitle interface, 1 new property
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
IXlsChartTextBox interface, 2 new properties
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
IXlsChartDataLabelElement interface, 1 new property
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
IXlsTextBoxes interface, new interface
Count([out, retval]int* nbtextboxes);
Item([in]int i, [out, retval]IXlsTextBox** tb);
IXlsTextBox interface, 11 new properties, 3 new methods
Formula([in]BSTR formula);
Formula([out, retval]BSTR* formula);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
Style([in]IXlsStyle* style);
LeftColumn([out, retval]int* col1);
RightColumn([out, retval]int* col2);
TopCell([out, retval]int* row1);
BottomCell([out, retval]int* row2);
LeftOffset([out, retval]int* offset);
RightOffset([out, retval]int* offset);
TopOffset([out, retval]int* offset);
BottomOffset([out, retval]int* offset);
ExtractToFile([out, retval]BSTR* filename);
ExtractToMemory([in]IUnknown* lockbytes);
Delete();
IXlsChartLegend interface, 1 new property
Overlap([in]BOOL overlap);
Overlap([out, retval]BOOL* overlap);
IXlsChartDataSource interface, 1 new property
PointsPerSeries([in] double pointsRatio);
PointsPerSeries([out,retval] double* pointsRatio);
IXlsChartAxis interface, 1 new property
Type([out, retval]enumChartAxisDataType* axistype);
Type([in]enumChartAxisDataType axistype);
IXlsChartShapes interface, new interface
Pictures([out, retval]IXlsPictures** pictures);
IXlsChartSeries interface, one new property
ActualValues([out, retval]BSTR* values);
ActualLabels([out, retval]BSTR* labels);
IXlsTables interface, 2 new properties, 1 new method
Count([out, retval]long* nb);
Item([in]int i, [out, retval]IXlsTable** table);
Add([out, retval]IXlsTable** table);
IXlsTableDataSource interface, 1 new property
DatatypesToDumpToFile([in]BSTR filename);
CommandTimeout([out, retval]int* commandtimeout);
CommandTimeout([in]int commandtimeout);
ConnectionTimeout([out, retval]int* connectiontimeout);
ConnectionTimeout([in]int connectiontimeout);
IXlsTableResults interface, 1 new method
InsertAt([in]int row, [in]int col);
IXlsTableColumn interface, 1 new property
Hidden([in]BOOL bHidden);
Hidden([out, retval]BOOL* bHidden);
IXlsPredefinedCondition interface, 3 new methods
IsNumber();
IsFormula();
GroupBy([in]int column);
IXlsRange interface, 11 new methods, 6 new properties
Erase();
Transpose([in]enumPasteOption option, [out, retval] BSTR* cellrange);
AutoFit();
CalculateFormulas();
DeleteFormulas();
AutoFill(int nDepth);
Formula([in]BSTR formula);
CopyToClipboard();
SelectByFormula([in]BSTR formula, [out, retval]IXlsRange** range);
RemoveDuplicates();
ClearContents();
Label([in]BSTR label);
Number([in]int n);
Float([in]double f);
RichLabel([in]IXlsRichLabel* rl);
ClearFormats();
IXlsChartDynamicDataSourceSeries interface, 1 new method
Delete();
IXlsPictures interface, 1 new method
AddInMemory([in]VARIANT inputBytearray, [in]enumPictureType picType, [out, retval]IXlsPicture** picture);
IXlsAutoFilter interface, 1 new method
Apply();
Delete();
IXlsCustomFilter interface, 11 new methods
TopValues([in]int n);
BottomValues([in]int n);
TopPercent([in]int percent);
BottomPercent([in]int percent);
AboveAverage();
BelowAverage();
MatchBlanks();
MatchNonBlanks();
MatchValues([in]BSTR values);
MatchStyle([in]IXlsStyle* style);
MatchOppositeStyle([in]IXlsStyle* style);
IXlsHyperlinks interface, new interface
Count([out, retval]int* nbshapes);
ItemByIndex([in]int i, [out, retval]IXlsHyperlink** hl);
ItemByLocation([in]int row, [in]int col, [out, retval]IXlsHyperlink** hl);
IXlsHyperlink interface, 5 new properties, 1 new method
FileTarget([out, retval]BSTR* filename);
UrlTarget([out, retval]BSTR* url);
NamedAnchor([out, retval]BSTR* name);
Caption([out, retval]BSTR* caption);
FullCellAnchor([out, retval]BSTR* cellanchor);
Delete();
IXlsPrintPreview, 1 new method
PreviewNextPageAsPNG([in]BSTR pngfile, [out, retval] BOOL* pvContinue);
IXlsHelpers interface, a new interface
ILockBytes_New([out, retval] VARIANT* lockbytes);
ILockBytes_Write([in]VARIANT lockbytes, [out, retval] VARIANT* buffer);
ILockBytes_Read([in]VARIANT buffer, [out, retval] VARIANT* lockbytes);
ILockBytes_Delete([in]VARIANT lockbytes);
WriteFile([in]BSTR filename, [in]VARIANT buffer);
IXlsDynamicRange interface, 1 new property
Worksheet([out, retval]BSTR* worksheetname);
IsTable([out, retval]BOOL* isTable);
IXlsPageSetup interface, 1 new property
PreviewScale([in]int previewScale);
PreviewScale([out, retval]int* previewScale);
What's new in version 2.5 ? (released on May 2007)
[Red][>100]0,00
updated enumeration enumMetadataType
metadatatype_notapplicable = 0,
metadatatype_hyperlink = 1,
metadatatype_formula = 2,
metadatatype_mergedcells = 4,
metadatatype_datavalidation = 8
updated enumeration enumExcelTargetVersion
excelversion_97 = 0,
excelversion_2000 = 1,
excelversion_XP = 2,
excelversion_2003 = 3,
excelversion_2007 = 4,
excelversion_PDF = 5
new enumeration enumShapeStretchOption
shapestretchoption_move_resize = 0,
shapestretchoption_nomove_resize = 1,
shapestretchoption_move_noresize = 2,
shapestretchoption_nomove_noresize = 3
IXlsEngine interface, two new methods, one new property
OpenFromMemory([in]VARIANT inputBytearray, [in]VARIANT outputBytearrayOrFilename,
[in]enumExcelTargetVersion version, [out, retval] IXlsWorkbook** workbook);
Workbooks([out, retval] IXlsWorkbooks** workbooks);
ComponentVersion([out, retval]BSTR* versionInfo);
IXlsWorkbooks interface, new interface
Count([out, retval]int* nbworkbooks);
Item([in]int i, [out, retval]IXlsWorkbook** workbook);
AddFilepath([in]BSTR filepath);
IXlsWorkbook interface, 4 new properties, 2 new methods
EnforceDataValidation([out, retval] BOOL* bEnable);
EnforceDataValidation([in]BOOL bEnable);
Arabic([out, retval] BOOL* bArabic);
Arabic([in]BOOL bArabic);
AutoOpenExternalWorkbookReference([out, retval] BOOL* bExternalWorkbook);
AutoOpenExternalWorkbookReference([in]BOOL bExternalWorkbook);
Search([out, retval] IXlsSearch** search);
DeleteMacros();
IXlsWorksheet interface, 9 new properties, 5 new methods
ColWidth([in]int col, [out, retval]double* width);
RowHeight([in]int row, [out, retval]double* height);
IsHorizontalPageBreak([in]int row, [out, retval]BOOL* bPageBreak);
IsVerticalPageBreak([in]int col, [out, retval]BOOL* bPageBreak);
IsCellInsidePrintArea([in]int row, [in]int col, [out, retval]BOOL* bInsidePrintArea);
StyleComposedFromLocation([in]int row, [in]int col, [out, retval] IXlsStyle** style);
PrintWith([in]BSTR printerName, [in]BSTR optionalVirtualPrinterFilename);
PrintPreview([out, retval] IXlsPrintPreview** preview);
UnmergeCell([in]int row, [in]int col);
DataValidations([out, retval] IXlsDataValidations** datavalidations);
Cell([in]int row, [in]int col, [out, retval] IXlsCell** cell);
ConditionalFormattings([out, retval] IXlsConditionalFormattings** conditionalformattings);
DeleteComment([in]int row, [in]int col);
DeleteComments();
NewTable([in]int row, [in]int col, [out, retval] IXlsTable** table);
DeleteFormulas();
NewTextBox([in]int row1, [in]int col1, [in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset, [in]int bottomoffset, [in]int rightoffset,
[out, retval]IXlsTextBox** textbox);
Charts([out, retval] IXlsCharts** charts);
Comments([out, retval] IXlsComments** comments);
IXlsPageSetup interface, 13 new property getters
PrintArea([out,retval]BSTR* cellrange);
PageOrientation([out, retval]BOOL* portrait);
PaperSize([out, retval]BSTR* papersize);
RepeatRows([out, retval]BSTR* repeatrows);
RepeatColumns([out, retval]BSTR* repeatcolumns);
MarginLeft([out, retval]double* marginleft);
MarginTop([out, retval]double* margintop);
MarginRight([out, retval]double* marginright);
MarginBottom([out, retval]double* marginbottom);
MarginHeader([out, retval]double* marginheader);
MarginFooter([out, retval]double* marginfooter);
FirstPageNumber([out, retval]int* pagenumber);
FirstPageNumber([in]int pagenumber);
PageBreakPreviewMode([in]BOOL previewmode);
ShowGridlines([out, retval]BOOL* gridlines);
IXlsMergedCells interface, 4 properties
Top([out, retval]int* row);
Left([out, retval]int* col);
Width([out, retval]int* width);
Height([out, retval]int* height);
IXlsShape interface, 2 new properties, 2 new methods
Type([out, retval]int* shapetype);
AlternativeText([out, retval]BSTR* shapetext);
ExtractToFile([out, retval]BSTR* filename);
ExtractToMemory([in]IUnknown* lockbytes);
IXlsVisualComponent interface, 2 new methods
ExtractToFile([out, retval]BSTR* filename);
ExtractToMemory([in]IUnknown* lockbytes);
IXlsPrintPreview interface, new interface
PreviewNextPageAsMetafile([in]BSTR metafile, [out, retval] BOOL* pvContinue);
PreviewNextPageAsBuffer([in]BOOL bAsEMF, [out, retval] VARIANT* pvBuffer);
IXlsDataValidations interface, new interface
Count([out, retval]int* nbdatavalidationrules);
Item([in]int i, [out, retval]IXlsDataValidation** datavalidationrule);
IXlsDataValidation interface, 12 new properties and 1 new method
IgnoreErrorIfEmpty([in]BOOL bIgnoreErrorIfEmpty);
ShowDropDown([in]BOOL bShowDropDown);
ShowInformation([in]BOOL bShowInformation);
InformationMessageTitle([in]BSTR informationtitle);
InformationMessageBody([in]BSTR informationbody);
ShowError([in]BOOL bShowError);
ErrorMessageTitle([in]BSTR errortitle);
ErrorMessageBody([in]BSTR errorbody);
ErrorMessageType([in]enumValidationErrorType type);
ValidationType([in]enumValidationType type);
ValidationCondition([out, retval]IXlsCellCondition** cc);
ValidationFormula([out, retval]IXlsFormulaCondition** fc);
Areas([out,retval]BSTR* cellrange);
Delete();
IXlsCell interface, new interface with 5 new read/write properties
HtmlLabel([in]BSTR label);
HtmlNumber([in]BSTR n);
HtmlFloat([in]BSTR f);
HtmlDate([in]BSTR hdate);
HtmlFormula([in]BSTR formula);
IXlsConditionalFormattings interface, new interface
Count([out, retval]int* nbcondformattings);
Item([in]int i, [out, retval]IXlsConditionalFormatting** cf);
ItemInCell([in]int row, [in]int col, [out, retval]IXlsConditionalFormatting** cf);
IXlsConditionalFormatting interface, 5 new methods
Delete();
DeleteAll();
Areas([out,retval]BSTR* cellrange);
Areas([in]BSTR cellrange);
PredefinedCondition([out, retval]IXlsPredefinedCondition** pc);
IXlsPredefinedCondition interface, new interface
AlternateRows([in]int alternateRow);
AlternateColumns([in]int alternateColumn);
TopValues([in]int tops);
BottomValues([in]int bottoms);
HideErrors();
IXlsTable interface, new interface
DataSource([out, retval]IXlsTableDataSource** datasource);
DataResults([out, retval]IXlsTableResults** results);
IXlsTableDataSource interface, new interface
ConnectionString([in]BSTR connectionString);
SQLStatement([in]BSTR statement);
IXlsTableResults interface, new interface
Columns([out, retval]IXlsTableColumns** columns);
Insert();
RowCount([out, retval]int* rowcount);
Name([out, retval] BSTR* name);
Name([in] BSTR name);
IXlsTableColumns interface, new interface
Count([out, retval]int* nbcolumns);
Item([in]int i, [out, retval]IXlsTableColumn** column);
IXlsTableColumn interface, new interface
HeaderStyle([in]IXlsStyle* style);
DataStyle([in]IXlsStyle* style);
Name([out, retval]BSTR* columnname);
IXlsRange interface, one new method
NewSort([out, retval] IXlsSort** sort);
IXlsSort interface, new interface
PrimaryKey([in]int columnindex, [in]BOOL bAscending);
SecondaryKey([in]int columnindex, [in]BOOL bAscending);
TertiaryKey([in]int columnindex, [in]BOOL bAscending);
Apply();
IXlsWorksheetExport interface, one new method
ExportAsPDF([in]BSTR pdffilename);
IXlsWorksheetColumns interface, one new property
IsEmpty([out, retval]BOOL* isempty);
IXlsWorksheetRows interface, one new property
IsEmpty([out, retval]BOOL* isempty);
IXlsHyperlink interface, one new property
Caption([in]BSTR caption);
IXlsCharts, new interface
Count([out, retval]int* nbcharts);
Item([in]int i, [out, retval]IXlsChart** chart);
IXlsChartTextBox interface, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Options([out, retval]IXlsChartOptions** options);
Hyperlink([in]IXlsHyperlink* hlink);
AutoSize([out, retval] BOOL* autosize);
AutoSize([in]BOOL autosize);
IXlsTextBox interface, new interface
Label([in]BSTR label);
Label([out, retval]BSTR* label);
RichLabel([in]IXlsRichLabel* rl);
Hyperlink([in]IXlsHyperlink* hlink);
AutoSize([out, retval] BOOL* autosize);
AutoSize([in]BOOL autosize);
IXlsComments interface, new interface
Count([out, retval]int* nbcomments);
ItemByIndex([in]int i, [out, retval]IXlsComment** comment);
ItemByLocation([in]int row, [in]int col, [out, retval]IXlsComment** comment);
IXlsComment interface, changed method name, 3 new properties
HRESULT Text([in]BSTR text);HRESULT Label([in]BSTR label);
Label([out,retval]BSTR* label);
CommentRow([out, retval] int* row);
CommentColumn([out, retval] int* column);
IXlsPicture interface, 2 new properties
StretchOption([out, retval]enumShapeStretchOption* option);
StretchOption([in]enumShapeStretchOption option);
AlternativeText([out, retval]BSTR* text);
AlternativeText([in]BSTR text);
IXlsOutline interface, 2 new properties
AdditionalHorizontalOutlineLevel([in]enumOutlineLevel outline);
AdditionalVerticalOutlineLevel([in]enumOutlineLevel outline);
What's new in version 2.1b ? (released on November 2006)

The following file formats are supported :
More information is provided here. Please note that existing features of xlsgen targeting older versions of Excel still work just fine. xlsgen as a component can now targets different file formats using the same core engine.
Also,
updated enumeration enumExcelTargetVersion
excelversion_97 = 0,
excelversion_2000 = 1,
excelversion_XP = 2,
excelversion_2003 = 3,
excelversion_2007 = 4
added enumeration enumVisibility
visibility_visible = 0,
visibility_hidden = 1,
visibility_veryhidden = 2
additionational enumeration enumAutoRecalcOption
autorecalc_standard = 0,
autorecalc_disable = 1,
autorecalc_markdirty = 2
added enumeration enumPasteOption
pasteoption_values = 0,
pasteoption_valuesandformulas = 1,
pasteoption_valuesandformatting = 2,
pasteoption_valuesandformattingandformulas = 3
additional behavior in IXlsEngine interface, 2 methods can handle Excel 2007 file format extensions
New([in]BSTR excelfilename, [out, retval] IXlsWorkbook** workbook);
Open([in]BSTR excel_or_csv_filename, [in]BSTR newexcelfilename, [out, retval] IXlsWorkbook** workbook);
updated IXlsEngine interface, 2 method signatures changed
NewInMemory([in]IUnknown* lockbytes, [in]enumExcelTargetVersion version, [out, retval] IXlsWorkbook** workbook);
OpenInMemory([in]BSTR excel_or_csv_filename, [in]IUnknown* lockbytes, [in]enumExcelTargetVersion version, [out, retval] IXlsWorkbook** workbook);
IXlsWorkbook interface, three new properties
NamedRanges([out, retval]IXlsRanges** namedranges);
Shapes([out, retval] IXlsShapes** shapes);
FactorizedFloatsMode([in]BOOL bFactorizedFloatsMode);
IXlsWorksheet interface, four new methods
DuplicateFrom([in]IXlsWorksheet* worksheet);
NewVisualComponent([in]BSTR progId, [in]int row1, [in]int col1,
[in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset,
[in]int bottomoffset, [in]int rightoffset,
[out, retval]IXlsVisualComponent** component);
Workbook([out, retval]IXlsWorkbook** workbook);
FormattedLabel([in]int row, [in]int col, [out, retval]BSTR* label);
updated IXlsWorksheet interface, 2 method signatures changed
Hidden([in]enumVisibility nHidden);
Hidden([out, retval]enumVisibility* nHidden);
IXlsDataValidation interface, one new method
AddItemSource([in]BSTR range);
IXlsRanges interface, new interface
Count([out, retval]int* count);
DynamicRange([in]int i, [out, retval]IXlsDynamicRange** dynamicrange);
IXlsRange interface, one new method
Paste([in]int row, [in]int col, [in]enumPasteOption option);
IXlsShapes interface, new interface
Count([out, retval]int* nbshapes);
Item([in]int i, [out, retval]IXlsShape** shape);
IXlsShape interface, new interface
LeftColumn([out, retval]int* col1);
RightColumn([out, retval]int* col2);
TopCell([out, retval]int* row1);
BottomCell([out, retval]int* row2);
LeftOffset([out, retval]int* offset);
RightOffset([out, retval]int* offset);
TopOffset([out, retval]int* offset);
BottomOffset([out, retval]int* offset);
Name([out, retval]BSTR* shapename);
Delete();
BringToFront();
IXlsVisualComponent, new interface
Count([out, retval] long* lCount);
ParameterByIndex([in] int Index, [out, retval]IXlsVisualComponentParameter** parameter);
ParameterByName([in] BSTR Name, [out, retval]IXlsVisualComponentParameter** parameter);
IXlsVisualComponentParameter, new interface
Name([out, retval] BSTR* pbstrName);
Type([out, retval] enumDataType* parametertype);
NativeType([out, retval] BSTR* parameternativetype);
Formula([out, retval] BSTR* pvValue);
Formula([in] BSTR pvValue);
What's new in version 2.1 ? (released on June 2006)
Open() method
Picture method now called NewPicture, and only kept for backwards compatibility.
Apply. In practice, Apply should only be called to perform a range-based style formatting.
new enumerations
enumExcelTargetVersion
enumFormulaError
updated enumerations
enumDataType
enumBuiltInNamedRange
enumChartResizeOption
IXlsWorkbook interface, 4 new properties, one new interface
HRESULT IgnoreErrorNumberAsText([in]BOOL bIgnoreError);
HRESULT CalculationOptions([out, retval]IXlsCalculationOptions** options);
HRESULT CalculateFormulas();
HRESULT ExcelTargetVersion([out, retval] enumExcelTargetVersion* version);
HRESULT ExcelTargetVersion([in]enumExcelTargetVersion version);
HRESULT Properties([out, retval]IXlsWorkbookProperties** workbookproperties);
IXlsWorksheet interface, removal of 3 methods, renaming of one method, two new properties, one new method
[removed]HRESULT NewMergedCells([out, retval] IXlsMergedCells** mc);
[removed]HRESULT NewOutline([in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval] IXlsOutline** ot);
[removed]HRESULT AssignOutline([in]IXlsOutline* ot);
[renamed]NewPicture([in]BSTR filename, [in]int row1, [in]int col1, [in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset, [in]int bottomoffset, [in]int rightoffset);
[new]HRESULT Pictures([out, retval] IXlsPictures** pictures);
[new]HRESULT CalculateFormula([in]int row, [in]int col);
[new]HRESULT CalculateFormulas();
[new]HRESULT Import([out, retval]IXlsWorksheetImport** importer);
IXlsWorksheetColumns interface, two new properties
HRESULT Hide([out, retval]BOOL* hide);
HRESULT Hide([in]BOOL hide);
HRESULT Style([out, retval]IXlsStyle** style);
HRESULT Style([in]IXlsStyle* style);
IXlsWorksheetRows interface, two new properties
HRESULT Hide([out, retval]BOOL* hide);
HRESULT Hide([in]BOOL hide);
HRESULT Style([out, retval]IXlsStyle** style);
HRESULT Style([in]IXlsStyle* style);
IXlsStyle interface, one new property
HRESULT Hidden([out, retval] BOOL* hiddenFormula);
HRESULT Hidden([in]BOOL hiddenFormula);
IXlsRange interface, 4 new methods
HRESULT NewOutline([out, retval] IXlsOutline** ot);
HRESULT NewMergedCells([out, retval] IXlsMergedCells** mc);
HRESULT Delete();
HRESULT NewAutoFilter([out, retval] IXlsAutoFilter** af);
IXlsDynamicRange interface, one new method, one new property
HRESULT Delete();
HRESULT BuiltInNamedRange([in]enumBuiltInNamedRange type);
IXlsMergedCells interface, all methods removed (irrelevant thanks to the new range model)
IXlsOutline interface, 7 methods removed, 2 new properties
[removed]HRESULT Label([in]BSTR label);
[removed]HRESULT Number([in]int n);
[removed]HRESULT Float([in]double f);
[removed]HRESULT Formula([in]BSTR formula);
[removed]HRESULT RichLabel([in]IXlsRichLabel* rl);
[removed]HRESULT Hyperlink([in]IXlsHyperlink* rl);
[removed]HRESULT Date([in]BSTR date);
[new] HRESULT HorizontalOutlineUpsideDown([in]BOOL upsidedown);
[new] HRESULT VerticalOutlineUpsideDown([in]BOOL upsidedown);
IXlsPictures interface, new interface
HRESULT Add([in]BSTR filename, [out, retval]IXlsPicture** picture);
IXlsPicture interface, new interface
HRESULT LeftColumn([in]int col1);
HRESULT RightColumn([in]int col2);
HRESULT TopCell([in]int row1);
HRESULT BottomCell([in]int row2);
HRESULT LeftOffset([in]int offset);
HRESULT RightOffset([in]int offset);
HRESULT TopOffset([in]int offset);
HRESULT BottomOffset([in]int offset);
HRESULT ScaleWidth([in]int scale);
HRESULT ScaleHeight([in]int scale);
HRESULT LockAspectRatio([in]BOOL locked);
IXlsCalculationOptions interface, new interface
HRESULT AutoRecalc([out, retval] BOOL* bAutoRecalc);
HRESULT AutoRecalc([in]BOOL bAutoRecalc);
HRESULT TreatErrorsAsCodeErrors([out, retval] BOOL* bCodeErrors);
HRESULT TreatErrorsAsCodeErrors([in]BOOL bCodeErrors);
HRESULT LastFormulaError([out, retval]IXlsFormulaError** lastError);
IXlsFormulaError interface, a new interface
HRESULT FormulaWorksheet([out, retval] int* index);
HRESULT FormulaRow([out, retval] int* row);
HRESULT FormulaColumn([out, retval] int* column);
HRESULT FormulaError([out, retval] enumFormulaError* error);
IXlsWorksheetImport interface, a new interface
HRESULT CSV([out, retval]IXlsCSVImport** csvImporter);
IXlsCSVImport interface, a new interface
HRESULT Options([out, retval]IXlsCSVImportOptions** csvOptions);
HRESULT ImportFile([in]BSTR csvFilename);
IXlsCSVImportOptions interface, a new interface
HRESULT SeparationCharacter([in]BSTR character);
HRESULT DecimalCharacter([in]BSTR character);
HRESULT ImportHeaders([in]BOOL importHeaders);
HRESULT HeaderRows([in]int rowsInHeaders);
HRESULT HeaderStyle([in]IXlsStyle* style);
HRESULT PreserveWhitespace([in]BOOL preserveWhitespace);
HRESULT UTF8Encoding([in]BOOL utf8Encoding);
HRESULT MultipleWorksheets([in]BOOL multipleWorksheets);
HRESULT AbortIfInvalidData([in]BOOL abortIfInvalid);
HRESULT ColumnPlacementByIndex([in]int columnIndex, [in]int startRow, [in]int startColumn);
HRESULT ColumnDataTypeByIndex([in]int columnIndex, [in]enumDataType datatype);
HRESULT ColumnStyleByIndex([in]int columnIndex, [in]IXlsStyle* style);
HRESULT ColumnFailIfEmptyByIndex([in]int columnIndex, [in]BOOL failIfEmpty);
IXlsAutoFilter interface, a new interface
(empty interface)
IXlsWorkbookProperties interface, new interface
HRESULT SummaryProperties([out, retval]IXlsWorkbookSummaryProperties** summaryproperties);
HRESULT CustomProperties([out, retval]IXlsWorkbookCustomProperties** customproperties);
IXlsWorkbookSummaryProperties interface, new interface
see interface for more information
IXlsWorkbookCustomProperties interface, new interface
HRESULT Count([out, retval] long* lCount);
HRESULT Add([in] BSTR sPropName, [in] VARIANT* Value);
HRESULT CustomPropertyByIndex([in] int Index, [out, retval] IXlsWorkbookCustomProperty** customproperty);
HRESULT CustomPropertyByName([in] BSTR Name, [out, retval] IXlsWorkbookCustomProperty** customproperty);
IXlsWorkbookCustomProperty interface, new interface
HRESULT PropertyName([out, retval] BSTR* pbstrName);
HRESULT PropertyType([out, retval] enumDataType* custompropertytype);
HRESULT PropertyValue([out, retval] VARIANT* pvValue);
HRESULT PropertyValue([in] VARIANT* pvValue);
What's new in version 2.0 ? (released on January 2006)
Excel charts and their properties
The ability to create all native Excel charts is definitely a big win for all xlsgen customers out there. That really fills the gap with the existing Excel object model, and there are even less reasons to use it now! Not only all charts are supported, but all of their properties are. The way the xlsgen chart object model was designed, was towards reuse and composition : a simple interface is implemented by many of the chart elements, which provides an effective way to customize charts by only learning very simple things. A good thing is also that most options are automatically set by default, which means it only requires 3 lines of code to create a chart. There are numerous charts examples available in the code samples in all programming environments. Those code samples really go deep down in the breadth of things, and you probably want to take a look at them and then at the corresponding code before you try to figure out how to achieve a particular formatting. More information, and a tutorial is available here.
Excel knows how to host charts in two ways. Either embedded in worksheets like any other floating object like pictures and shapes. Or stand-alone. In fact, if you use Excel and try to insert a new worksheet, you'll see a dialog box come up and ask you which type of worksheet you'd like to insert, among which a worksheet of type chart. Stand-alone charts are just this, and obviously have a data source defined in another worksheet (since they are worksheets themselves without a grid). Using custom properties available from the xlsgen API, you can tell whether you'd like to resize the chart according to the window size in Excel, or if you'd rather not. There is a code sample exactly for that. More information is available here.
This little tool comes handy whenever you'd like to know if an updated version of xlsgen is available online, whether it's a bug fix, or an actual upgrade. The tool connects to the xlsgen website, which may require firewall passing permissions depending on your installation, and gathers the last known version. Also as part of the tool is the ability to know which version you are currently running, and whether or not you are using a registered version. To learn how to use this tool, look here.
That's a very good news for deployment purposes. A simple workaround to COM has been implemented, and that means you can deploy xlsgen.dll in your applications by copying a file and that's all. Thanks to this workaround, the requirement to perform the COM registration at install-time is gone. Since this workaround is implemented at the core, all programming environments benefit from it, especially those have really nothing to do with COM by design, such as Java. Code samples have been updated to use that workaround by default, while the regular COM activation pattern still works fine. This is particularly true of all new code samples brought by release 2.0, those related to charts. For more information, look here.
The Java API gets a pretty clean lift. Introduced a while ago, it has been since a day one a one-to-one match to the original COM counterparts, but perhaps the Java API exposed through the xlsgen.jar package was a little bit too COM-ish. This lift fixes this. It also implies that if you wrote Java xlsgen code, you'll have to update your code. But that's for the better, you won't regret it, and that's very simple anyway. The lift consists in several changes : 1) no more .Release() call thanks to the use of Java garbage collector finalizers. You can leave your existing .Release() statements, but they are not needed anymore. 2) objects now implicitely created, which means you don't have to bother creating instances yourself. Instances are created by the object model which results in a perfect match with how VB or .NET object models publicly expose the xlsgen API. Below is a comparison of an old Java code patter, and the new one. The code samples have been updated to reflect the changes.
// Old Java code pattern
XlsWorkbook workbook = new XlsWorkbook( engine.New("sample1.xls") );
XlsWorksheet wksht = new XlsWorksheet( workbook.AddWorksheet("samplesheet") );
wksht.putLabel(1,2, "Hello world!");
workbook.Close();
wksht.Release();
workbook.Release();
// New Java code pattern
XlsWorkbook workbook = engine.New("sample1.xls");
XlsWorksheet wksht = workbook.AddWorksheet("samplesheet");
wksht.putLabel(1,2, "Hello world!");
workbook.Close();
Native support for date/time types
Date/time content is stored in Excel in numbers. This has required developers wiling to store or retrieve date/time types to do a manual conversion back and forth using classes from the Windows API or other programming frameworks such as MFC's COleDatetime and .NET DateTime. This burden is now taken care of by xlsgen and is exposed through a regular Date property in the worksheet object. You can pass a regular date. You can also retrieve a regular date, and when you do so, xlsgen uses the user regional settings to pick the right country language, and will also use the associated cell number format to build the date representation. For more information, look here.
Improvement to row/column autofit computation
Computing the widths and heights of columns and rows is done entirely by xlsgen at generation time. xlsgen simply grabs the content in cells and makes some text extent computations. With native support for date/time types, it's now possible for xlsgen to really take into account the actual representation of date/time content instead of just how those are internally stored, as numbers. As a consequence, the computation of column widths and row heights are getting much more accurate anytime a cell has a date/time.
Date/time content is stored in Excel in numbers. So far the XML and CSV export features were generating numbers for date/time content. It's not wrong since numbers really mean the amount of seconds elapsed since a given time, and has thus a universal meaning. But understanding a date this way certainly proves hard. That's why the XML and CSV export features create actual date/time representations from now on. Whenever a date/time type is being handled in a cell, the XML export adds a special attribute to it that you may want to parse as well.
Thanks to the bidirectional support for date/time types, code generator is now able to produce statements related to date/time types. It exposes date/time types using the user regional settings (Windows control panel) to translate days and months.
Date/time content is stored in Excel in numbers. The diff tool did find differences across date/time in cells but always produced a representation of this in numbers (seconds elapsed since January 1, 1970) instead of what they mean to users, as in "January 1, 1997". The diff tool now takes advantage of the native support for date/time types to improve the representation of date/time content in workbooks. The improvement is visible when you visualize the color-coded workbooks produced by the diff tool, or the XML output.
Improvement to the search tool
Date/time content is stored in Excel in numbers. Searching for dates using the search tool part of the xlsgen package was not working that well, it could not match a date and a number. Thanks to the native support for date/time types, this limitation is a thing of the past. Date/time content is automatically sorted out in their actual representations, as in "January 1, 1997". As a consequence the search tool can now find date/time fragments such as "January" or "1997" or "January 1".
Formulas and absolute references
Formulas support absolute references, as in $A$1 (alternatively to A1). When is this useful? for instance, when sorting columns in a special way, when specifying a range of a chart data source, in fact anytime you want the cell references to be "hard-coded". Syntactically speaking, the dollar sign can be applied to the column (as in $A1), the row (as in A$1), or both. For more information, look here.
No more green arrows in the diff tool
Diff tool : no more green arrows. Those green arrows were resulting from the fact the diff API created diff-ed workbooks without reproducing actual cell content types. Green arrows are an Excel user interface warning element telling that some content in a cell like a number is stored as a string instead of being stored as a number. For more information, look here.
Workbooks automatically closed
Creatting or updating an Excel workbook using xlsgen implies you open a workbook, do something with it, and finally close it. Depending on how your application is architected, it may be not simple to keep track of running workbook instances that you'd like to close upon some event, like the client application closing itself. Towards this end, xlsgen now automatically closes opened workbooks. While the existing code works just fine, it means you no longer need to make an explicit workbook.Close() when you are done.
Creating or opening a workbook is a regular file I/O operation and may result into a number of regular I/O-related issues. So far, xlsgen always kept the error types internally and would return a generic error. This could have made I/O-related issues needlessly hard to understand and fix. Now, just to be clear, xlsgen returns a HRESULT of the error that occurred, i.e. the COM-based error identifier.
Picture insertion was introduced a while ago, but it has probably been not straight forward to insert pictures without paying special attention to the sizes. When a picture in inserted, one of its properties defines whether the picture follows cell widths/heights resizings. Beginning with this version, this is not the case anymore, which in turn makes it easier to pictures regardless of what the Excel grid looks like.
Dynamic named ranges are the most general form of named ranges. By definition, a dynamic named range is a formula associated with a name. For more information, look here.
Named ranges can be be hidden/unhidden
Excel has this little known feature which is handy for developers, it's the ability to hide named ranges from the Excel user interface. Named ranges are sometimes used to represent part of the logic of the spreadsheet and it's important to be able to insulate these from the user, either for security reasons or for not willing to take the risk that the user makes a change to them. Excel provides no menu option to unhide named ranges, this has to be done with code. Named ranges can be hidden/unhidden using the xlsgen API, and this applies to both regular named ranges and dynamic named ranges.
Code generation tool : Range/DynamicRange statements
Following the ability to create named ranges governed by formulas instead of static values or references, the code generation tool has been updated to reverse engineer existing dynamic named ranges in workbooks. And proudces the statements. For instance,
IXlsDynamicRange dynrange = worksheet.NewDynamicRange("r2")
dynrange.Formula = "=OFFSET(E4:G6;1;0;1;1)"
C++ smart pointers pattern update
Due to a bug in the Microsoft type-library importer, a change must be made in existing Visual Studio 6 projects in order for client code to continue to work properly with the xlsgen type library. Note that this does not affect any other Visual Studio release (Visual Studio C++ 2002/2003/2005) since Microsoft has fixed the bug in those. Visual C++ 6.0 code samples in the /samples folder have been updated to reflect that.
Old statement :
#import "<path>\xlsgen.dll"
New statement :
#import "<path>\xlsgen.dll" no_function_mapping
A simple Comment API means you can now freely add comments to new or existing Excel files. For more information, see here.
calling user-defined functions in formulas.
The ability to call user-defined functions, otherwise known as add-ins, allows for great multi-workbook scenarios. Both the core xlsgen engine and the code generation tool have been updated to allow you to make local and external user-defined function calls in formulas. Here is an example of how it works :
' declare an external user defined function
' (Book1.xls exposes a VBA procedure called Discount1)
wksht.DeclareUserDefinedFunction("Book1.xls!Discount1")
' create a formula with it
wksht.Formula(15,3) = "=Book1.xls!Discount1(970;3)"
Written in 7 programming languages, and related to charts. Obviously. Adding those to 8 existing ones for each programming language makes 84 samples overall. Sure enough, not all features are covered, but the point is to get you started and use some of the most useful features.
A number of enumerated types and interfaces make their debut to support the creation of charts. enumChartArea enumChartAreaPattern enumChartAxisTickMarks enumChartAxisTicks enumChartAxisType enumChartBarShape enumChartBorder enumChartBorderStyle enumChartBorderWeight enumChartDataLabelPlacement enumChartDataLabels enumChartErrorBar enumChartErrorBarThreshold enumChartFontBackground enumChartGradientPreset enumChartGradientStyle enumChartImageStyle enumChartInterpolate enumChartLegend enumChartMarker enumChartMarkerStyle enumChartPieBuddyType enumChartResizeOption enumChartTexture enumChartTrendLine enumChartType IXlsChart IXlsChart3DPanel IXlsChartAlignment IXlsChartAreaStyle IXlsChartAreaStyleGradient IXlsChartAreaStyleGradientDualColor IXlsChartAreaStyleGradientPreset IXlsChartAreaStyleGradientSingleColor IXlsChartAreaStyleImage IXlsChartAreaStylePattern IXlsChartAreaStyleTexture IXlsChartAxis IXlsChartAxisScale IXlsChartBorderStyle IXlsChartCustomProperties IXlsChartDataElement IXlsChartDataLabelElement IXlsChartDataLabels IXlsChartDataSource IXlsChartDataTable IXlsChartDynamicDataSource IXlsChartDynamicDataSourceSeries IXlsChartErrorBar IXlsChartErrorBarCustom IXlsChartFont IXlsChartLegend IXlsChartLegendEntry IXlsChartMarkerStyle IXlsChartOptions IXlsChartPatterns IXlsChartPieBuddy IXlsChartPlotArea IXlsChartSeries IXlsChartSurfaceArea IXlsChartTitle IXlsChartTrendLine Also, a few existing interfaces have been updated. IXlsWorkbook interface : a new method HRESULT AddChart([in]BSTR name, [in]enumChartType type, [out, retval] IXlsChart** chart); IXlsWorksheet interface : five new methods, and one new property HRESULT NewChart([in]enumChartType type, [in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval] IXlsChart** chart); HRESULT NewDynamicRange([in]BSTR name, [out, retval]IXlsDynamicRange** range); HRESULT DynamicRange([in]BSTR name, [out, retval]IXlsDynamicRange** range); HRESULT Date([in]int row, [in]int col, [out, retval]BSTR* date); HRESULT Date([in]int row, [in]int col, [in]BSTR date); HRESULT NewComment([in]int row, [in]int col, [out, retval]IXlsComment** comment); HRESULT DeclareUserDefinedFunction([in]BSTR functionname); IXlsRange interface : a new property HRESULT Hidden([out, retval]BOOL* hidden); HRESULT Hidden([in]BOOL hidden); IXlsDynamicRange interface : a new interface HRESULT Name([out, retval] BSTR* name); HRESULT Formula([out, retval] BSTR* formula); HRESULT Formula([in] BSTR formula); HRESULT Hidden([out, retval]BOOL* hidden); HRESULT Hidden([in]BOOL hidden); IXlsMergedCells interface : a new property HRESULT Date([in]BSTR date); IXlsOutline interface : a new property HRESULT Date([in]BSTR date); IXlsComment : a new interface HRESULT Text([in]BSTR text); HRESULT RichText([in]IXlsRichLabel* rl); HRESULT AlwaysShow([out, retval]BOOL* alwaysshow); HRESULT AlwaysShow([in]BOOL alwaysshow); HRESULT Location([in]int row1, [in]int col1, [in]int row2, [in]int col2); HRESULT BackColor([in]int nRGB); HRESULT Translucid([in]BOOL translucid); HRESULT Author([in]BSTR author);
What's new in version 1.9 ? (released on November 2005)
This version really is a major improvement in regards to support for formulas. Now xlsgen supports all of formula functions. No less than 235 built-in Excel functions. Localized function names are supported which means you can work with formulas in English or French (for now). Many bug fixes have been checked-in, including the ability to force a formula recalculation when cells are updated with xlsgen, including a better support for quotes, double-quotes and spaces to name a few. Also it is now possible to read the formula in any cell, the formula is returned using the language of your choice. Finally functions are case insensitive, which means you don't have to worry about using uppercase or not anymore. For more information, see formulas.
In version 1.8, the ability to insert an arbitrary number of rows and columns was introduced. In this version, the complimentory ability to delete an arbitrary number of rows and columns is provided. This provides a feature closure : if you were to write an Excel-like user interface, then you would have all basic cell features required to make that a reality. For more information and row/column deletion, see here.
The ability to insert pictures was introduced in version 1.6. Unfortunately, there were cases were picture insertion would create corrupt Excel files. Those cases were pictures inserted in template files where there are already other rich objects such as charts. This is now fixed.
Conditional formatting objects allow you define formula-based rules. Unfortunately so far xlsgen would hide from you any formula related syntax error. Meaning that you had no idea what was going on. This is fixed.
Range-based conditional formattings
When conditional formattings when introduced circa version 1.0, you were able to create and set conditional formattings to cells. But it's not very productive to iterate through a number of cells only to create conditional formattings on each. Range-based conditional formattings solve that. You can create a range made of one or more cell areas. And then call the appropriate method in the range object in order to create and apply a conditional formatting to the entire range. A single method call makes it possible. For more information, see here.
This property is a built-in Excel cell property. You can find it in the Alignment tab of the Format cells dialog in Excel. It has nothing to do with the row/column Auto-fit feature. Shrink-to-fit is applied at run-time in Excel. For more information, see the IXlsStyle interface.
This property is a built-in Excel cell property. You can find it in the Alignment tab of the Format cells dialog in Excel. It lets you add spaces on the left of any content of a cell. For more information, see the IXlsStyle interface.
The ability to use cells or areas in formulas is great, but the ability to use defined names (a synonym for defined names is named ranges) is greater since a formula may remain untouched while the defined name changes its definition. For more information, see formulas.
Formula code generation in the codegen tool
Improving the support for formulas in xlsgen led me to spread some of the benefits to user tools. The code generation tool so far never produced source code for formulas in Excel files. Now that is something it does. And you can choose the formula language of your choice. For more information, see here.
Formula watching in the diff tool
Improving the support for formulas in xlsgen led me to spread some of the benefits to user tools. The diff tool introduced in version 1.8 allows to watch differences in cells across two revisions of Excel files. Now it is impossible, when needed, to enable formula check instead, anytime you are interested in changes that may have occured in formulas themselves. Like the code generation tool, you can choose the formula language. The diff API also exposes this new capability. For more information, see here.
While there is a property in the worksheet object able to tell if a given cell is part of merged cells, it is consistent to be able to get this information from the introspection metadata type introduced in the previous version. Since metadata types are logically combined, a single call tells you whether or not a cell is a formula and is part of merged cells (for instance). For more information, see here.
There was a longstanding issue with Excel and xlsgen. Excel actually locks in read and write any file it opens and this obviously causes problems to xlsgen whenever xlsgen is supposed to reuse a template to create a new file. Just like Excel does, behind the scene Excel will make a copy of a locked file in the user's temp folder, then open the file from there and will tell the user this file is opened in "read-only" mode, xlsgen will make a copy of this file, and open it from there. This is particularly useful in template scenarios where you work with xlsgen while one or more templates are opened in Excel as you work/refine them.
enumFormulaLanguage : a new enumeration for formula languages
formulalanguage_en = 0,
formulalanguage_fr = 1,
enumMetadataType : a new item in an existng enumeration for cell metadata types
metadatatype_mergedcells = 4
IXlsEngineDiff interface : two new properties
HRESULT EnableFormulaCheck([out, retval] BOOL* bCheckFormulas);
HRESULT EnableFormulaCheck([in]BOOL bCheckFormulas);
HRESULT FormulaLanguage([out, retval] enumFormulaLanguage* language);
HRESULT FormulaLanguage([in]enumFormulaLanguage language);
IXlsWorkbook interface : one new property
HRESULT FormulaLanguage([out, retval] enumFormulaLanguage* language);
HRESULT FormulaLanguage([in]enumFormulaLanguage language);
IXlsWorksheet interface : one new property
HRESULT Formula([in]int row, [in]int col, [out, retval]BSTR* formula);
IXlsWorksheetColumns : a new method
HRESULT Delete();
IXlsWorksheetRows : a new method
HRESULT Delete();
IXlsStyle : 2 new properties
HRESULT ShrinkToFit([out, retval] BOOL* shrinktofit);
HRESULT ShrinkToFit([in]BOOL shrinktofit);
HRESULT Indentation([out, retval] int* indentLevel);
HRESULT Indentation([in]int indentLevel);
IXlsRange : one new method
HRESULT NewConditionalFormatting([out, retval] IXlsConditionalFormatting** cf);
What's new in version 1.8 ? (released on September 2005)
This version is several orders of magnitude faster than the previous versions (yes, you read it well). Previous versions were already much faster than Excel automation thanks to the fact that xlsgen being a dll, it gets loaded in-process into whatever host application and the whole marshalling and sandwiching of types does not occur thanks to that. On the other hand, Excel seems to do a lot more computation and object synching whenever a method is called or property is accessed, that's not what a generator like xlsgen does. For the generation phase, when an Excel workbook is created, the big perf boost was obtained by using a generalized buffer pool (essentially behaving like a home made garbage collector) which in practice allows to do plenty of things without allocating or freeing anything from the memory. For the reading phase, a substantial work has allowed to come up with a matrix for the handling of content in worksheets. This matrix allows no less than direct access to cells, unlike previous versions of the product. In short, xlsgen is much faster now and consumes a lot less memory. The automated regression check framework has been very key to make big changes to the underlying implementation without breaking anything.
Version 1.8 introduces a new end-user tool with the ability to compute differences between Excel files. It makes most sense when you are trying to figure out differences between revisions of some Excel file. The tool is a front end of a general diffing API in xlsgen. Aside computing the amount of differences, the features let you create a color-coded Excel workbook showing where the differences are, complete with hyperlinks to previous values. Alternatively, developers may want to generate an xml output and proceed from that. For more information, see here.
The diff tool has a bunch of options. All of these are exposed in the API. You can process entire folders of Excel files instead of just one pair. You can exclude one or more cell ranges, which is handy in scenarios where you know some cell always change (for instance a formula with a running date). You can also ignore the worksheet names for the diff process, which is handy whenever the changes include a rename of one or more worksheets. Last but not least, wildcards in the file paths let you accurately perform diffs between Excel files in the same folder or in different folders. For more information, see here.
With the Range object in xlsgen, it's already possible to create a range, and apply a style to all the cells that it defines ; it's also possible to read the definition of an existing named range and change its definition. Now it's possible to change the definition of an existing range and apply the underlying style to the new cells. This provides a very convenient generalized "style painting" much like the "style paint tool" in the Excel user interface. Of course, the good news is that when a range gets redefined, the new area can be the same width and height or a totally different one : the algorithm which extracts styles from the old range definition can cope with it. For more information, see ranges.
From a programmatic perspective, defining cell boundaries with 4-uples of the form (row1, col1) - (row2, col2) is very convenient because you don't have to convert those into something like Ax:By or RxxCxx:RyyCyy. Not that it's too hard, but it's straight forward to set numerical coordinates. That said, due to customer demand and a better match with existing Excel features, there has been a growing support for boundaries defined by actual ranges, that is not numerically. If you take a look at the API today, you'll probably notice that some objects only use 4-uples, while some others only use ranges, while some allow both. What has been added in the API is the ability to convert boundaries and ranges back and forth to ease working with it going forward. For more information, see ranges.
When you are working with cells, you don't always know what adjacent cells contain. Because xlsgen allows for versatile scenarios including reading and updating cells, you may actually be willing to know the extent of non-empty adjacent cells, especially horizontally and vertically in both directions. Thanks to this, you can start from a cell and figure out how many cells on your right have content until you find a blank. Another feature that works well with this is the ability to know the actual dimensions of the worksheet, that is what is the first actual row, what is the last row, and the same for columns. Combining both provides the necessary elements to use in client code. For more information, see ranges.
If you are running xlsgen under Windows XP, then a good news is that if you intend to deploy the component, you don't need to register it anymore. It's a minor improvement since registering a COM component is not like moving mountains. Nevertheless, occasionally some customers have tried without success to deploy the component in environments where registering a COM component would not even be allowed. Of course, one may want to question if that makes sense at all, when you know that Windows and all Microsoft products itself are heavily baked with COM and that any of their products install tens sometimes hundreds of them. But that's not the question. With XP, Microsoft has introduced a feature called side-by-side which allows one to define in a file the dependencies of an application and force them into the XP dll loader. This file known as a manifest file has a direct effect on the behavior of the operating system whenever a component needs to be loaded, including COM components. With this version, the setup installs a default general purpose manifest file called xlsgen_client.exe.manifest where xlsgen_client.exe is the exact name of a fictitious client application. Whenever an application starts on XP, it uses such manifest file (to be renamed), the XP dll loader uses it before it tries to read the registry in order to load COM components. If the COM component is in the same directory than the application, i.e. if the file xlsgen.dll is in the same directory than the application, then the component is loaded from there without even reading the registry for the actual underlying CLSID, progid and typelib definitions and file indirections. The result of this is that an application can create instances of the COM component without having the COM library use the registry at all. On older operating systems, this optional manifest file is ignored and the registry is used.
Windows XP has introduced a new version of the common controls dll in the system directory which quite changes the look of basic controls such as buttons, edit boxes, and so on. All end-user tools coming with the xlsgen package now embed the XP common controls manifest in order to take advantage of that. This includes the code generator, the search tool and the diff tool. In older operating system versions however, the user interface is left unchanged, but it still works! Of course, not only that but the user interface was intentionally made more modern thanks to a code relying on resizable dialogs instead of default dialogs. The net effect being that the user interface adapts better to the display needs, especially arbitrarily lengthy file paths. The resizable dialogs is not an operating system feature, it's available on all of them.
Another improvement on the end-user tool front is the fact that each file or keyword or check you type or check is now persisted by the application in order to avoid having to re-type or re-check those over and over again.
With this version, Xml becomes a first-class citizen. Any worksheet's content can be exported to Xml. The content exported is restricted to cells. The Xml schema is simple and concise. The Xml export generates a square matrix of cells content with its dimensions in the header. The Xml is concise, each row and column is a one character element. Attributes define the cell data type. Besides this, the encoding is UTF-8 to accomodate both global needs as well as the intrinsic compression provided by UTF-8 over Fix-sized Unicode. You probably want to export a worksheet to Xml in order to have it parse by some other tool possibly not available on Windows, or on the same computer. As of date, xlsgen does not import Xml though. For more information, see here.
CSV, much like Xml, lets you bind the output of Excel content into other tools. CSV has its problems, but is a format well accepted by many popular tools, and is very easy to parse. Which makes it very convenient. The CSV export of a worksheet uses the semi-colon has a cell separator. Any time a semi-colon exists in some cell, it is escaped with double quotes at the beginning and the end of the cell. Whenever there are double quotes characters inside the cell, those are doubled in order to remove any ambiguity. When you export a worksheet as CSV, you can either have the cell content encoded in UTF-8 or simply use the local charset. For internationalization purposes, the UTF-8 encoding is preferred. For more information, see here.
The new row/column objects allow to insert an arbitrary number of rows or columns right in the middle of nowhere. It may look like a non-issue, but it actually is since in a matrix the only way to insert rows or columns is by moving other cells away, and since some cells overlap other cells, this turn out to be stitching art. row/column insertion is long overdue for a general purpose Excel generator. But as just said, the implementation is not trivial. What happens to rows beyond 65536, and what happens to columns beyond 256? They are left stuck in the boundaries. This behavior will be reconsidered if it causes too many non-intuitive behaviors. For more information, see here.
row/column grouping is an evolution of the object model. So far, you would access cells individually, and not even with a Cell object itself. In fact, you would directly use a (row,col) pair in conjunction with the target operator, eg. a Label. Grouping gives you access to an arbitrary group of rows and an arbitrary group of columns. Each group can then be applied a number of methods, like its size. For more information, see here.
row/column autofit is also another long overdue feature. The only way to ensure that an Excel workbook looks well when it's opened is to set rows and columns as auto-fit. When doing so, an algorithm computes the largest width or height and automatically sets the width or height of columns or rows accordingly. Of course, since it's a computation intensive algorithm, it's encouraged not to use this feature in each and every cell of very large workbooks. The bonus of auto-fit is that you never have to bother setting widths or heights in terms of pixels or other units. For more information, see here.
Introspection of cell data types
Reading and updating values in cell has been available for a while, but what was not provided is the built-in discovery of the underlying data types. Each cell has a data type among these : number (integer), float (simple precision), double (double precision), string, time, date, datetime (that is a combination of a date and time). A cell may also have a floating metadata type. Among these are : hyperlink, formula. This lets you act on a much better fine-grained knowledge of the content being manipulated. The API lets you introspect the data type and the metadata type on a per cell basis, while the Xml export automatically attaches the data type to Xml elements. For more information, see here.
Introspection : know if a given cell is part of a merged cell grouping
When you are manipulating cells, it may be important in some scenarios to know if a cell is part of a merged cell grouping, since changing its formatting or value can have weird effects on the look of the overall worksheet. In other words, assuming cells are independent one another is not always a right assumption. For more information, see here.
Introspection : dimensions of a worksheet
There is now built-in dimension properties to query whenever you need to know the exact boundaries of a worksheet. Those properties are updated in real-time so you don't need to be at a particular stage only to query those. Needless to say, having those properties simply cuts the need for row/column iterations. For more information, see here.
Freezing worksheet panes allows to keep a fraction of a worksheet frozen while the rest slides as the user scrolls through it. It is very convenient to keep table headers visible. This option is available in Excel in the Windows menu. You may be willing to unfreeze panes as well. For more information, see here.
Alternatively to freezing worksheet panes, you can also split them into two panes, or four panes. Each pane can then independently be scrolled. In Excel, splitting panes is achieved by dragging the widget at the top of the vertical scrollbar, and the widget at the left of the horizontal scrollbar respectively. You may also want to unsplit panes. For more information, see here
A special regard has been to ensure that Excel files produced by xlsgen, either newly created or from reusing existing Excel files, would be able to open and work properly in OpenOffice. There are a few quirks, due to the fact that OpenOffice is not yet a complete replacement for MS Excel, but these are minor ones. You should feel confident to use OpenOffice, especially when you know that OpenOffice is available on so many more platforms than just Windows.
Functions are added on a customer demand basis. In version 1.8, import time functions have been added. Included are : =HOUR(xxx), =MINUTE(xxx), =SECOND(xxx), =YEAR(xxx), =MONTH(xxx), =DAY(xxx), =NOW(), =TODAY(). For more information, see here.
Formula parenthesis handling improvement
A problem with prior versions of xlsgen is that, while parenthesis were of course not ignored in formulas, they would be removed in the translation process. This could cause problems in Excel at run-time, whether for the computation phase, or whenever somebody would edit the formula only to find out that (s)he had to add the parenthesis again. This bug is fixed.
There has been customer demand in the past for a more comprehensive support of the Page Setup options. Although prior versions support a good share of those options in Excel, some of these were not. Now the print paper size is supported. For instance, "A4", "LETTER" and so on. The full list of supported paper sizes is available here.
In Excel XP and more recent versions, a new worksheet tab color option has been added. xlsgen supports it. This feature degrades nicely in older Excel versions in the sense Excel workbooks can still be opened and the feature is simply ignored. The feature is taken advantage of in the diff tool in order to show with more clarity the changes that have occurred in worksheets, but it's also made available as a general purpose feature. Setting the color of a worksheet tab is as easy as passing an RGB triple. See here for more information.
Development : C++ interface headers
While using the xlsgen object model with C++ is almost as simple as with higher-level more RADish languages like VB, it's not less true that a good reason for that is the existence of smart pointers wrappers automatically generated by importing the xlsgen type library. Now those of us using C++ raw pointers, for a reason of their own, may find it hard or harder to use. The first step consists in extracting the type library from the component, and using the MIDL compiler in order to generate the proxy-stub interfaces headers. These are two files, suffixed _i.h and _i.c. There was a documented step-by-step procedure to obtain and use those, but it proved a bit hard in practice. Now the install adds those two files in the application directory, under the C++ interface headers directory. If you are not a C++ programmer, you may want to ignore those.
A new language appears in the supported code generator arsenal : Java. It's not only Java, it's all Java versions out there since the object model uses none of the specificities of 1.x releases. Of course, it's still Windows only since the implementation uses a proxy layer to the COM layer. Java is thus supported in the code generation tool, the drop down has a new member. And there are a few code samples in Java. For more information see here.
Preserve styles in when working with templates
Preserving styles allows to give precedence to existing styles in templates. It is a very handy property in scenarios where you update a template file where some cells were formatted and you simply want to fill them with content, retaining all the formatting. For more information see here.
enumLanguage : a new language supported!
gencode_java = 5
enumStyleOption : a new enumeration for style management
styleoption_user = 0,
styleoption_preserve = 1,
enumDataType : a new enumeration for cell data types
datatype_notapplicable = 0,
datatype_number = 1,
datatype_float = 2,
datatype_double = 3,
datatype_date = 4,
datatype_time = 5,
datatype_datetime = 6,
datatype_string = 7
enumMetadataType : a new enumeration for cell metadata types
metadatatype_notapplicable = 0,
metadatatype_hyperlink = 1,
metadatatype_formula = 2
IXlsEngine interface : one new method
HRESULT Diff([in]BSTR excelfilename_older,
[in]BSTR excelfilename_newer,
[out, retval] IXlsEngineDiff** diff);
IXlsEngineDiff interface : a new interface
HRESULT AreEqual([out, retval] BOOL* diffresult);
HRESULT CountDifferences([out, retval] BOOL* countdifferences);
HRESULT GenerateDiffWorkbook([in]BSTR newexcelfilename,
[out, retval] IXlsWorkbook** workbook);
HRESULT GenerateDiffWorkbookInMemory([in]IUnknown* lockbytes,
[out, retval] IXlsWorkbook** workbook);
HRESULT GenerateDiffXml([in]BSTR xmlfilename);
HRESULT IgnoreWorksheetNames([in]BOOL bIgnore);
HRESULT IgnoreWorksheetNames([out, retval]BOOL* bIgnore);
HRESULT ExcludeRange([in]int row1, [in]int col1,
[in]int row2, [in]int col2);
HRESULT ExcludeRangeRef([in]BSTR cellrange);
IXlsWorkbook interface : one new property
HRESULT StyleOption([out, retval] enumStyleOption* styleOption);
HRESULT StyleOption([in]enumStyleOption styleOption);
IXlsWorksheet interface : 15 new methods/properties
HRESULT Dimensions([out, retval]IXlsWorksheetDimensions** dimensions);
HRESULT Export([out, retval]IXlsWorksheetExport** exporter);
HRESULT Columns([in]BSTR range,
[out, retval]IXlsWorksheetColumns** columns);
HRESULT Rows([in]BSTR range,
[out, retval]IXlsWorksheetRows** rows);
HRESULT CellToRangeR1C1([in]int row, [in]int col,
[out, retval]BSTR* cellrange);
HRESULT CellToRangeAX([in]int row, [in]int col,
[out, retval]BSTR* cellrange);
HRESULT AreaToRangeR1C1([in]int row1, [in]int col1,
[in]int row2, [in]int col2,
[out, retval]BSTR* cellrange);
HRESULT AreaToRangeAXAX([in]int row1, [in]int col1,
[in]int row2, [in]int col2,
[out, retval]BSTR* cellrange);
HRESULT HorizontalPane([out, retval]IXlsWorksheetPane** pane);
HRESULT VerticalPane([out, retval]IXlsWorksheetPane** pane);
HRESULT MergedCells([in]int row, [in]int col,
[out, retval] IXlsMergedCells** mc);
HRESULT CellType([in]int row, [in]int col,
[out, retval] enumDataType* datatype);
HRESULT CellMetadataType([in]int row, [in]int col,
[out, retval] enumMetadataType* datatype);
HRESULT TabColor([out, retval] int* nRGB);
HRESULT TabColor([in]int nRGB);
IXlsWorksheetDimensions : a new interface
HRESULT FirstRow([out, retval] int* row);
HRESULT LastRow([out, retval] int* row);
HRESULT FirstColumn([out, retval] int* col);
HRESULT LastColumn([out, retval] int* col);
IXlsWorksheetExport : a new interface
HRESULT ExportAsCSV([in]BSTR csvfilename, [in]BOOL bUseUTF8Encoding);
HRESULT ExportAsXML([in]BSTR xmlfilename, [in]BOOL bExportDatatypes);
IXlsWorksheetColumns : a new interface
HRESULT Width([out, retval]int* width);
HRESULT Width([in]int width);
HRESULT AutoFit([out, retval]BOOL* autofit);
HRESULT AutoFit([in]BOOL autofit);
HRESULT Insert([in]int amountColumns);
HRESULT TopExtent([in]int row, [out, retval]int* toprow);
HRESULT BottomExtent([in]int row, [out, retval]int* bottomrow);
IXlsWorksheetRows : a new interface
HRESULT Height([out, retval]int* height);
HRESULT Height([in]int height);
HRESULT AutoFit([out, retval]BOOL* autofit);
HRESULT AutoFit([in]BOOL autofit);
HRESULT Insert([in]int amountRows);
HRESULT LeftExtent([in]int col, [out, retval]int* leftcol);
HRESULT RightExtent([in]int col, [out, retval]int* rightcol);
IXlsWorksheetPane : a new interface
HRESULT Split([out, retval]BOOL* split);
HRESULT Split([in]BOOL split);
HRESULT SplitLimit([out, retval]int* rowOrColumn);
HRESULT SplitLimit([in]int rowOrColumn);
HRESULT FirstVisibleItemAfterSplit([out, retval]int* rowOrColumn);
HRESULT FirstVisibleItemAfterSplit([in]int rowOrColumn);
HRESULT Freeze([out, retval]BOOL* freeze);
HRESULT Freeze([in]BOOL freeze);
IXlsRange : 4 new methods/properties
HRESULT Top([out, retval]int* row);
HRESULT Left([out, retval]int* col);
HRESULT Right([out, retval]int* col);
HRESULT Bottom([out, retval]int* row);
IXlsPageSetup : one new property
HRESULT PaperSize([in]BSTR papersize);
What's new in version 1.7 ? (released on June 2005)
Pick lists are a special case of tool among Excel data validation tools. It allows one to assign a special dropdown to a range of cells so that users can select a value among the ones available from the dropdown. Pick lists are covered in more details here.
Duplicating the content of worksheets is the latest worksheet operation added to the API. So far you could create, rename, move, hide, delete worksheets, now you can copy them. When a worksheet is duplicated, you can select where it gets inserted. For more information, see worksheet management.
An Excel file is usually created on the file system. Whether you create a file from scratch or based on an existing file, you still end up creating files. This may not be as convenient under certain circumstances, where write access to the file system is forbidden for instance. To accomodate this, xlsgen now can write the content directly into a memory stream, and then you can either pass the stream over to an application and/or simply dump the stream in a file (as demonstrated in one of the samples). For more information, see in-memory generation.
Support for VB.NET in the reverse engineering tool
While support for VB and VBScript languages already shows how much xlsgen is committed to offering support for popular languages, the addition of VB.NET allows to fuse direct support for your .NET environment other than C#. With earlier versions, you had to take the resulting VB code, and make a few changes in the syntax in order to comply with the syntactic changes between VB and VB.NET. You don't need to do this anymore. Simply start the code generator tool, and drop down the list of available languages.
Protect a worksheet, lock/unlock cells
This Excel feature that wasn't supported so far enables unexpected scenarios. While cells are locked by default, locking is really only activated in Excel if you change the worksheet properties. Once activated, only unlocked cells can be edited. This allows one to pass Excel workbooks to peer and let them fill in info in appropriate cells while leaving everything else intact. xlsgen adds an API at the worksheet level which lets you do just that, activate the worksheet protection, and then each style has an API to let you lock/unlock cells at will. Note that because lock/unlock cell flags are stored in Excel styles rather than cells itself, you may need to create new styles accordingly. For more information, see here.
So far xlsgen only supported the R1C1 notation when it came to creating/reusing ranges and or using ranges in formulas. While the R1C1 notation makes very clear what it targets, there was a demand to support the more natural notation Ax, for instance A3 for a cell or A1:B4 for a range. If you are porting Excel automation code over to xlsgen, or if you are simply used to the Ax notation, then you don't have to worry about this anymore. There is no new method call in the xlsgen object model, just use the range object model like before.
Support for worksheet names in formulas
xlsgen now supports worksheet names cell references and area references in formulas which not only to target the current worksheet but also other worksheets of the same workbook. For instance, you can use Sheet1!A1. If your worksheet name has spaces, make sure to use apostrophes, as in 'My Worksheet'!A1.
Support for relative cell references
xlsgen now supports relative cell references. There is nothing to do about it, it's the default now. What's the difference between absolute and relative cell references? If you use an Excel operator to sort columns and rows, then formulas with relative cell references automatically adapt the changes accordingly, while formulas with absolute cell references won't.
While Excel lets one with most freedom in its choice of name when it comes to worksheet names or named ranges, it's actually not entirely true. Worksheet names cannot be larger than 31 characters and several characters are forbidden : * / ? \ [ ] :. By analogy, but for different reasons, named ranges also don't accept spaces. Whenever you are using those names, xlsgen will throw an exception if you are making a use that is not compatible with the above.
A small change in the page setup is the ability to decide whether gridlines should be printed or not, on a per worksheet basis. For more information, take a look at the IXlsPageSetup interface.
Improvement in the documentation
Any method call or property in the object model now has a help string which explains what it does and most often what to pass in parameters. Those help strings are displayed in your development environment through intellisense or the object browser. In addition, a documentation that aggregates all COM interfaces and methods is available to complement or replace the current documentation. Just like the main CHM based documentation, it has a search option which lets you find methods based on keywords.
More comprehensive support for dates
xlsgen supports date types from the start. Actually there is no such thing as a date type in Excel so using dates is more about understanding how to transpose a date back and forth.
xlsgen supports date types from the start. Actually there is no such thing as a date type in Excel so using dates is more about understanding how to transpose a date back and forth. For that matter, an article is now part of the documentation, and applies to both Excel itself, and xlsgen.
enumLanguage : one new code-generated language
gencode_vb = 0,
gencode_cplusplus = 1,
gencode_csharp = 2,
gencode_vbscript = 3,
gencode_vbdotnet = 4
IXlsEngine : 2 new methods
HRESULT NewInMemory([in]IUnknown* lockbytes,
[out, retval] IXlsWorkbook** workbook);
HRESULT OpenInMemory([in]BSTR excelfilename,
[in]IUnknown* lockbytes,
[out, retval] IXlsWorkbook** workbook);
IXlsWorksheet : 3 new methods
HRESULT NewDataValidation([in]int row1, [in]int col1,
[in]int row2, [in]int col2,
[out, retval] IXlsDataValidation** dv);
HRESULT Duplicate([in]BSTR newworksheetname,
[out, retval] IXlsWorksheet** worksheet);
HRESULT LockProperties([out, retval]IXlsWorksheetLockProperties** lockproperties);
IXlsWorksheetLockProperties : new interface
HRESULT Content([out, retval] BOOL* lock);
HRESULT Content([in]BOOL lock);
HRESULT Objects([out, retval] BOOL* lock);
HRESULT Objects([in]BOOL lock);
HRESULT Scenarios([out, retval] BOOL* lock);
HRESULT Scenarios([in]BOOL lock);
IXlsPageSetup interface : 1 new property
HRESULT PrintGridlines([in]BOOL gridlines);
HRESULT PrintGridlines([out, retval]BOOL* gridlines);
IXlsStyle : 1 new property
HRESULT Locked([out, retval] BOOL* locked);
HRESULT Locked([in]BOOL locked);
IXlsDataValidation : new interface
HRESULT AddItem([in]BSTR label);
What's new in version 1.6 ? (released on November 2004)
Support for pictures (jpg, png, wmf, emf, dib)
xlsgen now has a comprehensive support for pictures in Excel workbooks. All major picture types are supported. Each picture is inserted as a blob in the workbook thus you can remove that picture from your hard drive without worrying. Pictures can be accurately positioned in any worksheet using a combination of (row,col) pairs, as well as offsets within the cell, virtually allowing for pixel-precise positioning. For more information, look here.
A flag to know whether a cell stores a formula
Responding to customer feedback, the ability to know whether a given cell stores a formula has been added. This allows introspection within arbitrary Excel workbooks, and is especially useful when you are updating an Excel workbook.
IXlsWorksheet interface, several new properties and methods
HRESULT ContainsFormula([in]int row, [in]int col,
[out, retval]BOOL* ContainsAFormula);
HRESULT Picture([in]BSTR filename,
[in]int row1, [in]int col1,
[in]int row2, [in]int col2,
[in]int topoffset, [in]int leftoffset,
[in]int bottomoffset, [in]int rightoffset);
What's new in version 1.5 ? (released on August 2004)
An addition to xlsgen over previous version is the ability to reorder and possibly delete one or more worksheets to satisfy more scenarios. These two are particularly interesting when reading an excel template file in which you want to retain only a fraction of the available worksheets, and you might also want to reorder the worksheets for your needs. This page explains how the features work. For more information, take a look at the new methods available in IXlsWorksheet, the DisplayOrder and Delete methods.
Even though the code generator shipped along with xlsgen does indeed access and expose content from cells, some scenarios might require to do just that at run-time without relying on the code generator. For instance, someone might want to extract the current cell value, perform some calculation on it like increment it, and put the value back into the worksheet. Access to cell values allows just that. So far, xlsgen has exposed a few properties at the worksheet level allowing write-access to cell values, including Label, Number, Float, ...Read-access has been added using the same properties to gain access to every possible cell of any existing Excel worksheet, and even a worksheet that is being generated. This page explains how the features work.
Version 1.4 introduced outline as a way to group then expand/collapse a series of cells, whether horizontally or vertically. Unfortunately, so far outline was only available with merged cells, a particular usage that might not suit someone's needs. The new outline object is now a general-purpose outline related feature that allows grouping and then expand/collapse of an arbitrary group of cells, whether vertically, horizontally, or both at the same time. For more information, see the updated outline showcase. Also make sure to take a look at the new IXlsOutline interface. Outlines are created with two new methods available from the current worksheet.
It's now possible to insert page breaks to any worksheet. Page breaks are either vertical or horizontal. Two new methods have been added to the worksheet interface. A page break may not automatically show when opening the Excel workbook : sometimes clicking on the Print preview button is required.
Zoom and default column/row sizes
Several new worksheet properties are accessible, including the ability to define or retrieve the zoom factor, the default column width and the default row height. These properties have been added to the worksheet interface;
IXlsWorksheet interface, several new properties and methods HRESULT DisplayOrder([in]int newindex); HRESULT DisplayOrder([out, retval]int* index); HRESULT Delete(); HRESULT InsertHorizontalPageBreak([in]int row); HRESULT InsertVerticalPageBreak([in]int col); HRESULT NewOutline([in]int row1, [in]int col1, [in]int row2, [in]int col2, [out, retval] IXlsOutline** ot); HRESULT AssignOutline([in]IXlsOutline* ot); HRESULT DefaultColWidth([in]int colwidth); HRESULT DefaultColWidth([out, retval]int* colwidth); HRESULT DefaultRowHeight([in]int pixels); HRESULT DefaultRowHeight([out, retval]int* pixels); HRESULT Zoom([in]int percent); HRESULT Zoom([out, retval]int* percent); IXlsOutline, new object HRESULT Label([in]BSTR label); HRESULT Number([in]int n); HRESULT Float([in]double f); HRESULT Formula([in]BSTR formula); HRESULT RichLabel([in]IXlsRichLabel* rl); HRESULT Hyperlink([in]IXlsHyperlink* rl); HRESULT HorizontalOutlineLevel([out, retval]enumOutlineLevel* outline); HRESULT HorizontalOutlineLevel([in]enumOutlineLevel outline); HRESULT HorizontalOutlineExpand([out, retval]BOOL* expanded); HRESULT HorizontalOutlineExpand([in]BOOL expanded); HRESULT VerticalOutlineLevel([out, retval]enumOutlineLevel* outline); HRESULT VerticalOutlineLevel([in]enumOutlineLevel outline); HRESULT VerticalOutlineExpand([out, retval]BOOL* expanded); HRESULT VerticalOutlineExpand([in]BOOL expanded);
What's new in version 1.4 ? (released on July 2004)
Excel ranges are a great addition to xlsgen. Combining ranges and styles allows the decoupling of data in worksheets and formatting, which allows for far less code to generate the same content than using previous xlsgen releases. For more information, see ranges.
With this xlsgen release, strings in worksheets are now automatically factorized to save space. This is particularly effective when generating content from data organized like SQL joins where many records are partial duplicates. The factorized strings option can be turned off. For more information, see IXlsWorkbook.
Page setup properties can be defined. Properties are the print area for each worksheet (actually a special case of range), portrait versus landscape layout, scaling, fit to width/height, margins, and the header and footer for each worksheet. These properties allow a better anticipation of Excel workbooks printing. For more information, see IXlsPageSetup.
API additions in version 1.4 include :
IXlsWorkbook interface, one new property
HRESULT FactorizedStringsMode([out, retval] BOOL* bFactorizedStringsMode);
IXlsWorksheet interface, several new properties and methods
HRESULT NewRange([in]BSTR cellrange, [out, retval]IXlsRange** range);
HRESULT Range([in]BSTR name, [out, retval] IXlsRange** range);
HRESULT PageSetup([out, retval] IXlsPageSetup** pagesetup);
HRESULT Selected([in]BOOL selected);
HRESULT Hidden([in]BOOL hidden);
Select([in]int row1, [in]int col1, [in]int row2, [in]int col2);
HRESULT Name([in]BSTR worksheetname);
IXlsRange, a new interface
interface IXlsRange
{
HRESULT Style([out, retval] IXlsStyle** style);
HRESULT AddSubRange([in]BSTR cellrange);
HRESULT AddCellsRange([in]int row1, [in]int col1, [in]int row2, [in]int col2);
HRESULT Range([out, retval] BSTR* cellrange);
HRESULT Range([in] BSTR cellrange);
HRESULT Name([out, retval] BSTR* name);
HRESULT Name([in] BSTR name);
HRESULT Apply();
}
IXlsPageSetup, a new interface
interface IXlsPageSetup
{
HRESULT PrintArea([in]BSTR cellrange);
HRESULT SetMargins([in]double left, [in]double top,
[in]double right, [in]double bottom,
[in]double header, [in]double footer);
HRESULT PageOrientation([in]BOOL portrait);
HRESULT Scale([in]int scale);
HRESULT SetFitWidth([in]int width, [in]int height);
HRESULT PageHeader([in]BSTR docheader);
HRESULT PageFooter([in]BSTR docfooter);
}
IXlsBorders, two new borders, and common border property accessors
HRESULT MidHorizontal([out, retval] IXlsBorder** border);
HRESULT MidVertical([out, retval] IXlsBorder** border);
HRESULT Style([in]enumBorderStyle style);
HRESULT Color([in]int nRGB);
What's new in version 1.3 ? (released on June 2004)
The Excel search tool is a versatile and blazingly fast keyword searcher within Excel workbooks. It can find keywords based on some options (including wildcards, which is much like Windows Explorer) across Excel workbooks. Excel workbooks that will be looked up include Excel 95, Excel 97, Excel 2000, Excel XP and Excel 2003. The Excel search tool is a separate tool based on the search API exposed by xlsgen. Results can be double-clicked to open the matches in Excel workbooks in an accurate manner : the worksheets are positioned onto the cell matches. Results can also be exported to a flat file for further analysis. For more information on how to use this new tool, see here. For more information on the API interface, see here.
Hyperlinks provide report-to-report linking and more to Excel workbooks. Hyperlinks are natively supported in Excel, and now generated by xlsgen. Hyperlinks can be simple urls, or local files or existing Excel workbooks. When targeting Excel workbooks, cell references and named ranges are supported in such a way that it is possible to provide appealing navigation scenarios and enrich your Excel workbooks with exciting capabilities. For more information on hyperlinks, see here.
Outline in Excel is the ability to group blocks of cells so that they can be expanded or collapsed on demand. Outline guts appear on the side of Excel worksheets, either on the left or on the top. Options provided as part of the outline API interface is the ability to choose the nesting level of outline, as well as the default expanded/collapsed state. For more information on outline, see here.
ASP VBScript as a language addition to the code generator
Because the code generator produces Visual Basic with early-automation patterns, it has become useful to produce code in late-automation languages like VBScript. In addition, VBScript is the default and most widely used language in ASP web design scenarios. Automatically generating ASP VBScript code from an existing Excel workbook enables new server-side scenarios that range from simple presentation, customization to much more advanced data analysis.
API changes in version 1.3 include :
in languages supported by the code generator, addition of ASP VBScript
typedef enum
{
gencode_vb=0,
gencode_cplusplus=1,
gencode_csharp=2,
gencode_vbscript=3
} enumLanguage;
outline support
typedef enum
{
outline_level0 = 0,
outline_level1 = 1,
outline_level2 = 2,
outline_level3 = 3,
outline_level4 = 4,
outline_level5 = 5,
outline_level6 = 6,
outline_level7 = 7
} enumOutlineLevel;
IXlsEngine interface, one new method
HRESULT Search([in]BSTR excelfilename, [out, retval] IXlsSearch** search);
IXlsWorksheet interface, two new methods
HRESULT NewHyperlink([out, retval] IXlsHyperlink** hlink);
HRESULT Hyperlink([in]int row, [in]int col, [in]IXlsHyperlink* hlink);
IXlsHyperlink, a whole new interface
interface IXlsHyperlink
{
HRESULT Label([in]BSTR label);
HRESULT FileTarget([in]BSTR filename);
HRESULT UrlTarget([in]BSTR url);
HRESULT CellAnchor([in]BSTR sheetname, [in]int row, [in]int col);
HRESULT NamedAnchor([in]BSTR name);
HRESULT RenderAsHyperlink([in]BOOL renderingstyle);
HRESULT RelativeFilepath([in]BOOL relativefilepath);
}
IXlsSearch, a whole new interface
interface IXlsSearch
{
HRESULT Options([out, retval]IXlsSearchOptions** options);
HRESULT SearchKeyword([in]BSTR keyword, [out, retval]IXlsSearchResults** results);
}
IXlsSearchOptions, a whole new interface
interface IXlsSearchOptions
{
HRESULT CaseSensitive([in]BOOL casesensitive);
HRESULT CaseSensitive([out, retval]BOOL* casesensitive);
HRESULT RemoveDuplicates([in]BOOL removeduplicates);
HRESULT RemoveDuplicates([out, retval]BOOL* removeduplicates);
HRESULT UsesWildcards([in]BOOL useswildcards);
HRESULT UsesWildcards([out, retval]BOOL* useswildcards);
}
IXlsSearchResults, a whole new interface
interface IXlsSearchResults
{
HRESULT WorksheetCount([out, retval]long* results);
HRESULT WorksheetItem([in]int i, [out, retval]IXlsSearchWorksheetResult** result);
HRESULT Export([in]BSTR filename);
}
IXlsSearchWorksheetResult, a whole new interface
interface IXlsSearchWorksheetResult
{
HRESULT Name([out, retval]BSTR* worksheetname);
HRESULT Count([out, retval]long* results);
HRESULT Item([in]int i, [out, retval]IXlsSearchResult** result);
}
IXlsSearchResult, a whole new interface
interface IXlsSearchResult
{
HRESULT Row([out, retval]int* row);
HRESULT Col([out, retval]int* col);
}
IXlsMergedCells interface, one new method and 2 new properties
HRESULT Hyperlink([in]IXlsHyperlink* rl);
HRESULT OutlineLevel([out, retval]enumOutlineLevel* outline);
HRESULT OutlineLevel([in]enumOutlineLevel outline);
HRESULT OutlineExpand([out, retval]BOOL* expanded);
HRESULT OutlineExpand([in]BOOL expanded);
The enumLanguage now supports one more language, ASP VBScript, which simplifies using xlsgen in server-side scenarios. The new enumOutlineLevel enumeration allows to define the outline level of blocks of cells, typically merged cells. You can access outlining in Excel by grouping rows or columns with the Data / group menu.
The Search method lets anyone search arbitrary Excel workbooks (Excel 95, 97, 2000, XP, 2003) for keywords. Based on one or more keywords and search options, this method produces result pages.
The NewHyperLink and Hyperlink methods respectively let anyone create flexible hyperlinks and attach them to any worksheet cell.
The IXlsHyperlink interface lets anyone define an hyperlink with a broad range of capabilities. Hyperlinks can be either simple urls, with or without anchors, or local files, or Excel workbooks with or without a cell target or a named range target. Intra hyperlinks, links inside the same workbook, are also supported.
The IXlsSearch interface lets anyone define a search process with one or more keywords and one or more options.
The IXlsSearchOptions interface sets the search options, among which the ability to disable case sensitiveness, to avoid more than one result per worksheet, and to use wildcards like *.
The IXlsSearchResults interface represents results from a search process and let anyone either retrieve results on a worksheet by worksheet basis, or just export the results into a flat file.
The IXlsSearchWorksheetResult interface brings all result for the current worksheet of the current workbook. It lets a client application filter out results based on some application logic.
The IXlsSearchResult interface brings the definition for any cell match. Worksheet names are also match candidates.
The Hyperlink method in the IXlsMergedCells interface attaches a previously defined hyperlink to a merged cells block.
The two OutlineLevel and OutlineExpand tell whether the merged cells block should be associated to outlining either on the left of the worksheet, or on the top, and whether the outline should be expanded or not.
What's new in version 1.2 ? (released on April 2004)
code generator
Code generator is a fantastic tool that lets you automatically generate the code that will produce an Excel existing workbook. A useful scenario is to use Excel interactively to format a report, then use the code generator to see all the xlsgen-compliant code for it. This reduces the time to automate your report generation. For more information, see code generator.
API changes in version 1.2 include :
typedef enum
{
gencode_vb=0,
gencode_cplusplus=1,
gencode_csharp=2
} enumLanguage;
IXlsEngine interface, a new method is added
HRESULT GenerateCode([in]BSTR excelfilename,
[in]BSTR txtfilename,
[in]enumLanguage language);
IXlsWorksheet interface, 3 new properties are added
[propput] HRESULT MultipleColWidth([in]int colstart, [in]int colend, [in]int width);
[propput] HRESULT MultipleRowHeight([in]int rowstart, [in]int rowend, [in]int height);
[propput] HRESULT DefaultStyle([in]int index);
IXlsRichLabel interface, 1 new method
HRESULT LabelWithDefaultStyle([in]BSTR label, [in]int styleindex);
The GenerateCode method is the programmatic interface for the code generation tool.
The MultipleColWidth and MultipleRowHeight properties define the width or the height of multiple columns or rows with a single statement. These properties are useful for both the forward and reverse generation used in xlsgen.
The two remaining properties are useful for the reverse generation and not will probably not be used intentionally by xlsgen programmers.
What's new in version 1.1 ? (released on March 2004)
read a template Excel file
It's the ability to reuse existing Excel workbooks. Thanks to it, Excel workbooks don't have to be generated from scratch anymore.
multi-threading support
Multi-threading provides the ability to create multiple Excel workbooks simultaneously. This is a great addition to version 1.0, especially when it comes to mission-critical and robust server-side generation. Thanks to this, it is not anymore required to host each xlsgen instance in separate processes.
API changes in version 1.1 include :
IXlsEngine interface, a new method is added
HRESULT Open([in]BSTR excelfilename,
[in]BSTR newexcelfilename,
[out, retval] IXlsWorkbook** workbook);
IXlsWorkbook interface, 3 new properties are added
[propget] HRESULT WorksheetCount([out, retval] int* count);
[propget] HRESULT WorksheetByIndex([in]int index, [out, retval] IXlsWorksheet** worksheet);
[propget] HRESULT WorksheetByName([in]BSTR name, [out, retval] IXlsWorksheet** worksheet);
IXlsWorksheet interface, one new property is added
[propget] HRESULT StyleFromLocation([in]int row, [in]int col, [out, retval] IXlsStyle** style);
The Open method lets you open an existing Excel workbook and reuse its content, tables, charts, pivots and macros as templates. Very powerful method. Fore more information, see here.
The Worksheet-related properties let you get an existing worksheet and start working on it. This property is useful whenever, for instance, you want to say add content to the first sheet of a 3-sheet workbook. Those properties expose existing Excel worksheets as templates.
The Style property lets you query a style object at an arbitrary (row, column) coordinate of an existing worksheet, letting you reuse styles. Reusing styles cuts down the burden of creating your own from scratch, and saves time. The style object in turn has many readable properties and exposes the number formatting, font, alignment, borders and fill pattern. This property exposes existing Excel styles as templates.
What's in version 1.0 ? (released on December 2003)