xlsgen 4.0.0.92 : Fix for pivot tables Build 4.0.0.92 of xlsgen fixes a problem related to pivot tables.
A new method is introduced in order to make it possible to aggregate data in rows instead of columns (which was and still is by default). This is a method and not a simple boolean property because the client application can choose the position of this aggregate data in rows, or in columns, as the display follows the order of pivot fields in each of the 4 quadrants (Rows, Columns, Data, Page).
Here is how to aggregate data in rows :
pivottable.Rows.AddDataFields();
|  |  | Posted on 17-May-2017 09:19 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.91 : Local scope in named rangesBuild 4.0.0.91 of xlsgen adds support for creating named ranges with restricted scopes, by which is meant restricted to a single worksheet instead of all worksheets. Local scope allows to have non-unique names in each worksheet, facilitating their use. By default any new named range has a workbook scope. Here is how to make one local to a single worksheet (C++) : xlsgen::IXlsWorkbookPtr workbook = engine->New( L"local_namedranges.xlsx" );
xlsgen::IXlsWorksheetPtr wksht001 = workbook->AddWorksheet( L"Sheet1" ); xlsgen::IXlsWorksheetPtr wksht002 = workbook->AddWorksheet( L"Sheet2" ); xlsgen::IXlsWorksheetPtr wksht003 = workbook->AddWorksheet( L"Sheet3" );
xlsgen::IXlsRangePtr r = wksht002->NewRange(L"Sheet2!A2:A10"); r->Local = TRUE; r->Name = L"myname_r";
xlsgen::IXlsDynamicRangePtr rr = wksht003->NewDynamicRange(L"myname_rr"); rr->Local = TRUE; rr->Formula = L"Sheet2!A2:A10";
workbook->Close();
|  |  | Posted on 11-May-2017 17:46 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.90 : Resistance trendlineBuild 4.0.0.90 of xlsgen brings supports to resistance trendlines, for financial decision making. Support and resistance trendlines are used in stock trading to delimit peer pressure for, respectively, selling and buying stocks. Any time the stock data crosses the support line or the resistance line, this acts as a trade signal. Support and resistance play an opposite role. The support line marks the signal for selling stocks, or for shorting stocks (i.e. buying on the prediction that stocks will go lower). The resistance line marks the signal for buying stocks, or for longing stocks (i.e. buying on the prediction that stocks will go higher). Support and Resistance trend lines in xlsgenxlsgen completely hides the underlying complexity of calculating support and resistance trendlines. Those lines are calculated based on 10-period smoothed data and the calculation of local minimum and maximum spots which are then interpolated together. C/C++ code | xlsgen::IXlsWorkbookPtr workbook = engine->Open( L"EURUSD1.csv", L"support_resistance.xlsx" );
xlsgen::IXlsChartPtr chart = workbook->WorksheetByIndex[1]->NewChart(xlsgen::charttype_line2D, 1, //row1 2, //col1 28, //row2 15 //col2 );
xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss0 = chart->DynamicDataSource->AddSerie(); serie001s0ss0->SeriesValuesFormula = L"=R1C3:R100C3";
chart->SeriesByIndex[1]->TrendLines[1]->Show = xlsgen::charttrendline_support; // Support trendline
chart->SeriesByIndex[1]->TrendLines[1]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[1]->Options->Style = xlsgen::chartborderstyle_dot; chart->SeriesByIndex[1]->TrendLines[1]->Options->Weight = xlsgen::chartborderweight_single; chart->SeriesByIndex[1]->TrendLines[1]->Options->Color = 0xFF0000;
chart->SeriesByIndex[1]->TrendLines[2]->Show = xlsgen::charttrendline_resistance; // Resistance trendline
chart->SeriesByIndex[1]->TrendLines[2]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[2]->Options->Style = xlsgen::chartborderstyle_dot; chart->SeriesByIndex[1]->TrendLines[2]->Options->Weight = xlsgen::chartborderweight_single; chart->SeriesByIndex[1]->TrendLines[2]->Options->Color = 0x00FF00;
workbook->WorksheetByIndex[1]->Export->ExportAsPDF(L"support_resistance.pdf"); // ask xlsgen to compute and render it
workbook->Close();
|
|  |  | Posted on 12-April-2017 08:40 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.89 : Support trendlineBuild 4.0.0.89 of xlsgen adds support trendlines to financial analysis tooling. Support trendlines are used in stock trading to delimit peer pressure for selling stocks. Any time the stock data crosses the support line, this acts as a trade signal. The support line marks the signal for selling stocks, or for shorting stocks (i.e. buying on the prediction that stocks will go lower). Support trend lines in xlsgen |  |  | Posted on 12-April-2017 08:37 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.88 : New financial chart : MACDBuild 4.0.0.88 of xlsgen adds support for the MACD chart. The MACD chart (short for Moving average convergence divergence) is a trend chart often used for stock trading. It is made of two lines and one bar. Wikipedia article. MACD (the input data is in blue, everything else is the MACD)The first line is the signal line and is a two pass filter. Its scale is represented on the secondary Y axis. The second line, the average line, is a low pass filter of the signal line. And finally the bar chart is the difference between the two. Both are attached to the secondary Y axis. Interpretation for trading :
- A "signal-line crossover" occurs when the MACD and average lines cross; that is, when the bar chart changes sign. The standard interpretation of such an event is a recommendation to buy if the MACD line crosses up through the average line (a "bullish" crossover), or to sell if it crosses down through the average line (a "bearish" crossover). These events are taken as indications that the trend in the stock is about to accelerate in the direction of the crossover.
- A "zero crossover" event occurs when the MACD series changes sign, that is, the MACD line crosses the horizontal zero axis. This happens when there is no difference between the fast and slow EMAs of the price series. A change from positive to negative MACD is interpreted as "bearish", and from negative to positive as "bullish". Zero crossovers provide evidence of a change in the direction of a trend but less confirmation of its momentum than a signal line crossover.
C/C++ code | xlsgen::IXlsWorkbookPtr wbk = engine->Open( L"EURUSD1.csv", L"output.xls" );
xlsgen::IXlsChartPtr chart1 = wbk->WorksheetByIndex[1]->NewChart(xlsgen::charttype_macd, row1, col1, row2, col2); xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie1 = chart1->DynamicDataSource->AddSerie(); serie1->SeriesValuesFormula = L"=R1C3:R100C3";
|
|  |  | Posted on 06-April-2017 19:43 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.87 : Exponential moving average trendlineBuild 4.0.0.87 of xlsgen adds support for the exponential moving average trendline. The exponential moving average, as the name suggests, is an exponentially decreasing moving average which means recent data in the moving window has more weight than older data. The exponential moving average is closer visually to the series data than the regular moving average and reveals trends like the moving average. It can improve the decision based on the trend analysis. Exponential moving average (N=20 values in the data window) versus moving averageCreating the trendline is straight forward :
C/C++ code |
xlsgen::IXlsWorkbookPtr workbook = engine->Open( L"EURUSD1.csv", L"exponential_moving_average.xls" );
xlsgen::IXlsChartPtr chart = workbook->WorksheetByIndex[1]->NewChart(xlsgen::charttype_line2D, 1, //row1 2, //col1 28, //row2 15 //col2 );
xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss0 = chart->DynamicDataSource->AddSerie(); serie001s0ss0->SeriesValuesFormula = L"=R1C3:R100C3";
chart->SeriesByIndex[1]->TrendLines[1]->Show = xlsgen::charttrendline_exponentialmovingaverage; // exponential moving average trendline chart->SeriesByIndex[1]->TrendLines[1]->MovingAveragePeriods = 20; // N=20
workbook->WorksheetByIndex[1]->Export->ExportAsPDF(L"exponential_moving_average.pdf"); // ask xlsgen to compute and render it
workbook->Close();
|
|  |  | Posted on 03-April-2017 09:08 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.86 : Moving median trendlineBuild 4.0.0.86 of xlsgen adds a new trend line to the list of existing trend lines : moving median. Moving median (N=5 values in the data window)The moving median, as the name suggests, builds on a median computed inside a moving data window (subset of the series of data). The series of the median values as the window moves makes the trend line. The median is a measure by which half of the data is below it, and the other half is above it. Wikipedia article. Compared to a moving average, the moving median reflects a lot less brutal changes, which are sometimes viewed, depending on the business using it, as skewed or useless values. And here is how to create it :
C/C++ code |
xlsgen::IXlsWorksheetPtr wksht001 = workbook->AddWorksheet( L"Sheet1" );
// data wksht001->Cell[2][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">50</font>"; wksht001->Cell[3][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">30</font>"; wksht001->Cell[4][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">100</font>"; wksht001->Cell[5][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">40</font>"; wksht001->Cell[6][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">200</font>"; wksht001->Cell[7][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">70</font>"; wksht001->Cell[8][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">100</font>"; wksht001->Cell[9][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">10</font>"; wksht001->Cell[10][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">150</font>"; wksht001->Cell[11][2]->HtmlFloat = L"<font color=#000000 size=11 name=\"Calibri\">250</font>";
// chart xlsgen::IXlsChartPtr chart001s0 = wksht001->NewChart(xlsgen::charttype_bar2D, 5, 1, 20, 8);
xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss0 = chart001s0->DynamicDataSource->AddSerie(); serie001s0ss0->SeriesValuesFormula = L"Sheet1!$B$2:$B$11"; chart001s0->SeriesByIndex[1]->TrendLines[1]->Show = xlsgen::charttrendline_movingmedian; // moving median trendline chart001s0->SeriesByIndex[1]->TrendLines[1]->MovingAveragePeriods = 5; // N=5
wksht001->Export->ExportAsPDF(L"moving_median.pdf"); // ask xlsgen to compute and render it
workbook->Close();
|
|  |  | Posted on 24-March-2017 12:16 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.85 : Mutiple trendlinesBuild 4.0.0.85 of xlsgen makes it possible to add more than one trendline to a series of data. Before this build, for 3 series of data there could be at most 3 trendlines attached to them, so up to 6 lines in total. One series of data and 4 trendlines attached to it (moving averages with different parameters)This works for XLS and XLSX/XLSB files. And here is how to code it : xlsgen::IXlsWorkbookPtr wbk = engine->Open( L"input\\EURUSD1.csv", L"multiple_trendlines.xlsx" );
xlsgen::IXlsChartPtr chart = wbk->WorksheetByIndex[1]->NewChart(xlsgen::charttype_line2D, 1, //row1 2, //col1 28, //row2 15 //col2 );
xlsgen::IXlsChartDynamicDataSourcePtr datasource001s0 = chart->DynamicDataSource;
xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss0 = datasource001s0->AddSerie(); serie001s0ss0->SeriesValuesFormula = L"=R1C3:R100C3"; chart->SeriesByIndex[1]->TrendLines[1]->Show = xlsgen::charttrendline_movingaverage; chart->SeriesByIndex[1]->TrendLines[1]->MovingAveragePeriods = 5; chart->SeriesByIndex[1]->TrendLines[1]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[1]->Options->Color = 0x4040C0; chart->SeriesByIndex[1]->TrendLines[2]->Show = xlsgen::charttrendline_movingaverage; chart->SeriesByIndex[1]->TrendLines[2]->MovingAveragePeriods = 10; chart->SeriesByIndex[1]->TrendLines[2]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[2]->Options->Color = 0xC04040; chart->SeriesByIndex[1]->TrendLines[3]->Show = xlsgen::charttrendline_movingaverage; chart->SeriesByIndex[1]->TrendLines[3]->MovingAveragePeriods = 20; chart->SeriesByIndex[1]->TrendLines[3]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[3]->Options->Color = 0x40C040; chart->SeriesByIndex[1]->TrendLines[4]->Show = xlsgen::charttrendline_movingaverage; chart->SeriesByIndex[1]->TrendLines[4]->MovingAveragePeriods = 40; chart->SeriesByIndex[1]->TrendLines[4]->Options->Type = xlsgen::chartbordertype_custom; chart->SeriesByIndex[1]->TrendLines[4]->Options->Color = 0xA040A0;
chart->XAxis[xlsgen::chartaxis_primary]->Scale->ItemsBetweenTickMarkLabels = 10;
wbk->Close();
|  |  | Posted on 24-March-2017 11:38 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.84 : Fix pack for charts Build 4.0.0.84 of xlsgen is a fix pack for improving the rendering of charts and other objects. The improvements include :
- charts : support for item spacing on the X-axis. This property allows to avoid drawing a label next to each tick, which is useful when the chart in question has a large data source attached to it.
- charts : border line weight takes into account the line weight inferred from the chart style (48 chart styles) whenever there isn't a custom setting.
- better preserve and render border styles in text boxes, vector shapes, pictures and chart elements. There was a discrepancy between chart border styles, MSO border styles and XLSX/XLSB border styles.
|  |  | Posted on 24-March-2017 09:20 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.83 : Fixes for the calc engine Build 4.0.0.83 of xlsgen includes two fixes for the built-in calculation engine. Namely,
- HLOOKUP/VLOOKUP functions : correct handling of optional parameter when passed as an integer instead of a boolean. - INDIRECT function : correct handling of area reference case.
|  |  | Posted on 21-March-2017 13:25 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.82 : New financial chart : moving averageBuild 4.0.0.82 of xlsgen adds support for moving average charts. Again those charts are not supported by Excel, so the goal of xlsgen is to provide chart for everyday needs. Moving average (N=5)A moving average chart is a chart where a mathematical figure called average is calculated over time, resulting in a curve in and of itself. A moving average, by its nature, smooths out spikes, making it easier to see trends. This chart is often used in financial trading as a tool for analysis. The average calculation only takes a fraction, usually small, of past data, a parameter which is called N, which is why the chart is called moving average. By default, N=20, meaning that the point in that curve is defined by 20 older data points. The average, because it smoothens a signal, carries a late effect, which is obvious visually, which grows with the value of N. By opposite, the smaller N is, the tighter the average is to the data signal. Below are examples of the moving average with two other values of N, respectively 10 and 40. Moving average (N=10) Moving average (N=40)C/C++ code | xlsgen::IXlsWorkbookPtr wbk = engine->Open( L"EURUSD1.csv", L"output.xls" );
xlsgen::IXlsChartPtr chart1 = wbk->WorksheetByIndex[1]->NewChart(xlsgen::charttype_movingaverage, row1, col1, row2, col2); xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie1 = chart1->DynamicDataSource->AddSerie(); serie1->SeriesValuesFormula = L"=R1C3:R100C3"; chart1->SeriesByIndex[1]->DataWindowSelection = 40; // N=40
|
The DataWindowSelection property is available in each series of data in order to customize the value of N. |  |  | Posted on 09-March-2017 20:15 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.81 : New financial chart : Lorenz curveBuild 4.0.0.81 of xlsgen adds native support for Lorenz curves. Those charts are unknown to Excel so this is an original concept meant to match everyday needs. Lorenz curveThe Lorenz curve (named after Max Lorenz) represents the dispersion of inequalities, usually income, but not only. Wikipedia article. Points on the Lorenz curve represent statements like " the bottom 20% of all households have 10% of the total income.". A perfectly equal income distribution would be one in which every person has the same income (ideal curve displayed for comparison purposes). The Lorenz curve is always below the ideal curve. The data points on the horizontal axis shows the cumulated population and the data points on the vertical axis shows the cumulated income (or any other measure). The chart example above is made from the following data : | Population | % Population | % Cumulated Population | Income | % Income | % Cumulated Income | South | 43062 | 36.87% | 36.87% | 47961 | 34.06% | 34.06% | Midwest | 26266 | 22.49% | 59.36% | 52209 | 22.62% | 56.68% | Northeast | 21351 | 18.28% | 77.65% | 54283 | 19.12% | 75.80% | West | 26105 | 22.35% | 100.00% | 56218 | 24.20% | 100.00% |
The Lorenz curve can be created from just raw Population and Income data, as is found in public files (government). xlsgen orders the data, computes cumuls and draws the line. C/C++ code | xlsgen::IXlsChartPtr chart1 = worksheet->NewChart(xlsgen::charttype_lorenzcurve, row1, col1, row2, col2); xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie1 = chart1->DynamicDataSource->AddSerie(); serie1->DataLabelsFormula = L"={43062;26266;21351;26105}"; serie1->SeriesValuesFormula = L"={47961;52209;54283;56218}";
|
|  |  | Posted on 09-March-2017 20:12 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.80 : Fixed memory leaks Build 4.0.0.80 of xlsgen fixes 2 memory leaks that were harming the ability to use xlsgen in server scenarios, i.e. loaded with plenty of user requests, or working for hours or even days behind a web server.
Memory leaks are the result of creating many internal data structures meant to compute so much stuff behind the scene and trying to optimize speed. Every now and then there must be a hold and check approach, as long as memory is not kept at regular levels, for making sure it is possible and even wise to keep adding more internal structures. After all, xlsgen is all the complexity of Excel, just without a user interface.
|  |  | Posted on 05-March-2017 17:55 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.79 : Rendering sparklinesBuild 4.0.0.79 of xlsgen adds support for rendering sparklines in all rendering scenarios, i.e. print, print preview, PDF, XPS and HTML. sparklines rendered in xlsgenFor preview and XPS, the screen DPI is used for rendering. For print, the printer DPI is used (usually much higher than the screen DPI). For PDF, vectors are used (the output scales at will). For HTML, screen DPI is used and small images are created as html resources. |  |  | Posted on 03-March-2017 11:46 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.78 : Improved sparklines Build 4.0.0.78 of xlsgen improves the handling of Excel sparklines in a number of ways :
- sparklines appear in the automatic source code generator, so you can manually create them in Excel and then obtain the corresponding source code in the programming language of your choice. No need to learn the xlsgen object model. Here is an example using VB of a group of 3 sparklines of type column :
Dim sparklineGroup001s1 As IXlsSparkline Set sparklineGroup001s1 = wksht001.Sparklines.Add(enumSparklineType.sparklinetype_columns) sparklineGroup001s1.SparklineColor(enumSparklineElement.sparklineelement_values) = RGB(36,65,97) sparklineGroup001s1.SparklineColor(enumSparklineElement.sparklineelement_markers) = RGB(36,65,97) sparklineGroup001s1.SparklineColor(enumSparklineElement.sparklineelement_firstvalue) = RGB(149,180,214) sparklineGroup001s1.SparklineColor(enumSparklineElement.sparklineelement_lastvalue) = RGB(149,180,214) sparklineGroup001s1.ShowEmptyCellsAs = enumChartInterpolate.chartinterpolate_no Dim sparklineGroup001s1e0 As IXlsSparklineElement Set sparklineGroup001s1e0 = sparklineGroup001s1.Add sparklineGroup001s1e0.LocationRow = 3 sparklineGroup001s1e0.LocationColumn = 8 sparklineGroup001s1e0.DataAsFormula = "Sheet1!D3:G3" Dim sparklineGroup001s1e1 As IXlsSparklineElement Set sparklineGroup001s1e1 = sparklineGroup001s1.Add sparklineGroup001s1e1.LocationRow = 4 sparklineGroup001s1e1.LocationColumn = 8 sparklineGroup001s1e1.DataAsFormula = "Sheet1!D4:G4" Dim sparklineGroup001s1e2 As IXlsSparklineElement Set sparklineGroup001s1e2 = sparklineGroup001s1.Add sparklineGroup001s1e2.LocationRow = 5 sparklineGroup001s1e2.LocationColumn = 8 sparklineGroup001s1e2.DataAsFormula = "Sheet1!D5:G5"
- sparklines are also duplicated in worksheet duplicate scenarios.
- sparklines are also automatically updated when rows or columns are inserted or deleted, in order to reflect the changes.
|  |  | Posted on 03-March-2017 11:42 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.77 : Table auto-filtersBuild 4.0.0.77 of xlsgen exposes table auto-filters in the object model. So beginning with this build, it's possible to either create or edit existing auto-filters in tables, and write them back in XLSX and XLSB files, thanks to the AutoFilter member exposed in the table results interface. So here is how it works : IXlsWorksheet worksheet = workbook.WorksheetByIndex[1]; // get the first tableIXlsTable t = worksheet.Tables.Item[1]; // edit the filter in the second column of the tablet.DataResults.AutoFilter.CustomFilter[2].CustomExpression = "> 2"; // remove the filter in the third column of the tablet.DataResults.AutoFilter.CustomFilter[3].Delete(); |  |  | Posted on 02-March-2017 08:56 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.76 : Performance improvement for XLSX files Build 4.0.0.76 of xlsgen includes a performance improvement for processing XLSX files. The loading of drawings which was optimized for XLS files is now also optimized for XLSX files (and their variants). Namely, drawings that referred to many times are loaded only once. This improves memory depending on how large are the drawings, and also speed depending on how many factored drawings are to be loaded.
|  |  | Posted on 24-February-2017 16:02 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.75 : Fix for CSV files Build 4.0.0.75 of xlsgen fixes a problem related to importing large CSV files, where large means wide columns.
|  |  | Posted on 24-February-2017 06:46 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.74 : Improved XLSB compatibility Build 4.0.0.74 of xlsgen improves the compatibility with XLSB files when it comes to preserving the following objects : - slicers, table slicers, OLAP slicers - timelines, OLAP timelines - conditional formattings (O14 and O15) - range protection - sparklines - web extensions - data validations (O14) - pivot table references and decoupled - workbook properties (O14 and O15) - data model (power pivot)
O14 = Excel 2010 O15 = Excel 2013
|  |  | Posted on 17-February-2017 16:56 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets xlsgen 4.0.0.73 : Windows 9X compatibility Build 4.0.0.73 of xlsgen adds the Windows 95/98-compatible version of xlsgen to our 32-bit Setup, zipped in the install folder. This Windows 95/98-compatible version proves useful for some of our customers and we recently broke the compatibility by having a DLL dependency unknown to Windows 95/98, and a number of Unicode-based WIN32 api calls that either do not work or are not available at all using Windows 95/98.
In the 32-bit Setup, the main binary file (xlsgen.dll) isn't compatible with Windows 95/98 since it's built with a version of Visual Studio C++ that is unable to produce an image that is compatible with Windows 95/98 (courtesy of Microsoft). That's why the Windows 95/98-compatible version is a separate binary, built with a much older version of Visual Studio C++, with the same name (xlsgen.dll) and the same API, i.e. no need to recompile your client code.
|  |  | Posted on 10-February-2017 14:56 | Category: xlsgen, Excel generator | Tags: generating Excel spreadsheets <-- previous page
|
|