Build 3.0.0.67 of xlsgen adds support for transparency in spreadsheets.
Transparency can be applied to :
- text boxes
- pictures
- vector shapes
- comments
- chart elements (XLSX files only due to legacy Excel restrictions)
Transparency in charts (horizontal gridlines not obscured by area and bar elements; area not obscured by bar elements)Transparency is exposed in the xlsgen object model through a simple
FillTransparency property, whose value ranges from 0 (opaque) to 100 (fully transparent).
Here is an example in C++ showing how to set transparency to a chart, producing the chart pictured above. Note that most of the source code is for the chart set up, not the transparency itself :
| C/C++ code |
xlsgen::IXlsChartPtr chart001s0 = worksheet->NewChart(xlsgen::charttype_bar2D, 4, 5, 18, 10);
xlsgen::IXlsChartDynamicDataSourcePtr datasource001s0 = chart001s0->DynamicDataSource;
xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss0 = datasource001s0->AddSerie(); serie001s0ss0->SeriesTitlesFormula = L"Sheet1!$C$2"; serie001s0ss0->SeriesValuesFormula = L"Sheet1!$C$3:$C$10"; xlsgen::IXlsChartDynamicDataSourceSeriesPtr serie001s0ss1 = datasource001s0->AddSerie(); serie001s0ss1->SeriesTitlesFormula = L"Sheet1!$D$2"; serie001s0ss1->SeriesValuesFormula = L"Sheet1!$D$3:$D$10"; chart001s0->Legend->Show = xlsgen::chartlegend_hidden;
chart001s0->MainTitle->Label = L"Chart transparency";
// bar formatting (auto gradient fill, and 94% means we want the 2nd gradient stop almost fully transparent) chart001s0->SeriesByIndex[1]->Options->Patterns->Area->FillTransparency[1] = 94;
// area formatting (50% means we want the solid area half opaque half transparent) chart001s0->SeriesByIndex[2]->SeriesType = xlsgen::charttype_area2D; chart001s0->SeriesByIndex[2]->Options->Patterns->Area->Type = xlsgen::chartareatype_custom; chart001s0->SeriesByIndex[2]->Options->Patterns->Area->Pattern->PatternStyle = xlsgen::chartareapattern_solid; chart001s0->SeriesByIndex[2]->Options->Patterns->Area->Pattern->BackgroundColor = 0xFF0000; chart001s0->SeriesByIndex[2]->Options->Patterns->Area->FillTransparency[0] = 50;
|