xlsgen 5.0.0.16 : Fix for page breaks Build 5.0.0.16 of xlsgen fixes a problem related to page breaks in XLSX and XLSB files which appears in Excel's user interface.
Excel can't handle print areas made of adjacent areas, as it breaks print previews in Excel, so a special flag is added to disable the problem altogether.
|  |  | Posted on 29-September-2023 19:27 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.15 : Advanced data sortingBuild 5.0.0.15 of xlsgen adds advanced data sorting. Before this build, sorting on values was already available. This build adds the following : - on values
- on cell color : background cell color or font color
- on associated icon (related to icon-based conditional formatting)
This is illustrated as follows : Sort on values (ascending) by column C Sort on background cell color (descending) by column D Sort on cell font color (ascending) by column E Sort on icons (ascending) by column GAny number of sort conditions can be added (up to 3 if you target XLS files) so if you'd like to sort on column C then on column D, the corresponding conditions can be added to the tree of conditions, accordingly. Here is an example for sorting on background cell color : | C++ code |
xlsgen::IXlsWorkbookPtr wbk = engine->Open( L"data.xls", L"output.xls" );
xlsgen::IXlsWorksheetPtr wksht = wbk->WorksheetByIndex[1];
xlsgen::IXlsRangePtr r = wksht->NewRange(L"C4:F7"); xlsgen::IXlsSortPtr sort = r->NewSort();
xlsgen::IXlsSortConditionPtr sc = sort->NewCondition();
sc->SortOnWhat = xlsgen::sortcondition_oncellbkgndcolor; // cell background color is used as sort criteria sc->columnIndex = 2; // 2nd column of the range, i.e. column D sc->SortColor = 0xFFFF00; // 0xFFFF00 = yellow
sort->Apply();
|
And another one for sorting on icons (related to existing conditional formatting of type icon) : | C++ code |
xlsgen::IXlsWorkbookPtr wbk = engine->Open( L"data.xls", L"output.xls" );
xlsgen::IXlsWorksheetPtr wksht = wbk->WorksheetByIndex[1];
xlsgen::IXlsRangePtr r = wksht->NewRange(L"C4:F7"); xlsgen::IXlsSortPtr sort = r->NewSort();
xlsgen::IXlsSortConditionPtr sc = sort->NewCondition();
sc->SortOnWhat = xlsgen::sortcondition_onicon; // cell icon is used as sort criteria sc->columnIndex = 4; // 4th column of the range i.e. column F sc->SortIconset = xlsgen::iconset_3trafficlights_unrimmed; // icon set to match sc->SortIconsetIndex = 1; // which icon in iconset to match (1-based)
sort->Apply();
|
|  |  | Posted on 29-September-2023 16:26 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.14 : Security fix for WebP filesBuild 5.0.0.14 of xlsgen has a security fix related to WebP pictures. A 0-day vulnerability in the official libWebp library for reading/writing WebP pictures has been discovered. xlsgen relies on libWebp so it needed to be patched as well. |  |  | Posted on 14-September-2023 09:29 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.13 : Advanced data labels (II)Build 5.0.0.13 of xlsgen introduces additional features to data labels, this time the ability to set a custom shape to the whole series of data points, or only one data point. Custom data label shapesxlsgen reads, writes, renders, and exposes in the automatic source code generation tool (xlscodegen.exe) this new feature. It is available for all XLSX/XLSB files. Notably it is not available for XLS files because Excel does not create internal records for this XLS files. This feature was made available by Microsoft first back in Excel 2013, as noted here. Here is how to set a custom data label shape for an entire series of data points : chart->SeriesByIndex[1]->SeriesDataLabels->VectorShape = xlsgen::vectorshapetypeEllipse;
And here is how to do it for a single data point : chart->SeriesByIndex[1]->SeriesDataLabels->DataLabelElements[3]->VectorShape = xlsgen::vectorshapetypeOctagon;
Shape types are to be chosen from the following enumVectorShape enumeration. |  |  | Posted on 06-August-2023 10:32 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.12 : Advanced data labelsBuild 5.0.0.12 of xlsgen introduces advanced data labels in charts. Data labels leader lines (in red)It is made of the following : - Exposure in the object model, Read, Write, and exposure in the automatic source code generation tool (xlscodegen.exe) of data labels leader lines (see picture above), which are used to draw lines between data labels with custom positions and the actual chart data. This is for all Excel files (XLS, XLSX, XLSB, ...) With this exposure, leader line formatting (color, width, style) can be accessed with the following type of code : (C++)
chart002s1->SeriesByIndex[1]->SeriesDataLabels->Show = xlsgen::datalabels_value; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->Type = xlsgen::chartbordertype_custom; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->Style = xlsgen::chartborderstyle_solid; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->Weight = xlsgen::chartborderweight_thick; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->Color = 0x00B0F0;
- Exposure of arrow/symbol formatting at the end of leader lines, both ends. Read, Write, and also exposure in the automatic source code generation tool (xlscodegen.exe). This is for all Excel files (XLS, XLSX, XLSB, ...). With this, as pictured above, you can add a symbol such as a triangle. And it works like this with a couple lines of code : (C++)
chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->ArrowStyleBeginCap->Style = xlsgen::vectorshapearrowstyle_triangle; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->ArrowStyleBeginCap->Width = xlsgen::vectorshapearrowwidth_medium; chart002s1->SeriesByIndex[1]->SeriesDataLabels->LeaderLinesOptions->Patterns->Borders->ArrowStyleBeginCap->Length = xlsgen::vectorshapearrowlength_medium;
- Extension of data label leader lines to chart types other than pie charts. Before Excel 2013, data label leader lines were exposed in Excel but only for pie charts (and their variants such as the doughnut). With Excel 2013, Excel extended the data label leader lines to all chart types, that is, bars, lines, XY charts, ... What xlsgen does is provide Read and Write support for this as well. Also, what xlsgen does additionally is to render those formatted data label leader lines for all chart types. This comes at no cost for a client application since not even one line of code is needed for that. Last but not least, it is important, as xlsgen keeps adding a lot of micro details API to the object model, which can be daunting to learn, grasp and handle, it is reminded that in fact the best way to get your job done is by using a particular feature by hand in Excel, saving the file, and then using our automatic source code generation tool (xlscodegen.exe) in order to obtain the corresponding source code, in one of many of the supported programming languages. It cannot be faster this way. |  |  | Posted on 02-August-2023 18:55 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.11 : Performance fix pack (III) Build 5.0.0.11 of xlsgen is a memory and speed performance again. It improves up to x5 the speed of writing XLSX/XLSB files with many relationships, such as files with many hyperlinks (but not only this scenario).
|  |  | Posted on 26-July-2023 06:51 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.10 : Behavior of worksheet deletion Build 5.0.0.10 of xlsgen makes a change in behavior when a worksheet is deleted.
Before this build, when a worksheet was deleted, its content would be internally erased, but the worksheet itself would still appear as part of the worksheet collection of the current workbook. And only when closing the workbook would the worksheet be actually not written back in the file, hence the worksheet deletion.
Beginning with this build, a worksheet deleted by a statement such as worksheet.Delete() immediately disappear from the worksheet collection, making it more natural to program worksheets.
|  |  | Posted on 22-July-2023 19:00 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.9 : Performance fix pack (II) Build 5.0.0.9 of xlsgen adds up on the previous build and improves both speed and memory performance of xlsgen :
- faster reading of files with many shapes
- better scaling of memory when processing many hyperlinks and shapes
|  |  | Posted on 14-July-2023 14:32 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.8 : Performance fix pack Build 5.0.0.8 of xlsgen is a performance fix pack, and also contains a fix for cell metadata :
- better handling of XLSX files with many internal relationships (hyperlinks) to avoid GPF case.
- removed most middle layer API calls to traverse relationships, avoiding bottleneck in files with many internal relationships
- refactored code in tables and pivot tables that were indirect bottlenecks as well
Also a fix for cell metadata to better return hit test for cells containing hyperlinks.
|  |  | Posted on 28-June-2023 11:56 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.7 : Fix pack for pivot tables Build 5.0.0.7 of xlsgen is a fix pack for pivot table rendering :
- introduction of Outline and Compact rendering algorithms
- better reading of existing pivot table layout setting from XLSX fles
- cell indent is now 3 space chars instead of 2 space chars, used notably in Compact rendering algorithm
Pivot table rendering has now 3 rendering layout algorithms depending on your choosing : Tabular, Outline and Compact.
Differences is that Outline and Compact don't have subtotals and grandtotals.
Compact has all row fields in a single column (hierarchically), as opposed to one column per row field.
|  |  | Posted on 25-June-2023 16:12 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.6 : Fix pack Build 5.0.0.6 of xlsgen is a fix pack.
- Systematic crash during pivot table generation in XLSX files. This is now fixed.
- Unable to read item groupings from existing pivot tables in XLSX files due to creative usage of XML standard in Excel. This is now fixed too.
- Crash when reading complex pivot tables from XLSB files. Fixed.
|  |  | Posted on 24-May-2023 11:50 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.5 : Preserve color themes Build 5.0.0.5 of xlsgen ensures that color details are preserved as is during read/write and file conversion (such as XLSX to XLSB for instance). This preserves palette indexes, color themes, rgbs, ... along with color effects such as tint, alpha, shade, luminosity modulation. This is for colors in cells and in shapes.
|  |  | Posted on 17-May-2023 12:17 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.4 : Print Row and Col headingsBuild 5.0.0.4 of xlsgen adds support for rendering row and column headings in scenarios such as Print, export to PDF, XPS, ... row and column headings in xlsgenThe row and col headings in Excel is in the print settings dialog, sheet tab. And is on a per worksheet basis. |  |  | Posted on 26-April-2023 21:30 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.3 : Fix for horizontal bar chart rendering Build 5.0.0.3 of xlsgen fixes a problem related to rendering charts with horizontal bars that happen to also be stacked and stretched. Rendering was incorrect and some of the bars could be clipped entirely.
|  |  | Posted on 19-April-2023 18:16 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.2 : Preserve custom sheet views Build 5.0.0.2 of xlsgen adds support for preserving custom sheet views. This was already supported in XLS files, but is now for XLSX and XLSB files.
Custom sheet views are views that have their own zoom level, hidden rows, frozen panes and so on. Custom sheet views can be created in Excel by going to the View menu and clicking on New Window to create a new custom sheet view. All other views are open simultaneously. And to switch which view goes in the foreground, click on Switch windows.
|  |  | Posted on 19-April-2023 18:13 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0.0.1 : Strict ISO 29500Build 5.0.0.1 of xlsgen introduces read and write support for the strict version of XLSX files known as ISO 29500. This variant is used in corporations out there for compliance purposes. The strict version of XLSX poses less security risk because it does not carry VBA macros. Internally, the XML is also more standard. And there is no pseudo-XML such as VML either. How to you create such file ? Just like a regular XLSX file, except a property must be toggled before the file is created : IXlsWorkbook wbk = engine.New("file.xlsx") wbk.StrictISO29500 = true
IXlsWorksheet wksht = wbk.AddWorksheet("Sheet1) ...
wbk.Close()
|  |  | Posted on 30-March-2023 21:49 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 5.0 has shipped !xlsgen 5.0 has shipped. The first and most impacting feature is its licensing model, where we are introducing upgrades on a per year basis, and at a competitive price. In other words, we are done with our 2-year major version licensing model. Of course, xlsgen is still royalty-free.  Long life xlsgen 5.0 !!!!! |  |  | Posted on 18-March-2023 12:15 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.9.0.34 : Pivot table group by feature improvementBuild 4.9.0.34 of xlsgen adds feature improvement to pivot table row grouping. Before this build, only data interval was made available from the GroupBy interface. Now MinimalValue and MaximumValue can be manually set. And here is an example of this (C++) : xlsgen::IXlsPivotTablePtr pt = worksheet->NewPivotTable(); pt->DataSource->Range = L"Sheet1!D4:F14";
xlsgen::IXlsPivotTableFieldPtr pf1 = pt->Rows->AddByName(L"s2"); pf1->AggregateFunction = xlsgen::aggrpivotfunction_none; pf1->SortAscending = TRUE;
xlsgen::IXlsPivotTableFieldGroupByPtr pf1g = pf1->GroupBy; pf1g->Interval = 2; pf1g->MaximumValue = 40;
xlsgen::IXlsPivotTableFieldPtr pf_d1 = pt->Data->AddByName(L"s3");
pt->Options->Layout = xlsgen::pivottablelayout_tabular; pt->Options->BuiltInPivotTableStyle = xlsgen::pivottablestyle_medium14; pt->Options->ShowRowStripes = TRUE;
pt->InsertAt(1,1);
|  |  | Posted on 15-January-2023 12:04 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.9.0.33 : Fix for pivot table name collisions Build 4.9.0.33 of xlsgen fixes a problem related to colliding names when creating a pivot table.
Thre data source of a pivot table is an arbitrary cell range therefore its columns can have same names and collide. To solve this for Excel, and to avoid an error message, xlsgen disambiguates pivot field names.
|  |  | Posted on 28-December-2022 21:36 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.9.0.32 : XLS Conversion packBuild 4.9.0.32 of xlsgen adds an XLS conversion pack. It is made of the following : - XLSX to XLS file conversion (also XLSM to XLS) - XLSB to XLS file conversion - XLSX to XLSB : VBA macros preserving - XLSB to XLSX : VBA macros preserving The conversion from XLSX or XLSB files back to XLS files is the bigger piece of the pie. In 2022, it sounds a little odd to hear that we are still providing tools to leverage XLS files, but for legacy systems out there, it may be the only option available. So there it is. Of course, converting to a XLS file comes with a baggage : the sheet rows and columns are much smaller (64K rows per sheet instead of one million, ...), a number of objects are not supported at all (such as the data model), and a number of objects are partially supported (such as conditional formattings where databars simply do not exist). Those wanting to leverage XLS files when it's known to be such a subset of XLSX/XLSB better know what they are doing. Here is how XLSX ==> XLS conversion works : workbook = engine.Open("inputfile.xlsx", "outputfile.xls"); workbook.Close();
Open() in-memory variants also work (OpenInMemory, OpenFromMemory). |  |  | Posted on 16-November-2022 13:28 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets <-- previous page
|
|