Search in sources :

Example 1 with SeriesRecord

use of org.apache.poi.hssf.record.chart.SeriesRecord in project poi by apache.

the class HSSFChart method removeSeries.

public boolean removeSeries(HSSFSeries remSeries) {
    int deep = 0;
    int chartDeep = -1;
    int lastSeriesDeep = -1;
    int seriesIdx = -1;
    boolean removeSeries = false;
    boolean chartEntered = false;
    boolean result = false;
    final List<RecordBase> records = sheet.getSheet().getRecords();
    /* store first series as template and find last series index */
    Iterator<RecordBase> iter = records.iterator();
    while (iter.hasNext()) {
        RecordBase record = iter.next();
        if (record instanceof BeginRecord) {
            deep++;
        } else if (record instanceof EndRecord) {
            deep--;
            if (lastSeriesDeep == deep) {
                lastSeriesDeep = -1;
                if (removeSeries) {
                    removeSeries = false;
                    result = true;
                    iter.remove();
                }
            }
            if (chartDeep == deep) {
                break;
            }
        }
        if (record instanceof ChartRecord) {
            if (record == chartRecord) {
                chartDeep = deep;
                chartEntered = true;
            }
        } else if (record instanceof SeriesRecord) {
            if (chartEntered) {
                if (remSeries.series == record) {
                    lastSeriesDeep = deep;
                    removeSeries = true;
                } else {
                    seriesIdx++;
                }
            }
        } else if (record instanceof DataFormatRecord) {
            if (chartEntered && !removeSeries) {
                DataFormatRecord dataFormatRecord = (DataFormatRecord) record;
                dataFormatRecord.setSeriesIndex((short) seriesIdx);
                dataFormatRecord.setSeriesNumber((short) seriesIdx);
            }
        }
        if (removeSeries) {
            iter.remove();
        }
    }
    return result;
}
Also used : EndRecord(org.apache.poi.hssf.record.chart.EndRecord) RecordBase(org.apache.poi.hssf.record.RecordBase) BeginRecord(org.apache.poi.hssf.record.chart.BeginRecord) DataFormatRecord(org.apache.poi.hssf.record.chart.DataFormatRecord) ChartRecord(org.apache.poi.hssf.record.chart.ChartRecord) SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord)

Example 2 with SeriesRecord

use of org.apache.poi.hssf.record.chart.SeriesRecord in project poi by apache.

the class HSSFChart method createSeriesRecord.

private SeriesRecord createSeriesRecord() {
    SeriesRecord r = new SeriesRecord();
    r.setCategoryDataType(SeriesRecord.CATEGORY_DATA_TYPE_NUMERIC);
    r.setValuesDataType(SeriesRecord.VALUES_DATA_TYPE_NUMERIC);
    r.setNumCategories((short) 32);
    r.setNumValues((short) 31);
    r.setBubbleSeriesType(SeriesRecord.BUBBLE_SERIES_TYPE_NUMERIC);
    r.setNumBubbleValues((short) 0);
    return r;
}
Also used : SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord)

Example 3 with SeriesRecord

use of org.apache.poi.hssf.record.chart.SeriesRecord in project poi by apache.

the class HSSFChart method createSeries.

