Free Support Forum - aspose.com

Aspose.Cells for Java 空白のあるグラフから値を抽出した場合について

以前、提供していただいた以下の処理でグラフの値を抽出しています。

Workbook workbook = new Workbook(inputStream);
Worksheet worksheet = workbook.getWorksheets().get("Sheet1");
Chart c = worksheet.getCharts().get(0);

c.calculate();
SeriesCollection nSeries = c.getNSeries();
int seriesCount = nSeries.getCount();
for (int i = 0; i < seriesCount; i++) {
    Series seires = nSeries.get(i);
    ChartPointCollection points = seires.getPoints();
    int pointsCount = points.getCount();
    for (int j = 0; j < pointsCount; j++) {
        ChartPoint point = points.get(j);
        System.out.println(point.getYValue());
    
}

以下のサンプルデータ内にある、空行が混ざっているグラフから値を抽出した場合、
空である箇所からpoint.getYValue()で0が返ってきてしまいました。

実際に0が入っているのか空白であるのか区別がつかないので、
何か0と空白を区別できる方法を教えて戴きたいです。

使用バージョン:Aspose.Cells for Java 18.3.4
サンプルデータ:graph_blank.zip (11.7 KB)

以上、お手数おかけしますが、
ご確認の程よろしくお願いいたします。

@yudai_yamaguchi,

サンプルコードとテンプレートファイルをありがとう。

グラフ中の空のセルタイプの設定を評価することで簡単に対処できると思うので、自分ではゼロではなく、空の文字列を手動で取得/印刷することができます。 参考のため、コメント付きのサンプルコードセグメントを参照してください。
例えば
サンプルコード:

		Chart c = worksheet.getCharts().get(0);
		c.calculate();
		
		//Check whether empty cells are not plotted.
		//You may use/evaluate the Boolean variable (if true) to print empty string instead of zero (you are currently getting) by yourself in your code later on.
		boolean check = false; 
		if(c.getPlotEmptyCellsType()== PlotEmptyCellsType.NOT_PLOTTED)
		{
			check = true;			
		}
		System.out.println(check);
		
		SeriesCollection nSeries = c.getNSeries(); 

希望、これはちょっと助かります。

ご回答ありがとうございます。

下記のサンプルデータのように0と空白が混在している場合についてお伺いしたいことがあります。

グラフオブジェクトからのテキスト抽出で、
0の場合は0を出力し、空白の場合は空白を出力する方法は何かございますでしょうか。

使用バージョン:Aspose.Cells for Java 18.3.4
サンプルデータ:graph_zero_empty.zip (11.7 KB)

以上、お手数おかけしますが、
ご確認の程よろしくお願いいたします。

@yudai_yamaguchi,

新しいファイルをありがとう。

私は期待した結果を得るためにいくつかの回避策を試しましたが、あなたのタスクを達成するためのよりよい方法を見つけることができませんでした。 だからあなたのリクエストのID "CELLSJAVA-42577"のチケットをデータベースに記録しました。
CELLSJAVA - 42577 - 値を取得または抽出するには、指定したグラフでDataPoint.getYValue()メソッドを使用します(0は0、空白は空白)。

私たちはあなたの要件を徹底的に評価し、あなたのニーズをサポートするために(可能な場合)より良い方法を提供します。

更新があればここでお知らせします。

チケット作成のご対応ありがとうございました。
以上、よろしくお願いいたします。

@yudai_yamaguchi,

最新バージョン/修正ポイント: Aspose.Cells for Java v18.3.7 を試してください。

あなたの問題は修正されました。

値が空白の場合、メソッ"getYValueType()" ドは “3” "(CellValueType.IS_NULL)"を返します。参照するには、以下のサンプルコードを参照してください。
例えば
サンプルコード:

.........
chart.calculate();
                    for (int k = 0; k < chart.getNSeries().getCount(); k++)
                    {
                    	Series s = chart.getNSeries().get(k);
                    	System.out.println(s.getDisplayName());
                    	for(int m =0;m<s.getPoints().getCount();m++){
                    	System.out.println(s.getPoints().get(m).getYValueType());
                    	System.out.println(s.getPoints().get(m).getYValue());
                    	}
                    }

フィードバックをお聞かせください。

Aspose.Cells for Java v18.3.7 を使用して、
空白の判別ができることを確認しました。

問題を解決していただき、ありがとうございました。

@yudai_yamaguchi

提供された修正プログラムで問題が解決されたことを知っておくとよいでしょう。 あなたが他の問題に直面している場合は、私たちにお知らせください、私たちはあなたを助けてくれるでしょう。

The issues you have found earlier (filed as CELLSJAVA-42577) have been fixed in this update. This message was posted using BugNotificationTool from <a href=“https://#{request.env[“HTTPS_HOST”]}”>Downloads module by Amjad_Sahi

The issues you have found earlier (filed as CELLSJAVA-42577) have been fixed in Aspose.Cells for Java 18.4. Please also see the document for your reference:
https://docs.aspose.com/display/cellsjava/Installation