0

グラフの x、y、幅、高さ、タイトルなどの情報を取得したい。これが機能するHSSFChartの私のバージョンです(ゼロ以外の値を返します):

HSSFChart chart
title = chart.getChartTitle();
x = chart.getChartX();
y = chart.getChartY();
width = chart.getChartWidth();
height = chart.getChartHeight();

問題は、XSSFChart から同じ情報または他の情報を取得できないことです。

XSSFDrawing drawing = sheet.createDrawingPatriarch();
List<XSSFChart> chartsList = drawing.getCharts();
for (XSSFChart chart : chartsList){

#ctChart

CTChart ctChart = chart.getCTChart();
CTPlotArea plotArea = ctChart.getPlotArea();
title = ctChart.getTitle.toString();

int size = plotArea.getScatterChartList().size();
    for (int j = 0; j < size; j++){
    List<CTScatterSer> seriesList = plotArea.getScatterChartList().get(j).getSerList();
    for (int i = 0; i < seriesList.size(); i++){
        CTScatterSer ser = seriesList.get(i);
       XmlObject serieX = ser.getXVal();
       XmlObject serieY = ser.getYVal();
       System.out.println("x: " + serieX.xmlText() + " y: " + serieY.xmlText());
    }
}
if (plotArea.getLayout() != null)
            if (plotArea.getLayout().getManualLayout() != null) 
                System.out.println("x: " + plotArea.getLayout().getManualLayout().getX() + " y: " + 
                        plotArea.getLayout().getManualLayout().getY());

#chart

chart.getManualLayout().getX();  // returns 0
chart.getManualLayout().getY();  // returns 0
chart.getManualLayout().getHeightRatio();  // returns 0.0
chart.getManualLayout().getWidthRatio();  // returns 0.0

チャートや系列が多くても何も出力されません。

4

1 に答える 1

0

私は同様の問題に苦しんでおり、あなたのコードでも立ち往生しています..

List<org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart> chartList=plotArea.getLineChartList();
int size = chartList.size();

私は折れ線グラフなので、それに応じて変更しましたが、次のランタイム エラーがあります。

Exception in thread "main" java.lang.NoClassDefFoundError:    org/openxmlformats/schemas/drawingml/x2006/chart/impl/CTPlotAreaImpl$1LineChartList
at org.openxmlformats.schemas.drawingml.x2006.chart.impl.CTPlotAreaImpl.getLineChartList(Unknown Source)
at ....

poi-openxml-schemas-3.13-20150929.jar私のファイルに何かが欠けているようです。とにかく、関連する部分をコメントアウトし、ManualLayout のクエリの結果として NULL を取得しました。これはひどいです。

Chart は XML ファイル (XLSX のように) ではレンダリングされませんが、Office (または OpenOffice) でファイルを開いた場所でのみレンダリングされると強く感じています。 GUI。この場合、PUNO を使用してこのソリューションを調査できると思います。

http://www.wstech2.net/?do=0a,01,05

これは、Php と、UNO インターフェイスを公開する OpenOffice の実行中のインスタンスとの間の橋渡しを伴います。私はこれを見てきましたが、インストールが非常に複雑に思えましたが、おそらくこれが唯一の方法です.

于 2015-09-29T14:16:11.993 に答える