public HSSFSeries createSeries() throws Exception {
    ArrayList<RecordBase> seriesTemplate = new ArrayList<RecordBase>();
    boolean seriesTemplateFilled = false;
    int idx = 0;
    int deep = 0;
    int chartRecordIdx = -1;
    int chartDeep = -1;
    int lastSeriesDeep = -1;
    int endSeriesRecordIdx = -1;
    int seriesIdx = 0;
    final List<RecordBase> records = sheet.getSheet().getRecords();
    /* store first series as template and find last series index */
    for (final RecordBase record : records) {
        idx++;
        if (record instanceof BeginRecord) {
            deep++;
        } else if (record instanceof EndRecord) {
            deep--;
            if (lastSeriesDeep == deep) {
                lastSeriesDeep = -1;
                endSeriesRecordIdx = idx;
                if (!seriesTemplateFilled) {
                    seriesTemplate.add(record);
                    seriesTemplateFilled = true;
                }
            }
            if (chartDeep == deep) {
                break;
            }
        }
        if (record instanceof ChartRecord) {
            if (record == chartRecord) {
                chartRecordIdx = idx;
                chartDeep = deep;
            }
        } else if (record instanceof SeriesRecord) {
            if (chartRecordIdx != -1) {
                seriesIdx++;
                lastSeriesDeep = deep;
            }
        }
        if (lastSeriesDeep != -1 && !seriesTemplateFilled) {
            seriesTemplate.add(record);
        }
    }
    /* check if a series was found */
    if (endSeriesRecordIdx == -1) {
        return null;
    }
    /* next index in the records list where the new series can be inserted */
    idx = endSeriesRecordIdx + 1;
    HSSFSeries newSeries = null;
    /* duplicate record of the template series */
    ArrayList<RecordBase> clonedRecords = new ArrayList<RecordBase>();
    for (final RecordBase record : seriesTemplate) {
        Record newRecord = null;
        if (record instanceof BeginRecord) {
            newRecord = new BeginRecord();
        } else if (record instanceof EndRecord) {
            newRecord = new EndRecord();
        } else if (record instanceof SeriesRecord) {
            SeriesRecord seriesRecord = (SeriesRecord) ((SeriesRecord) record).clone();
            newSeries = new HSSFSeries(seriesRecord);
            newRecord = seriesRecord;
        } else if (record instanceof LinkedDataRecord) {
            LinkedDataRecord linkedDataRecord = ((LinkedDataRecord) record).clone();
            if (newSeries != null) {
                newSeries.insertData(linkedDataRecord);
            }
            newRecord = linkedDataRecord;
        } else if (record instanceof DataFormatRecord) {
            DataFormatRecord dataFormatRecord = ((DataFormatRecord) record).clone();
            dataFormatRecord.setSeriesIndex((short) seriesIdx);
            dataFormatRecord.setSeriesNumber((short) seriesIdx);
            newRecord = dataFormatRecord;
        } else if (record instanceof SeriesTextRecord) {
            SeriesTextRecord seriesTextRecord = (SeriesTextRecord) ((SeriesTextRecord) record).clone();
            if (newSeries != null) {
                newSeries.setSeriesTitleText(seriesTextRecord);
            }
            newRecord = seriesTextRecord;
        } else if (record instanceof Record) {
            newRecord = (Record) ((Record) record).clone();
        }
        if (newRecord != null) {
            clonedRecords.add(newRecord);
        }
    }
    /* check if a user model series object was created */
    if (newSeries == null) {
        return null;
    }
    /* transfer series to record list */
    for (final RecordBase record : clonedRecords) {
        records.add(idx++, record);
    }
    return newSeries;
}
Also used : EndRecord(org.apache.poi.hssf.record.chart.EndRecord) SeriesTextRecord(org.apache.poi.hssf.record.chart.SeriesTextRecord) ArrayList(java.util.ArrayList) ChartRecord(org.apache.poi.hssf.record.chart.ChartRecord) SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord) RecordBase(org.apache.poi.hssf.record.RecordBase) BeginRecord(org.apache.poi.hssf.record.chart.BeginRecord) DataFormatRecord(org.apache.poi.hssf.record.chart.DataFormatRecord) UnknownRecord(org.apache.poi.hssf.record.UnknownRecord) VCenterRecord(org.apache.poi.hssf.record.VCenterRecord) AxisUsedRecord(org.apache.poi.hssf.record.chart.AxisUsedRecord) LinkedDataRecord(org.apache.poi.hssf.record.chart.LinkedDataRecord) FooterRecord(org.apache.poi.hssf.record.FooterRecord) SCLRecord(org.apache.poi.hssf.record.SCLRecord) ChartRecord(org.apache.poi.hssf.record.chart.ChartRecord) ValueRangeRecord(org.apache.poi.hssf.record.chart.ValueRangeRecord) LegendRecord(org.apache.poi.hssf.record.chart.LegendRecord) SeriesTextRecord(org.apache.poi.hssf.record.chart.SeriesTextRecord) AxisParentRecord(org.apache.poi.hssf.record.chart.AxisParentRecord) DefaultDataLabelTextPropertiesRecord(org.apache.poi.hssf.record.chart.DefaultDataLabelTextPropertiesRecord) PrintSetupRecord(org.apache.poi.hssf.record.PrintSetupRecord) Record(org.apache.poi.hssf.record.Record) SeriesToChartGroupRecord(org.apache.poi.hssf.record.chart.SeriesToChartGroupRecord) EOFRecord(org.apache.poi.hssf.record.EOFRecord) AreaFormatRecord(org.apache.poi.hssf.record.chart.AreaFormatRecord) BeginRecord(org.apache.poi.hssf.record.chart.BeginRecord) HCenterRecord(org.apache.poi.hssf.record.HCenterRecord) EndRecord(org.apache.poi.hssf.record.chart.EndRecord) PlotGrowthRecord(org.apache.poi.hssf.record.chart.PlotGrowthRecord) UnitsRecord(org.apache.poi.hssf.record.chart.UnitsRecord) HeaderRecord(org.apache.poi.hssf.record.HeaderRecord) SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord) BarRecord(org.apache.poi.hssf.record.chart.BarRecord) ChartFormatRecord(org.apache.poi.hssf.record.chart.ChartFormatRecord) AxisLineFormatRecord(org.apache.poi.hssf.record.chart.AxisLineFormatRecord) CategorySeriesAxisRecord(org.apache.poi.hssf.record.chart.CategorySeriesAxisRecord) ChartTitleFormatRecord(org.apache.poi.hssf.record.chart.ChartTitleFormatRecord) FrameRecord(org.apache.poi.hssf.record.chart.FrameRecord) PlotAreaRecord(org.apache.poi.hssf.record.chart.PlotAreaRecord) BOFRecord(org.apache.poi.hssf.record.BOFRecord) DataFormatRecord(org.apache.poi.hssf.record.chart.DataFormatRecord) ProtectRecord(org.apache.poi.hssf.record.ProtectRecord) TextRecord(org.apache.poi.hssf.record.chart.TextRecord) FontBasisRecord(org.apache.poi.hssf.record.chart.FontBasisRecord) AxisOptionsRecord(org.apache.poi.hssf.record.chart.AxisOptionsRecord) SeriesIndexRecord(org.apache.poi.hssf.record.chart.SeriesIndexRecord) SheetPropertiesRecord(org.apache.poi.hssf.record.chart.SheetPropertiesRecord) TickRecord(org.apache.poi.hssf.record.chart.TickRecord) AxisRecord(org.apache.poi.hssf.record.chart.AxisRecord) DimensionsRecord(org.apache.poi.hssf.record.DimensionsRecord) FontIndexRecord(org.apache.poi.hssf.record.chart.FontIndexRecord) LineFormatRecord(org.apache.poi.hssf.record.chart.LineFormatRecord) LinkedDataRecord(org.apache.poi.hssf.record.chart.LinkedDataRecord)

