Apache的POI添加一个系列名称为线型图 [英] Apache POI add a Series name into LineChart

查看:175
本文介绍了Apache的POI添加一个系列名称为线型图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建的Excel文档中使用Apache POI的线型图。至于我已经成功实现的是下面的图片中:

I am creating a LineChart using Apache POI in Excel document. As far as I've managed to achieve is in the below image:

我写了使用的例子来自Apache的SVN的code,所以我目前的做法是这样的:

I wrote the code using examples from Apache's svn, so my current approach looks like this:

Drawing drawing = question.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 4, 8, 14, 18);

Chart chart = drawing.createChart(anchor);
ChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.TOP_RIGHT);

LineChartData data = chart.getChartDataFactory().createLineChartData();

ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setCrosses(AxisCrosses.AUTO_ZERO);
ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT);
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);

List<ReportQuestionModel> questionModels = groupModel.getQuestionModels();
for (ReportQuestionModel questionModel : questionModels) {

    List<ReportOptionModel> optionModels = questionModel.getOptionModels();
    for (ReportOptionModel optionModel : optionModels) {
        rowNum++;

        XSSFRow optionRow = question.createRow(rowNum);

        XSSFCell optionsCell = optionRow.createCell(0);
        optionsCell.setCellValue(optionModel.getAnswerText());

        long count = optionModel.getCount();
        totalResponses += count;

        XSSFCell optionsCountCell = optionRow.createCell(1);
        optionsCountCell.setCellValue(count);

        XSSFCell optionsPercentageCell = optionRow.createCell(2);
        optionsPercentageCell.setCellValue(optionModel.getPercentage());
    }
}

ChartDataSource<Number> xs = DataSources.fromNumericCellRange(question, new CellRangeAddress(8, 8, 0, 1));
for (int i = 9; i <= rowNum; i ++) {
    ChartDataSource<Number> ys = DataSources.fromNumericCellRange(question, new CellRangeAddress(i, i, 0, 1));
    data.addSerie(xs, ys);
}
chart.plot(data, bottomAxis, leftAxis);

我找不到是如何得到默认的系列1,系列2,...,N系列的名称是从取从列我的价值观,在这种情况下,从答案选项。而且似乎没有为当前API中的任何方法如何指定系列的名称。

What I can't find is how to get default "Series 1", "Series 2", ..., "Series n" names to be taken from as my values from the columns, in this case from: "Answer options". And there doesn't seem to be any methods in the current API how to specify names of the series.

谁能帮我这个好吗?

推荐答案

这是pretty简单明了,只是,而不是使用:

It was pretty straighforward, just instead of using:

data.addSerie(xs, ys);

我不得不使用

LineChartSerie chartSerie = data.addSerie(xs, ys);
chartSerie.setTitle("My Title");

没看,使用 data.addSerie(XS,YS)的API; 返回一个 LineChartSerie 对象上,我可以设置一个标题。

Didn't look at the API that using data.addSerie(xs, ys); returns a single LineChartSerie object onto which I can set a title.

这篇关于Apache的POI添加一个系列名称为线型图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