apache / apache/poi

Feature Request: Add high-level XDDF support for Funnel Charts (Office 2016+)

Open
#925 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.3k
Forks
844
Avg merge
5h 52m
Merged PRs (30d)
47

Description

Hello POI Team,

**What is the problem?**

Apache POI (tested up to 5.2.5) does not currently offer high-level XDDF support for creating Funnel Charts, a chart type introduced in Office 2016.

The existing ChartTypes enum does not include FUNNEL, and there is no XDDFChartData implementation (like XDDFunnelChartData) for it.

**What is the current workaround?**

The only way to generate a Funnel Chart is to drop down to the low-level XML classes (org.openxmlformats.schemas...). This involves:
1. Manually creating a CTFunnelChart instance in the CTPlotArea.
2. Building the CTFunnelSer (series) by hand.
3. Manually setting up the data sources (CTAxDataSource, CTNumDataSource).
4. Manually creating and linking the axes (CTCatAx, CTValAx).

This low-level approach is complex, error-prone, and not well-documented.

**What is the requested solution?**

We request that high-level support for Funnel Charts be added to the XDDF charting library, consistent with other chart types like Bar, Line, and Pie charts.

Ideally, the API would look something like this:

// 1. Add ChartTypes.FUNNEL
XDDFChartData data = chart.createData(ChartTypes.FUNNEL, categoryAxis, valueAxis);

// 2. Add a corresponding XDDFunnelChartData (or similar)
XDDFChartData.Series series = data.addSeries(categories, values);
series.setTitle("My Funnel", null);

// 3. Handle colors, data labels, etc., through the high-level API.
// (e.g., data.setVaryColors(true))

This enhancement would greatly simplify the creation of modern charts and make POI even more powerful.

Thank you!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the existing ChartTypes enum and XDDFChartData implementations for Bar, Line, and Pie charts to understand the high-level chart API. Review the cited low-level CTFunnelChart, CTFunnelSer, CTAxDataSource, CTNumDataSource, CTCatAx, and CTValAx classes. Done means Funnel Charts can be created through XDDF with series, axes, colors, and data-label support without requiring direct low-level XML construction.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
data-visualization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.