Example 4 with SeriesRecord

use of org.apache.poi.hssf.record.chart.SeriesRecord in project poi by apache.

the class HSSFChart method getSheetCharts.

/**
	 * Returns all the charts for the given sheet.
	 *
	 * NOTE: You won't be able to do very much with
	 *  these charts yet, as this is very limited support
	 */
public static HSSFChart[] getSheetCharts(HSSFSheet sheet) {
    List<HSSFChart> charts = new ArrayList<HSSFChart>();
    HSSFChart lastChart = null;
    HSSFSeries lastSeries = null;
    // Find records of interest
    List<RecordBase> records = sheet.getSheet().getRecords();
    for (RecordBase r : records) {
        if (r instanceof ChartRecord) {
            lastSeries = null;
            lastChart = new HSSFChart(sheet, (ChartRecord) r);
            charts.add(lastChart);
        } else if (r instanceof LinkedDataRecord) {
            LinkedDataRecord linkedDataRecord = (LinkedDataRecord) r;
            if (lastSeries != null) {
                lastSeries.insertData(linkedDataRecord);
            }
        }
        if (lastChart == null) {
            continue;
        }
        if (r instanceof LegendRecord) {
            lastChart.legendRecord = (LegendRecord) r;
        } else if (r instanceof SeriesRecord) {
            HSSFSeries series = new HSSFSeries((SeriesRecord) r);
            lastChart.series.add(series);
            lastSeries = series;
        } else if (r instanceof ChartTitleFormatRecord) {
            lastChart.chartTitleFormat = (ChartTitleFormatRecord) r;
        } else if (r instanceof SeriesTextRecord) {
            // Applies to a series, unless we've seen a legend already
            SeriesTextRecord str = (SeriesTextRecord) r;
            if (lastChart.legendRecord == null && lastChart.series.size() > 0) {
                HSSFSeries series = lastChart.series.get(lastChart.series.size() - 1);
                series.seriesTitleText = str;
            } else {
                lastChart.chartTitleText = str;
            }
        } else if (r instanceof ValueRangeRecord) {
            lastChart.valueRanges.add((ValueRangeRecord) r);
        } else if (r instanceof Record) {
            Record record = (Record) r;
            for (HSSFChartType type : HSSFChartType.values()) {
                if (type == HSSFChartType.Unknown) {
                    continue;
                }
                if (record.getSid() == type.getSid()) {
                    lastChart.type = type;
                    break;
                }
            }
        }
    }
    return charts.toArray(new HSSFChart[charts.size()]);
}
Also used : LegendRecord(org.apache.poi.hssf.record.chart.LegendRecord) SeriesTextRecord(org.apache.poi.hssf.record.chart.SeriesTextRecord) ArrayList(java.util.ArrayList) ChartRecord(org.apache.poi.hssf.record.chart.ChartRecord) SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord) ChartTitleFormatRecord(org.apache.poi.hssf.record.chart.ChartTitleFormatRecord) RecordBase(org.apache.poi.hssf.record.RecordBase) UnknownRecord(org.apache.poi.hssf.record.UnknownRecord) VCenterRecord(org.apache.poi.hssf.record.VCenterRecord) AxisUsedRecord(org.apache.poi.hssf.record.chart.AxisUsedRecord) LinkedDataRecord(org.apache.poi.hssf.record.chart.LinkedDataRecord) FooterRecord(org.apache.poi.hssf.record.FooterRecord) SCLRecord(org.apache.poi.hssf.record.SCLRecord) ChartRecord(org.apache.poi.hssf.record.chart.ChartRecord) ValueRangeRecord(org.apache.poi.hssf.record.chart.ValueRangeRecord) LegendRecord(org.apache.poi.hssf.record.chart.LegendRecord) SeriesTextRecord(org.apache.poi.hssf.record.chart.SeriesTextRecord) AxisParentRecord(org.apache.poi.hssf.record.chart.AxisParentRecord) DefaultDataLabelTextPropertiesRecord(org.apache.poi.hssf.record.chart.DefaultDataLabelTextPropertiesRecord) PrintSetupRecord(org.apache.poi.hssf.record.PrintSetupRecord) Record(org.apache.poi.hssf.record.Record) SeriesToChartGroupRecord(org.apache.poi.hssf.record.chart.SeriesToChartGroupRecord) EOFRecord(org.apache.poi.hssf.record.EOFRecord) AreaFormatRecord(org.apache.poi.hssf.record.chart.AreaFormatRecord) BeginRecord(org.apache.poi.hssf.record.chart.BeginRecord) HCenterRecord(org.apache.poi.hssf.record.HCenterRecord) EndRecord(org.apache.poi.hssf.record.chart.EndRecord) PlotGrowthRecord(org.apache.poi.hssf.record.chart.PlotGrowthRecord) UnitsRecord(org.apache.poi.hssf.record.chart.UnitsRecord) HeaderRecord(org.apache.poi.hssf.record.HeaderRecord) SeriesRecord(org.apache.poi.hssf.record.chart.SeriesRecord) BarRecord(org.apache.poi.hssf.record.chart.BarRecord) ChartFormatRecord(org.apache.poi.hssf.record.chart.ChartFormatRecord) AxisLineFormatRecord(org.apache.poi.hssf.record.chart.AxisLineFormatRecord) CategorySeriesAxisRecord(org.apache.poi.hssf.record.chart.CategorySeriesAxisRecord) ChartTitleFormatRecord(org.apache.poi.hssf.record.chart.ChartTitleFormatRecord) FrameRecord(org.apache.poi.hssf.record.chart.FrameRecord) PlotAreaRecord(org.apache.poi.hssf.record.chart.PlotAreaRecord) BOFRecord(org.apache.poi.hssf.record.BOFRecord) DataFormatRecord(org.apache.poi.hssf.record.chart.DataFormatRecord) ProtectRecord(org.apache.poi.hssf.record.ProtectRecord) TextRecord(org.apache.poi.hssf.record.chart.TextRecord) FontBasisRecord(org.apache.poi.hssf.record.chart.FontBasisRecord) AxisOptionsRecord(org.apache.poi.hssf.record.chart.AxisOptionsRecord) SeriesIndexRecord(org.apache.poi.hssf.record.chart.SeriesIndexRecord) SheetPropertiesRecord(org.apache.poi.hssf.record.chart.SheetPropertiesRecord) TickRecord(org.apache.poi.hssf.record.chart.TickRecord) AxisRecord(org.apache.poi.hssf.record.chart.AxisRecord) DimensionsRecord(org.apache.poi.hssf.record.DimensionsRecord) FontIndexRecord(org.apache.poi.hssf.record.chart.FontIndexRecord) LineFormatRecord(org.apache.poi.hssf.record.chart.LineFormatRecord) LinkedDataRecord(org.apache.poi.hssf.record.chart.LinkedDataRecord) ValueRangeRecord(org.apache.poi.hssf.record.chart.ValueRangeRecord)

