function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
KeronKeron 

Visualforceにレポート実行結果画面のグラフ部分を貼りつけたい

表題のとおり、Visualforceにレポート実行結果画面のグラフ部分だけを貼りつけたい

と思っているのですが、実現可能でしょうか?

どなたかご存じの方がいらっしゃいましたら教えて下さい。

 

Best Answer chosen by Admin (Salesforce Developers) 
Taiki YoshikawaTaiki Yoshikawa

レポート実行結果のグラフではないのですが、<apex:chart>というタグでグラフの

表示が可能みたいです。

 

この方法はいかがでしょうか。

 

■Apexクラス・サンプル

public class ChartController {
    // Return a list of data points for a chart 
    
    public List<Data> getData() {
        return ChartController.getChartData();
    }
    
    // Make the chart data available via JavaScript remoting 
    
    @RemoteAction
    public static List<Data> getRemoteData() {
        return ChartController.getChartData();
    }

    // The actual chart data; needs to be static to be 
    
    // called by a @RemoteAction method 
    
    public static List<Data> getChartData() {
        List<Data> data = new List<Data>();
        data.add(new Data('Jan', 30, 90, 55));
        data.add(new Data('Feb', 44, 15, 65));
        data.add(new Data('Mar', 25, 32, 75));
        data.add(new Data('Apr', 74, 28, 85));
        data.add(new Data('May', 65, 51, 95));
        data.add(new Data('Jun', 33, 45, 99));
        data.add(new Data('Jul', 92, 82, 30));
        data.add(new Data('Aug', 87, 73, 45));
        data.add(new Data('Sep', 34, 65, 55));
        data.add(new Data('Oct', 78, 66, 56));
        data.add(new Data('Nov', 80, 67, 53));
        data.add(new Data('Dec', 17, 70, 70));
        return data;
    }
    
    // Wrapper class 
    
    public class Data {
        public String name { get; set; }
        public Integer data1 { get; set; }
        public Integer data2 { get; set; }
        public Integer data3 { get; set; }
        public Data(String name, Integer data1, Integer data2, Integer data3) {
            this.name = name;
            this.data1 = data1;
            this.data2 = data2;
            this.data3 = data3;
        }
    }
}

 

■Apexページ・サンプル①:円グラフ

<apex:page controller="ChartController">
    <apex:chart data="{!data}" height="300" width="400" background="#F5F5F5">
        <apex:legend position="left"/>
        <apex:pieSeries labelField="name" dataField="data1"  colorSet="#37241E,#94B3C8,#4D4E24,#BD8025,#816A4A,#F0E68C"/>
    </apex:chart>
</apex:page>

 

■Apexページ・サンプル②:棒グラフ

<apex:page controller="ChartController">
    <apex:chart data="{!data}" height="400" width="500">
    <apex:legend position="left"/>
    <apex:axis type="Numeric" position="left" title="Closed Won" grid="true"  fields="data1,data2,data3" dashSize="2">
        <apex:chartLabel />
    </apex:axis>
    <apex:axis type="Category" position="bottom" fields="name" title="Stacked Bars">
        <apex:chartLabel rotate="315"/>
    </apex:axis>
    <apex:barSeries orientation="vertical" axis="left" stacked="true"  xField="name" yField="data1,data2,data3" title="MacDonald,Promas,Worle"/>
</apex:chart>
</apex:page>

 

 

All Answers

Taiki YoshikawaTaiki Yoshikawa

レポート実行結果のグラフではないのですが、<apex:chart>というタグでグラフの

表示が可能みたいです。

 

この方法はいかがでしょうか。

 

■Apexクラス・サンプル

public class ChartController {
    // Return a list of data points for a chart 
    
    public List<Data> getData() {
        return ChartController.getChartData();
    }
    
    // Make the chart data available via JavaScript remoting 
    
    @RemoteAction
    public static List<Data> getRemoteData() {
        return ChartController.getChartData();
    }

    // The actual chart data; needs to be static to be 
    
    // called by a @RemoteAction method 
    
    public static List<Data> getChartData() {
        List<Data> data = new List<Data>();
        data.add(new Data('Jan', 30, 90, 55));
        data.add(new Data('Feb', 44, 15, 65));
        data.add(new Data('Mar', 25, 32, 75));
        data.add(new Data('Apr', 74, 28, 85));
        data.add(new Data('May', 65, 51, 95));
        data.add(new Data('Jun', 33, 45, 99));
        data.add(new Data('Jul', 92, 82, 30));
        data.add(new Data('Aug', 87, 73, 45));
        data.add(new Data('Sep', 34, 65, 55));
        data.add(new Data('Oct', 78, 66, 56));
        data.add(new Data('Nov', 80, 67, 53));
        data.add(new Data('Dec', 17, 70, 70));
        return data;
    }
    
    // Wrapper class 
    
    public class Data {
        public String name { get; set; }
        public Integer data1 { get; set; }
        public Integer data2 { get; set; }
        public Integer data3 { get; set; }
        public Data(String name, Integer data1, Integer data2, Integer data3) {
            this.name = name;
            this.data1 = data1;
            this.data2 = data2;
            this.data3 = data3;
        }
    }
}

 

■Apexページ・サンプル①:円グラフ

<apex:page controller="ChartController">
    <apex:chart data="{!data}" height="300" width="400" background="#F5F5F5">
        <apex:legend position="left"/>
        <apex:pieSeries labelField="name" dataField="data1"  colorSet="#37241E,#94B3C8,#4D4E24,#BD8025,#816A4A,#F0E68C"/>
    </apex:chart>
</apex:page>

 

■Apexページ・サンプル②:棒グラフ

<apex:page controller="ChartController">
    <apex:chart data="{!data}" height="400" width="500">
    <apex:legend position="left"/>
    <apex:axis type="Numeric" position="left" title="Closed Won" grid="true"  fields="data1,data2,data3" dashSize="2">
        <apex:chartLabel />
    </apex:axis>
    <apex:axis type="Category" position="bottom" fields="name" title="Stacked Bars">
        <apex:chartLabel rotate="315"/>
    </apex:axis>
    <apex:barSeries orientation="vertical" axis="left" stacked="true"  xField="name" yField="data1,data2,data3" title="MacDonald,Promas,Worle"/>
</apex:chart>
</apex:page>

 

 

This was selected as the best answer
KeronKeron

Taikiさん、ご回答ありがとうございます。

 

この方法は当然のことながら、

グラフに自分でデータを与えて作成する以外にはないですか?

例えば、レポートのIdを渡せばいいとか…。

要はレポートで集計する処理を自作Apexで実装し、その値をVisualforce側で

展開し、値をaddしつつグラフ化するという方法という認識で合っていますでしょうか?

 

 

Taiki YoshikawaTaiki Yoshikawa

レポートの情報をそのまま使用する方法は見つかりませんでした...。

 

集計処理をApexで実装して、グラフ化するという方法になるかなと思っています。

Seitaro SakodaSeitaro Sakoda
いまなら(Spring '14) analyticsタグで行けます!
http://releasenotes.docs.salesforce.com/en-us/spring14/release-notes/rn_analytics_vf_charts.htm