Aggregations

SeriesRecord (org.apache.poi.hssf.record.chart.SeriesRecord)4 RecordBase (org.apache.poi.hssf.record.RecordBase)3 BeginRecord (org.apache.poi.hssf.record.chart.BeginRecord)3 ChartRecord (org.apache.poi.hssf.record.chart.ChartRecord)3 DataFormatRecord (org.apache.poi.hssf.record.chart.DataFormatRecord)3 EndRecord (org.apache.poi.hssf.record.chart.EndRecord)3 ArrayList (java.util.ArrayList)2 BOFRecord (org.apache.poi.hssf.record.BOFRecord)2 DimensionsRecord (org.apache.poi.hssf.record.DimensionsRecord)2 EOFRecord (org.apache.poi.hssf.record.EOFRecord)2 FooterRecord (org.apache.poi.hssf.record.FooterRecord)2 HCenterRecord (org.apache.poi.hssf.record.HCenterRecord)2 HeaderRecord (org.apache.poi.hssf.record.HeaderRecord)2 PrintSetupRecord (org.apache.poi.hssf.record.PrintSetupRecord)2 ProtectRecord (org.apache.poi.hssf.record.ProtectRecord)2 Record (org.apache.poi.hssf.record.Record)2 SCLRecord (org.apache.poi.hssf.record.SCLRecord)2 UnknownRecord (org.apache.poi.hssf.record.UnknownRecord)2 VCenterRecord (org.apache.poi.hssf.record.VCenterRecord)2 AreaFormatRecord (org.apache.poi.hssf.record.chart.AreaFormatRecord)2